テンプレートエンジンとしてVelocityを使っているのだけど、androidでの使い方がよくわからなかった。というのもandroidではファイルの読み込みがassetmanagerを経由することが多く、パスから読み込むVelocityでそのまま読み込めるのかが気になっていた。
アンドロイド用のテンプレートエンジンでも、assetsからファイルを読み込むタイプのものはあるようで、それを使えばいいのだろうけど。今ある資産を流用したい場合にはちょっと面倒である。
テンプレートファイルと、置き換えるテキストはマージすることで文章ができあがるが。
Velocity.mergeTemplate()
この場合ファイルを指定する必要がある。ファイルじゃなくて、Stringをそのまま代入する場合は、Velocity.evaluateを使うようだ。これはandroidで動いた。一旦assetsからstringに変換してからVelocity.evaluateでマージする方法なら行けそう。
InputStream TEXT_CSS = mngr.open(templatePath+OPS_PATH+CSS_PATH+TEXT_CSS_VM);
BufferedReader br = new BufferedReader( new InputStreamReader(TEXT_CSS));
StringBuilder sb = new StringBuilder();
String line;
while *1 != null) {
sb.append(line);
}
System.out.println(sb.toString());
br.close();
StringWriter writers=new StringWriter();
Velocity.evaluate(velocityContext,bw,"",sb.toString());
*1:line = br.readLine(