Hello World(mainアプリケーション)
Hello World(mainアプリケーション)のソースを実行結果を以下に示す。
Hello.java
package woolpack.samples.hellomain;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Arrays;
import java.util.HashMap;

import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import woolpack.dom.DomContext;
import woolpack.dom.DomExpression;
import woolpack.dom.Serial;
import woolpack.dom.XmlToNode;
import woolpack.el.PathEL;
import woolpack.html.AutoUpdate;
import woolpack.utils.MapBuilder;
import woolpack.utils.StringReaderFactory;
import woolpack.utils.UtilsConstants;

/**
* Woolpack の Hello World アプリケーション。
* @author nakamura
*
*/
public class Hello {
  public static void main(final String[] args) throws IOException {
    // Expression 役を順に実行する定義。
    final DomExpression expression = new Serial(
        // 固定のHTMLの雛型を読み込む定義。
        new XmlToNode(new StringReaderFactory(
            "<HTML><BODY><FORM><TABLE><TR id=\"list0\">"+
            "<TD><TEXTAREA name=\"textarea0\" >value0</TEXTAREA></TD>"+
            "<TD><DIV id=\"div0\" >value0</DIV></TD>"+
            "<TD><SPAN id=\"span0\" >value0</SPAN></TD>"+
            "<TD><INPUT name=\"input0\" value=\"value0\" /></TD>"+
            "<TD><SPAN id=\"span1\" >spanvalue1</SPAN></TD>"+
            "</TR></TABLE></FORM></BODY></HTML>")),
        // DomContext#getLocal()#get("list0")の内容を HTML 雛型に自動設定する定義。
        // ゼロ番目の引数は自動的に画面に値を設定するための、更新対象の属性名の一覧。
        new AutoUpdate(Arrays.asList("name", "id"), new PathEL("local.list0")));

    // Context 役。
    final DomContext context = new DomContext();
    
    // Context 役に対し、HTML に流し込む値を設定する。
    context.getLocal().put("list0",
        MapBuilder.get(new HashMap<String,Object>())
        .put("list0", Arrays.asList(
            MapBuilder.get(new HashMap<String,Object>())
            .put("textarea0", "textareavalue0")
            .put("div0", "divvalue0")
            .put("span0", "spanvalue0")
            .put("input0", "inputvalue0")
            .get(),
            MapBuilder.get(new HashMap<String,Object>())
            .put("textarea0", "textareavalue1")
            .put("div0", "divvalue1")
            .put("span0", "spanvalue1")
            .put("input0", "inputvalue1")
            .get()))
        .get());

    // Context 役を Expression 役に作用させる。
    expression.interpret(context);
    
    // 結果を出力する。
    Writer w = new OutputStreamWriter(System.out);
    try{
      UtilsConstants.TRANSFORMER_FACTORY.newInstance().transform(
          new DOMSource(context.getNode()),
          new StreamResult(w)
      );
    }finally{
      w.close();
    }
  }
}
実行結果
<HTML>
<BODY>
<FORM>
<TABLE>
<TR id="list0">
<TD><TEXTAREA name="textarea0">textareavalue0</TEXTAREA></TD><TD>
<DIV id="div0">divvalue0</DIV>
</TD><TD><SPAN id="span0">spanvalue0</SPAN></TD><TD><INPUT name="input0" value="inputvalue0"></TD><TD><SPAN id="span1">spanvalue1</SPAN></TD>
</TR>
<TR id="list0">
<TD><TEXTAREA name="textarea0">textareavalue1</TEXTAREA></TD><TD>
<DIV id="div0">divvalue1</DIV>
</TD><TD><SPAN id="span0">spanvalue1</SPAN></TD><TD><INPUT name="input0" value="inputvalue1"></TD><TD><SPAN id="span1">spanvalue1</SPAN></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
トップに戻る
Copyright (C) 2006 Takahiro Nakamura. All rights reserved.