xlsgen / チュートリアル / MDB XML SchemacからJavaBeanのコードを作成する


[ xlsgen ]

ソース

table.vm

$_sys.load("wu", "org.apache.commons.lang.WordUtils")
$_xml.build("doc", "scott_tiger.xml")

#macro(jtype $dbtype)
#if($dbtype == "TEXT")
#set($jtype = "String")
#elseif($dbtype == "INTEGER")
#set($jtype = "Integer")
#elseif($dbtype == "DECIMAL")
#set($jtype = "java.math.BigDecimal")
#elseif($dbtype == "TIMESTAMP")
#set($jtype = "java.util.Date")
#end
#end

#set($root = $doc.rootElement)
#foreach($child in $root.children)
#if($child.name == "table")
#set($tname = $child.getChildText("name"))
#set($clsname = $wu.capitalizeFully($tname))
#set($cols = ${child.getChild("declaration").children})
public class $clsname {

#foreach($col in $cols)
#set($name = $col.getChildText("name"))
#set($prop = $name.toLowerCase())
#set($cprop = $wu.capitalizeFully($prop))
#set($dbtype = $col.getChildText("type"))
#jtype($dbtype)
	/////////////////////////////////////////////////////////////////
	// $name

	private $jtype $prop;

	/**
	 * $nameを取得する。
	 *
	 * @return $name
	 */
	public $jtype get${cprop}() {
		return $prop;
	}

	/**
	 * $nameをセットする。
	 *
	 * @param $prop $name
	 */
	public void set${cprop}($jtype $prop) {
		this.$prop = $prop;
	}

#end
}
$_wrt.out("${clsname}.java")
#end
#end

scott_tiger.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<database>
  <name>myoracle</name>
  <create>1</create>
  <table>
    <name>BONUS</name>
    <declaration>
      <field>
        <name>ENAME</name>
        <type>TEXT</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>JOB</name>
        <type>TEXT</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>SAL</name>
        <type>INTEGER</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>COMM</name>
        <type>INTEGER</type>
        <default></default>
        <notnull>0</notnull>
      </field>
    </declaration>
    <initialization>
    </initialization>
  </table>
  <table>
    <name>DEPT</name>
    <declaration>
      <field>
        <name>DEPTNO</name>
        <type>DECIMAL</type>
        <default></default>
        <notnull>1</notnull>
      </field>
      <field>
        <name>DNAME</name>
        <type>TEXT</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>LOC</name>
        <type>TEXT</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <index>
        <name>PRIMARY</name>
        <unique>1</unique>
        <field>
          <name>DEPTNO</name>
        </field>
      </index>
    </declaration>
    <initialization>
    </initialization>
  </table>
  <table>
    <name>EMP</name>
    <declaration>
      <field>
        <name>EMPNO</name>
        <type>DECIMAL</type>
        <default></default>
        <notnull>1</notnull>
      </field>
      <field>
        <name>ENAME</name>
        <type>TEXT</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>JOB</name>
        <type>TEXT</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>MGR</name>
        <type>DECIMAL</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>HIREDATE</name>
        <type>TIMESTAMP</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>SAL</name>
        <type>DECIMAL</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>COMM</name>
        <type>DECIMAL</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>DEPTNO</name>
        <type>DECIMAL</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <index>
        <name>PRIMARY</name>
        <unique>1</unique>
        <field>
          <name>EMPNO</name>
        </field>
      </index>
    </declaration>
    <initialization>
    </initialization>
  </table>
  <table>
    <name>SALGRADE</name>
    <declaration>
      <field>
        <name>GRADE</name>
        <type>INTEGER</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>LOSAL</name>
        <type>INTEGER</type>
        <default></default>
        <notnull>0</notnull>
      </field>
      <field>
        <name>HISAL</name>
        <type>INTEGER</type>
        <default></default>
        <notnull>0</notnull>
      </field>
    </declaration>
    <initialization>
    </initialization>
  </table>
</database>

生成されたJavaBean?のコード

Bonus.java

public class Bonus {

	/////////////////////////////////////////////////////////////////
	// ENAME

	private String ename;

	/**
	 * ENAMEを取得する。
	 *
	 * @return ENAME
	 */
	public String getEname() {
		return ename;
	}

	/**
	 * ENAMEをセットする。
	 *
	 * @param ename ENAME
	 */
	public void setEname(String ename) {
		this.ename = ename;
	}

	/////////////////////////////////////////////////////////////////
	// JOB

	private String job;

	/**
	 * JOBを取得する。
	 *
	 * @return JOB
	 */
	public String getJob() {
		return job;
	}

	/**
	 * JOBをセットする。
	 *
	 * @param job JOB
	 */
	public void setJob(String job) {
		this.job = job;
	}

	/////////////////////////////////////////////////////////////////
	// SAL

	private Integer sal;

	/**
	 * SALを取得する。
	 *
	 * @return SAL
	 */
	public Integer getSal() {
		return sal;
	}

	/**
	 * SALをセットする。
	 *
	 * @param sal SAL
	 */
	public void setSal(Integer sal) {
		this.sal = sal;
	}

	/////////////////////////////////////////////////////////////////
	// COMM

	private Integer comm;

	/**
	 * COMMを取得する。
	 *
	 * @return COMM
	 */
	public Integer getComm() {
		return comm;
	}

	/**
	 * COMMをセットする。
	 *
	 * @param comm COMM
	 */
	public void setComm(Integer comm) {
		this.comm = comm;
	}

}

Dept.java

public class Dept {

	/////////////////////////////////////////////////////////////////
	// DEPTNO

	private java.math.BigDecimal deptno;

	/**
	 * DEPTNOを取得する。
	 *
	 * @return DEPTNO
	 */
	public java.math.BigDecimal getDeptno() {
		return deptno;
	}

	/**
	 * DEPTNOをセットする。
	 *
	 * @param deptno DEPTNO
	 */
	public void setDeptno(java.math.BigDecimal deptno) {
		this.deptno = deptno;
	}

	/////////////////////////////////////////////////////////////////
	// DNAME

	private String dname;

	/**
	 * DNAMEを取得する。
	 *
	 * @return DNAME
	 */
	public String getDname() {
		return dname;
	}

	/**
	 * DNAMEをセットする。
	 *
	 * @param dname DNAME
	 */
	public void setDname(String dname) {
		this.dname = dname;
	}

	/////////////////////////////////////////////////////////////////
	// LOC

	private String loc;

	/**
	 * LOCを取得する。
	 *
	 * @return LOC
	 */
	public String getLoc() {
		return loc;
	}

	/**
	 * LOCをセットする。
	 *
	 * @param loc LOC
	 */
	public void setLoc(String loc) {
		this.loc = loc;
	}

	/////////////////////////////////////////////////////////////////
	// PRIMARY

	private String primary;

	/**
	 * PRIMARYを取得する。
	 *
	 * @return PRIMARY
	 */
	public String getPrimary() {
		return primary;
	}

	/**
	 * PRIMARYをセットする。
	 *
	 * @param primary PRIMARY
	 */
	public void setPrimary(String primary) {
		this.primary = primary;
	}

}

Emp.java

public class Emp {

	/////////////////////////////////////////////////////////////////
	// EMPNO

	private java.math.BigDecimal empno;

	/**
	 * EMPNOを取得する。
	 *
	 * @return EMPNO
	 */
	public java.math.BigDecimal getEmpno() {
		return empno;
	}

	/**
	 * EMPNOをセットする。
	 *
	 * @param empno EMPNO
	 */
	public void setEmpno(java.math.BigDecimal empno) {
		this.empno = empno;
	}

	/////////////////////////////////////////////////////////////////
	// ENAME

	private String ename;

	/**
	 * ENAMEを取得する。
	 *
	 * @return ENAME
	 */
	public String getEname() {
		return ename;
	}

	/**
	 * ENAMEをセットする。
	 *
	 * @param ename ENAME
	 */
	public void setEname(String ename) {
		this.ename = ename;
	}

	/////////////////////////////////////////////////////////////////
	// JOB

	private String job;

	/**
	 * JOBを取得する。
	 *
	 * @return JOB
	 */
	public String getJob() {
		return job;
	}

	/**
	 * JOBをセットする。
	 *
	 * @param job JOB
	 */
	public void setJob(String job) {
		this.job = job;
	}

	/////////////////////////////////////////////////////////////////
	// MGR

	private java.math.BigDecimal mgr;

	/**
	 * MGRを取得する。
	 *
	 * @return MGR
	 */
	public java.math.BigDecimal getMgr() {
		return mgr;
	}

	/**
	 * MGRをセットする。
	 *
	 * @param mgr MGR
	 */
	public void setMgr(java.math.BigDecimal mgr) {
		this.mgr = mgr;
	}

	/////////////////////////////////////////////////////////////////
	// HIREDATE

	private java.util.Date hiredate;

	/**
	 * HIREDATEを取得する。
	 *
	 * @return HIREDATE
	 */
	public java.util.Date getHiredate() {
		return hiredate;
	}

	/**
	 * HIREDATEをセットする。
	 *
	 * @param hiredate HIREDATE
	 */
	public void setHiredate(java.util.Date hiredate) {
		this.hiredate = hiredate;
	}

	/////////////////////////////////////////////////////////////////
	// SAL

	private java.math.BigDecimal sal;

	/**
	 * SALを取得する。
	 *
	 * @return SAL
	 */
	public java.math.BigDecimal getSal() {
		return sal;
	}

	/**
	 * SALをセットする。
	 *
	 * @param sal SAL
	 */
	public void setSal(java.math.BigDecimal sal) {
		this.sal = sal;
	}

	/////////////////////////////////////////////////////////////////
	// COMM

	private java.math.BigDecimal comm;

	/**
	 * COMMを取得する。
	 *
	 * @return COMM
	 */
	public java.math.BigDecimal getComm() {
		return comm;
	}

	/**
	 * COMMをセットする。
	 *
	 * @param comm COMM
	 */
	public void setComm(java.math.BigDecimal comm) {
		this.comm = comm;
	}

	/////////////////////////////////////////////////////////////////
	// DEPTNO

	private java.math.BigDecimal deptno;

	/**
	 * DEPTNOを取得する。
	 *
	 * @return DEPTNO
	 */
	public java.math.BigDecimal getDeptno() {
		return deptno;
	}

	/**
	 * DEPTNOをセットする。
	 *
	 * @param deptno DEPTNO
	 */
	public void setDeptno(java.math.BigDecimal deptno) {
		this.deptno = deptno;
	}

	/////////////////////////////////////////////////////////////////
	// PRIMARY

	private java.math.BigDecimal primary;

	/**
	 * PRIMARYを取得する。
	 *
	 * @return PRIMARY
	 */
	public java.math.BigDecimal getPrimary() {
		return primary;
	}

	/**
	 * PRIMARYをセットする。
	 *
	 * @param primary PRIMARY
	 */
	public void setPrimary(java.math.BigDecimal primary) {
		this.primary = primary;
	}

}

Salgrade.java

public class Salgrade {

	/////////////////////////////////////////////////////////////////
	// GRADE

	private Integer grade;

	/**
	 * GRADEを取得する。
	 *
	 * @return GRADE
	 */
	public Integer getGrade() {
		return grade;
	}

	/**
	 * GRADEをセットする。
	 *
	 * @param grade GRADE
	 */
	public void setGrade(Integer grade) {
		this.grade = grade;
	}

	/////////////////////////////////////////////////////////////////
	// LOSAL

	private Integer losal;

	/**
	 * LOSALを取得する。
	 *
	 * @return LOSAL
	 */
	public Integer getLosal() {
		return losal;
	}

	/**
	 * LOSALをセットする。
	 *
	 * @param losal LOSAL
	 */
	public void setLosal(Integer losal) {
		this.losal = losal;
	}

	/////////////////////////////////////////////////////////////////
	// HISAL

	private Integer hisal;

	/**
	 * HISALを取得する。
	 *
	 * @return HISAL
	 */
	public Integer getHisal() {
		return hisal;
	}

	/**
	 * HISALをセットする。
	 *
	 * @param hisal HISAL
	 */
	public void setHisal(Integer hisal) {
		this.hisal = hisal;
	}

}