その2

使い方


Dxoインターフェースを作る。


public interface EmpDxo {
EmpDto convert(Employee employee);

Employee convert(EmpDto empDto);
}

こんな感じ。
プレゼンテーション層用Dto->Entity
Entity->プレゼンテーション層用Dto
とかを書いとく。

変換後の型 convert(変換前の型 ほげ);


次はdiconファイルに登録して、用意したインターフェースにS2DxoIntereceptorを適用。





s2dxo.s2DxoIntereceptor


こんな感じ。
H★O★TでもAutoでもいけるので、適当にやってみて。(w


準備はこれだけ。(jarをクラスパスに通すとかはあるけど)


で、動かしてみると。


public void testInvoke() {
Employee employee = new Employee();
employee.setEname("Kimu");
employee.setHiredate(new Date(1000, 0, 1));
Department department = new Department();
department.setDname("The Seasar Foundation");
employee.setDepartment(department);

EmpDto empDto = empDxo.convert(employee);

assertEquals("Kimu", empDto.getEname());
assertEquals("The Seasar Foundation", empDto.getDname());
assertEquals("2900/01/01", empDto.getHiredate());
}

こうなる。


やってることは、プロパティー名が同じだったら型変換。


まず、EmployeeのenameがEmpDtoのenameになってること。
次、Employee.department.dnameがEmpDto.dnameになってること。
それと、hiredateがDate型から、文字列になってること。


enameは、単純なので分かると思うし、dnameも間に一個あるくらいなので、分かるとして。(w
日付<=>文字列のyyyy(略のフォーマットは、BasicDxoImplのプロパティーにある。
プレゼンで表示するフォーマットが、アプリで統一されてるなら、s2dxo.diconのBasicDxoImplのプロパティーをセットすればOK。なんだけど、あとでs2dxo.diconじゃないとこに定義するようにしとく。
型毎に違うフォーマットを使いたければ、インターフェースにアノテーションでも書けばいいな〜と思った。
今。(w だから、まだ出来ない。


DTOとかのソースがそのままあるだけ。


public class Employee implements Serializable {

private static final long serialVersionUID = -8378271087258215629L;

public static final String TABLE = "EMP";

public static final int department_RELNO = 0;

private long empno;

private String ename;

private String job;

private Short mgr;

private java.util.Date hiredate;

private Float sal;

private Float comm;

private short deptno;

private byte[] password;

private String dummy;

private Department department;

public Employee() {
super();
}

public Employee(long empno) {
this.empno = empno;
}

public long getEmpno() {
return this.empno;
}

public void setEmpno(long empno) {
this.empno = empno;
}

public java.lang.String getEname() {
return this.ename;
}

public void setEname(java.lang.String ename) {
this.ename = ename;
}

public java.lang.String getJob() {
return this.job;
}

public void setJob(java.lang.String job) {
this.job = job;
}

public Short getMgr() {
return this.mgr;
}

public void setMgr(Short mgr) {
this.mgr = mgr;
}

public java.util.Date getHiredate() {
return this.hiredate;
}

public void setHiredate(java.util.Date hiredate) {
this.hiredate = hiredate;
}

public Float getSal() {
return this.sal;
}

public void setSal(Float sal) {
this.sal = sal;
}

public Float getComm() {
return this.comm;
}

public void setComm(Float comm) {
this.comm = comm;
}

public short getDeptno() {
return this.deptno;
}

public void setDeptno(short deptno) {
this.deptno = deptno;
}

public byte[] getPassword() {
return this.password;
}

public void setPassword(byte[] password) {
this.password = password;
}

public String getDummy() {
return this.dummy;
}

public void setDummy(String dummy) {
this.dummy = dummy;
}

public Department getDepartment() {
return this.department;
}

public void setDepartment(Department department) {
this.department = department;
}

public boolean equals(Object other) {
if (!(other instanceof Employee))
return false;
Employee castOther = (Employee) other;
return this.getEmpno() == castOther.getEmpno();
}

public String toString() {
StringBuffer buf = new StringBuffer();
buf.append(empno).append(", ");
buf.append(ename).append(", ");
buf.append(job).append(", ");
buf.append(mgr).append(", ");
buf.append(hiredate).append(", ");
buf.append(sal).append(", ");
buf.append(comm).append(", ");
buf.append(deptno).append(" {");
buf.append(department).append("}");
return buf.toString();
}

public int hashCode() {
return (int) this.getEmpno();
}
}


public class Department implements Serializable {

private static final long serialVersionUID = 208333601296668554L;

public static final String TABLE = "DEPT";

private int deptno;

private String dname;

private String loc;

private int versionNo;

public Department() {
super();
}

public int getDeptno() {
return this.deptno;
}

public void setDeptno(int deptno) {
this.deptno = deptno;
}

public java.lang.String getDname() {
return this.dname;
}

public void setDname(java.lang.String dname) {
this.dname = dname;
}

public java.lang.String getLoc() {
return this.loc;
}

public void setLoc(java.lang.String loc) {
this.loc = loc;
}

public int getVersionNo() {
return this.versionNo;
}

public void setVersionNo(int versionNo) {
this.versionNo = versionNo;
}

public boolean equals(Object other) {
if (!(other instanceof Department))
return false;
Department castOther = (Department) other;
return this.getDeptno() == castOther.getDeptno();
}

public String toString() {
StringBuffer buf = new StringBuffer();
buf.append(deptno).append(", ");
buf.append(dname).append(", ");
buf.append(loc);
return buf.toString();
}

public int hashCode() {
return this.getDeptno();
}
}


public class EmpDto {

private String ename;

private String dname;

private String hiredate;

public EmpDto() {
super();
}

public String getDname() {
return dname;
}

public void setDname(String dname) {
this.dname = dname;
}

public String getEname() {
return ename;
}

public void setEname(String ename) {
this.ename = ename;
}

public String getHiredate() {
return hiredate;
}

public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}

}