2016-05-18 16 views
1

報告書を記入する前に英語の数字をベンガル語の数字に変換しようとしています。番号をローカル(UTF8)に変換するJasperReports&MySQLのベンガル語

SELECT brand.id,brand.brand,model.model FROM brand INNER JOIN model ON brand.id=model.id AND model.id=$P{ID} 

を例えばmodel.model列が番号322を返すならば、それは最初のベンガル語版(3২২)に番号を変換する必要がありますし、それはこのようなreport.Somethingを記入します:私は、MySQLから取得していますデータ:

ワン| 2つ| 3つの 1 | ২| 3

ここでは、ベンガル語で0-9である:

0 1২3 4 5 6 7 8 9

Iは次のように約方法を交換考えていた:

char[] en ={'0','1','2','3','4','5','6','7','8','9'}; 
char[] bn ={'০','১','২','৩','৪','৫','৬','৭','৮','৯'}; 
en.replace(bn) 

をおそらくそれは動作しません!

どこから始めればいいのですか?しかし、ここで私の現在のアプリケーションコードです:

Javaコード:

@FXML 
public TextField one; 

public void click(ActionEvent event) throws JRException, SQLException, ClassNotFoundException, IllegalAccessException, UnsupportedLookAndFeelException, InstantiationException { 
    String reportSrcFile = "/home/sample/learn.jrxml"; 

    JasperReport jasperReport1 = JasperCompileManager.compileReport(reportSrcFile); 

    Connection conn = SqliConnect.getMySQLConnection(); 
    int two = Integer.parseInt(one.getText()); 
    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("ID",one.getText()); 

    JasperPrint print = JasperFillManager.fillReport(jasperReport1, 
      parameters, conn); 

    JasperViewer jv = new JasperViewer(print); 
    jv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jv.setTitle("Test Report"); 

    jv.setVisible(true); 
} 

レポートのテンプレート:

<subDataset name="Dataset1" uuid="2691431f-5c6f-403f-94cc-829c17ef1636"> 
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Learn"/> 
    <parameter name="ID" class="java.lang.Integer"> 
     <parameterDescription><![CDATA[Get ID]]></parameterDescription> 
     <defaultValueExpression><![CDATA[$P{ID}]]></defaultValueExpression> 
    </parameter> 
    <queryString> 
     <![CDATA[SELECT brand.id,brand.brand,model.model FROM brand INNER JOIN model ON brand.id=model.id WHERE model.id=$P{ID}]]> 
    </queryString> 
    <field name="id" class="java.lang.Integer"/> 
    <field name="brand" class="java.lang.String"/> 
    <field name="model" class="java.lang.String"/> 
</subDataset> 
<parameter name="ID" class="java.lang.Integer" isForPrompting="false"> 
    <parameterDescription><![CDATA[]]></parameterDescription> 
    <defaultValueExpression><![CDATA[$P{ID}]]></defaultValueExpression> 
</parameter> 
<queryString> 
    <![CDATA[SELECT brand.id,brand.brand,model.model FROM brand INNER JOIN model ON brand.id=model.id WHERE model.id=$P{ID}]]> 
</queryString> 
<field name="id" class="java.lang.Integer"/> 
<field name="brand" class="java.lang.String"/> 
<field name="model" class="java.lang.String"/> 
<title> 
    <band height="79" splitType="Stretch"> 
     <textField> 
      <reportElement x="11" y="16" width="100" height="30" uuid="d1485589-a4cf-4ab9-b896-0ef480beced4"/> 
      <textFieldExpression><![CDATA[$P{ID}]]></textFieldExpression> 
     </textField> 
    </band> 
</title> 
<detail> 
    <band height="250" splitType="Stretch"> 
     <componentElement> 
      <reportElement x="0" y="0" width="555" height="250" uuid="e199bd58-8408-4711-85d5-ba76db9691b7"> 
       <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/> 
       <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/> 
       <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/> 
       <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/> 
       <property name="com.jaspersoft.studio.components.autoresize.proportional" value="true"/> 
      </reportElement> 
      <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
       <datasetRun subDataset="Dataset1" uuid="fbb4dafa-4284-4118-9d2b-46d88c63a31b"> 
        <datasetParameter name="ID"> 
         <datasetParameterExpression><![CDATA[$P{ID}]]></datasetParameterExpression> 
        </datasetParameter> 
        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       </datasetRun> 
       <jr:column width="185" uuid="9a6b765f-b6d4-4753-909e-dd091b296654"> 
        <jr:columnHeader style="Table_CH" height="30"> 
         <staticText> 
          <reportElement x="0" y="0" width="185" height="30" uuid="7e644d1c-a893-49df-a18a-bf788eb6b92a"/> 
          <text><![CDATA[id]]></text> 
         </staticText> 
        </jr:columnHeader> 
        <jr:columnFooter style="Table_CH" height="30"/> 
        <jr:detailCell style="Table_TD" height="30"> 
         <textField> 
          <reportElement x="0" y="0" width="185" height="30" uuid="848a53bf-2b2e-46df-a7aa-26fc0b897c85"/> 
          <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression> 
         </textField> 
        </jr:detailCell> 
       </jr:column> 
       <jr:column width="185" uuid="514580a5-f09c-43d1-952e-d4769c2e4686"> 
        <jr:columnHeader style="Table_CH" height="30"> 
         <staticText> 
          <reportElement x="0" y="0" width="185" height="30" uuid="c01152e9-1547-472b-946e-92011c02bc94"/> 
          <text><![CDATA[brand]]></text> 
         </staticText> 
        </jr:columnHeader> 
        <jr:columnFooter style="Table_CH" height="30"/> 
        <jr:detailCell style="Table_TD" height="30"> 
         <textField> 
          <reportElement x="0" y="0" width="185" height="30" uuid="98c84ae5-b289-459a-b34b-a9becf43b9ce"/> 
          <textFieldExpression><![CDATA[$F{brand}]]></textFieldExpression> 
         </textField> 
        </jr:detailCell> 
       </jr:column> 
       <jr:column width="185" uuid="5c1d2026-45bc-4ec8-8be4-c444e47d093d"> 
        <jr:columnHeader style="Table_CH" height="30"> 
         <staticText> 
          <reportElement x="0" y="0" width="185" height="30" uuid="81f76de4-a68b-41c3-a2e8-bbaa625b71be"/> 
          <text><![CDATA[model]]></text> 
         </staticText> 
        </jr:columnHeader> 
        <jr:columnFooter style="Table_CH" height="30"/> 
        <jr:detailCell style="Table_TD" height="30"> 
         <textField> 
          <reportElement x="0" y="0" width="185" height="30" uuid="d69c690e-05a4-453a-93ea-9061523975ad"/> 
          <textFieldExpression><![CDATA[$F{model}]]></textFieldExpression> 
         </textField> 
        </jr:detailCell> 
       </jr:column> 
      </jr:table> 
     </componentElement> 
    </band> 
</detail> 

はそれを行うための正しい方法は何ですか?

+1

[アラビア語に英語の数字を変換するための最良の方法]の可能な重複(http://stackoverflow.com/questions/11469058 /最善の方法から英語に変換する - 数字からアラビア語)。 Javaコードを作成した後、レポート –

答えて

1

ます。また、Javaコードに置換文字列を作成し、パラメータマップでそれを使用することができます。

String replacedOne = one.getText().replaceAll("0","০").replaceAll("1","১").replaceAll("2","২").replaceAll("3","৩").replaceAll("4","৪").replaceAll("5","৫").replaceAll("6","৬").replaceAll("7","৭").replaceAll("8","৮").replaceAll("9","৯"); 
    parameters.put("replacedID",replacedOne); 

以上、あなたは変更する必要はありませんし、あなたのjrxmlファイルで直接交換を行うことができます代わりに$ F {}モデルのこの(非常に長い)の式を使用して、Javaファイル、:

$F{model}.replaceAll("0","০").replaceAll("1","১").replaceAll("2","২").replaceAll("3","৩").replaceAll("4","৪").replaceAll("5","৫").replaceAll("6","৬").replaceAll("7","৭").replaceAll("8","৮").replaceAll("9","৯"); 
+0

に[scriptlet](http://jasperreports.sourceforge.net/sample.reference/scriptlet/index.html#scriptlet)を使用できます。モデル列がInteger型の場合はどうしますか? – kodr

+0

String.valueOf($ F {model})。replaceAll( "0"、 "0").....は選択肢になります – shertage

+0

$ F {model}がNULLでないことを確認してください – shertage