/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.seasar.extension.dxo.converter.impl;
import java.util.Calendar;
import java.util.Date;
import org.seasar.extension.dxo.CalendarDto;
import org.seasar.extension.dxo.CircularReferenceDepartment;
import org.seasar.extension.dxo.CircularReferenceDeptDto;
import org.seasar.extension.dxo.CircularReferenceEmployee;
import org.seasar.extension.dxo.DateDto;
import org.seasar.extension.dxo.DateStringDto;
import org.seasar.extension.dxo.DateStringDto2;
import org.seasar.extension.dxo.DateStringDto3;
import org.seasar.extension.dxo.DateUtil;
import org.seasar.extension.dxo.converter.Converter;
/**
* @author Satsohi Kimura
* @author koichik
*/
public class BeanConverterTest extends AbsConverterTest {
private BeanConverter converter;
protected void setUp() throws Exception {
super.setUp();
converter = new BeanConverter();
register(SqlDateConverter.class, "sqlDateDxoConverter");
}
/**
* @throws Exception
*/
public void testConvert1() throws Exception {
DateDto dateDto = (DateDto) converter.convert(new DateStringDto(),
DateDto.class, createContext("testConvert1", null));
assertEquals(10 - 1, getMonth(dateDto.getA()));
assertEquals(30, getDate(dateDto.getA()));
}
/**
* @throws Exception
*/
public void testConvert2() throws Exception {
DateStringDto dateStringDto = (DateStringDto) converter.convert(
new DateDto(), DateStringDto.class, createContext(
"testConvert2", null));
assertEquals("2100", dateStringDto.getA_yyyy());
assertEquals("06", dateStringDto.getA_MM());
assertEquals("22", dateStringDto.getA_dd());
}
/**
*
*/
public static final String testConvert3_DATE_PATTERN = "yyyy/MM/dd";
/**
* @throws Exception
*/
public void testConvert3() throws Exception {
DateStringDto2 dateStringDto = (DateStringDto2) converter.convert(
new DateDto(), DateStringDto2.class, createContext(
"testConvert3", null));
assertEquals("2100/06/22", dateStringDto.getA());
assertEquals("2100", dateStringDto.getA_yyyy());
assertEquals("06", dateStringDto.getA_MM());
assertEquals("22", dateStringDto.getA_dd());
}
/**
*
*/
public static final String testConvert4_DATE_PATTERN = "yyyy/MM/dd";
/**
* @throws Exception
*/
public void testConvert4() throws Exception {
DateDto dateDto = (DateDto) converter.convert(new DateStringDto2(),
DateDto.class, createContext("testConvert4", null));
assertEquals(2020, getYear(dateDto.getA()));
assertEquals(3 - 1, getMonth(dateDto.getA()));
assertEquals(4, getDate(dateDto.getA()));
}
/**
*
*/
public static final String testConvert5_DATE_PATTERN = "yyyy/MM/dd";
/**
* @throws Exception
*/
public void testConvert5() throws Exception {
DateStringDto3 dateStringDto = (DateStringDto3) converter.convert(
new DateDto(), DateStringDto3.class, createContext(
"testConvert5", null));
assertEquals("21000622", dateStringDto.getA_yyyyMMdd());
}
/**
*
*/
public static final String testConvert6_DATE_PATTERN = "yyyy/MM/dd";
/**
* @throws Exception
*/
public void testConvert6() throws Exception {
DateDto dateDto = (DateDto) converter.convert(new DateStringDto3(),
DateDto.class, createContext("testConvert6", null));
assertEquals(2020, getYear(dateDto.getA()));
assertEquals(3 - 1, getMonth(dateDto.getA()));
assertEquals(4, getDate(dateDto.getA()));
}
/**
* @throws Exception
*/
public void testConvert7() throws Exception {
CalendarDto calendarDto = (CalendarDto) converter.convert(
new DateStringDto(), CalendarDto.class, createContext(
"testConvert7", null));
assertEquals(2000, calendarDto.getA().get(Calendar.YEAR));
assertEquals(10 - 1, calendarDto.getA().get(Calendar.MONTH));
assertEquals(30, calendarDto.getA().get(Calendar.DAY_OF_MONTH));
}
/**
* @throws Exception
*/
public void testConvert8() throws Exception {
DateStringDto dateStringDto = (DateStringDto) converter.convert(
new CalendarDto(), DateStringDto.class, createContext(
"testConvert8", null));
assertEquals("2100", dateStringDto.getA_yyyy());
assertEquals("06", dateStringDto.getA_MM());
assertEquals("22", dateStringDto.getA_dd());
}
/**
* @throws Exception
*/
public void testConvert9() throws Exception {
CircularReferenceEmployee employee = new CircularReferenceEmployee();
employee.setEname("ename");
CircularReferenceEmployee employee2 = new CircularReferenceEmployee();
employee2.setEname("ename2");
CircularReferenceDepartment department = new CircularReferenceDepartment();
department.setDname("dname");
employee.setDept(department);
employee2.setDept(department);
department.setEmps(new CircularReferenceEmployee[] { employee,
employee2 });
CircularReferenceDeptDto crDeptDto = (CircularReferenceDeptDto) converter
.convert(department, CircularReferenceDeptDto.class,
createContext("testConvert9", null));
System.out.println(crDeptDto);
}
/**
* @throws Exception
*/
public void testNestedProperty() throws Exception {
HogeHoge hogehoge = new HogeHoge();
Hoge hoge = (Hoge) converter.convert(hogehoge, Hoge.class,
createContext("testNestedProperty", null));
assertNotNull(hoge);
assertNull(hoge.foo);
assertNull(hoge.bar);
Hoge hoge2 = new Hoge();
hoge2.setFoo(DateUtil.newDate(1966, 8, 18));
hoge2.setBar(DateUtil.newDate(1972, 2, 28));
hogehoge.setHoge(hoge2);
hoge = (Hoge) converter.convert(hogehoge, Hoge.class, createContext(
"testNestedProperty", null));
assertNotNull(hoge);
assertEquals(DateUtil.newDate(1966, 8, 18), hoge.foo);
assertEquals(DateUtil.newDate(1972, 2, 28), hoge.bar);
}
/**
* @throws Exception
*/
public void testArray() throws Exception {
Foo foo = new Foo();
foo.array = new Object[] { "1", "2" };
converter.setShallowCopy(true);
Bar bar = (Bar) converter.convert(foo, Bar.class, createContext(
"testArray", null));
assertNotNull(bar);
Integer[] array = bar.array;
assertNotNull(array);
assertEquals(2, array.length);
assertEquals(new Integer(1), array[0]);
assertEquals(new Integer(2), array[1]);
}
/**
* @throws Exception
*/
public void testGetConverter() throws Exception {
Converter fooConverter = converter.getConverter(String.class,
Hoge.class, "foo", Date.class, createContext(
"testGetConverter", null));
assertNotNull(fooConverter);
assertTrue(fooConverter instanceof SqlDateConverter);
Converter barConverter = converter.getConverter(String.class,
Hoge.class, "bar", Date.class, createContext(
"testGetConverter", null));
assertNotNull(barConverter);
assertTrue(barConverter instanceof DateConverter);
}
private int getDate(Date d) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
return calendar.get(Calendar.DAY_OF_MONTH);
}
private int getMonth(Date d) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
return calendar.get(Calendar.MONTH);
}
private int getYear(Date d) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
return calendar.get(Calendar.YEAR);
}
/**
*
*/
public static class Hoge {
/**
*
*/
public static final String foo_sqlDateDxoConverter = null;
/**
*
*/
protected Date foo;
/**
*
*/
protected Date bar;
/**
* @return
*/
public Date getFoo() {
return foo;
}
/**
* @param foo
*/
public void setFoo(Date foo) {
this.foo = foo;
}
/**
* @return
*/
public Date getBar() {
return bar;
}
/**
* @param bar
*/
public void setBar(Date bar) {
this.bar = bar;
}
}
/**
*
*/
public static class HogeHoge {
/**
*
*/
protected Hoge hoge;
/**
* @return
*/
public Hoge getHoge() {
return hoge;
}
/**
* @param hoge
*/
public void setHoge(Hoge hoge) {
this.hoge = hoge;
}
}
/**
*
*/
public static class Foo {
/**
*
*/
public Object[] array;
}
/**
*
*/
public static class Bar {
/**
*
*/
public Integer[] array;
}
}