その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;
}}