nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
アプリケーション開発において、文字列の編集を行う事が多々あります。 java.lang.StringBuilderを使った文字列編集プログラムは、編集後に出来上がる文字列を直感的に捉える事が困難で、可読性が高いものではありません。
- String toName = "にんばす太郎";
- String date = new java.text.SimpleDateFormat("yyyy/MhM/dd").format(new java.util.Date());
- String[] items = new String[]{"商品1", "商品2"};
- String fromName = "にんばす花子";
- StringBuilder buf = new StringBuilder();
- buf.append(toName).append(" 様\n");
- buf.append(" ").append(date).append(" \n");
- buf.append(" お買い上げ商品").append(" \n");
- for(String item : items){
- buf.append(" ・").append(item).append(" \n");
- }
- buf.append("\n ").append(fromName);
- return buf.toString();
$toName様 $date お買い上げ商品 #for($item in items) ・$item #end $fromName
テンプレートとデータを渡して文字列編集する機能を抽象化したのが、TemplateEngineです。
関連するパッケージは、以下です。
アプリケーション向けインタフェースTemplateEngineを使った簡単なアプリケーションのサンプルを示します。
- import java.util.Map;
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.template.TemplateEngine;
- // Interpreterを取得
- TemplateEngine templateEngine = (TemplateEngine)ServiceManagerFactory.getServiceObject("TemplateEngine");
- // テンプレートを設定する
- // テンプレート言語は、実装に依存する。下記は、Velocityの場合
- // 通常、サービス定義で設定する
- templateEngine.setTemplate(
- "template1",
- "$toName様\n"
- + " $date\n"
- + " お買い上げ商品\n"
- + "#for($item in items)\n"
- + " ・$item\n"
- + "#end\n"
- + "\n"
- + " $fromName\n"
- );
- // データを作成する
- Map map = new java.util.HashMap();
- map.put("toName", "にんばす太郎");
- map.put("date", new java.text.SimpleDateFormat("yyyy/MhM/dd").format(new java.util.Date()));;
- map.put("items", new String[]{"商品1", "商品2"});
- map.put("fromName", "にんばす花子");
- // データを渡して編集する
- String result = templateEngine.transform("template1", map);
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.template.VelocityTemplateEngineService | Apache Velocityを使ったテンプレートエンジン |