/*
* 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.dataset.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.seasar.extension.dataset.DataRow;
import org.seasar.extension.dataset.DataTable;
import org.seasar.extension.dataset.states.RowStates;
import org.seasar.extension.dataset.types.ColumnTypes;
import org.seasar.extension.unit.S2TestCase;
/**
* @author higa
*
*/
public class DataTableImplTest extends S2TestCase {
/**
* @throws Exception
*/
public void testRemoveRows() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.addColumn("aaa", ColumnTypes.STRING);
DataRow row = table.addRow();
row.setValue("aaa", "1");
DataRow row2 = table.addRow();
row2.setValue("aaa", "2");
row2.remove();
DataRow row3 = table.addRow();
row3.setValue("aaa", "3");
row3.remove();
DataRow[] rows = table.removeRows();
assertEquals("1", 2, rows.length);
assertEquals("2", 2, table.getRemovedRowSize());
assertEquals("3", 1, table.getRowSize());
assertEquals("4", "1", table.getRow(0).getValue("aaa"));
assertSame("5", row2, table.getRemovedRow(0));
assertSame("6", row3, table.getRemovedRow(1));
}
/**
* @throws Exception
*/
public void testEquals() throws Exception {
DataTable table = new DataTableImpl("hoge");
DataTable table2 = new DataTableImpl("hoge");
table.addColumn("aaa");
table2.addColumn("aaa");
DataRow row = table.addRow();
row.setValue("aaa", "1");
row = table.addRow();
row.setValue("aaa", "2");
row.remove();
DataRow row2 = table2.addRow();
row2.setValue("aaa", "1");
row2 = table2.addRow();
row2.setValue("aaa", "2");
row2.remove();
assertEquals("1", table, table2);
table.removeRows();
table2.removeRows();
assertEquals("2", table, table2);
table2.getRow(0).setValue(0, "11");
assertEquals("3", false, table.equals(table2));
}
/**
* @throws Exception
*/
public void testEquals2() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.addColumn("aaa");
table.addColumn("bbb");
DataTable table2 = new DataTableImpl("hoge2");
table2.addColumn("ccc");
table2.addColumn("aaa");
table2.addColumn("bbb");
DataRow row = table.addRow();
DataRow row2 = table2.addRow();
row.setValue("aaa", "111");
row.setValue("bbb", "222");
row2.setValue("aaa", "111");
row2.setValue("bbb", "222");
row2.setValue("ccc", "333");
assertEquals("1", table, table2);
}
/**
* @throws Exception
*/
public void testEquals3() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.addColumn("aaa");
DataTable table2 = new DataTableImpl("hoge2");
table2.addColumn("aaa", ColumnTypes.STRING);
DataRow row = table.addRow();
DataRow row2 = table2.addRow();
row.setValue("aaa", new BigDecimal("111"));
row2.setValue("aaa", "111");
assertEquals("1", table, table2);
}
/**
* @throws Exception
*/
public void testSetupColumns() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.setupColumns(MyBean.class);
assertEquals("1", 2, table.getColumnSize());
assertEquals("2", ColumnTypes.BIGDECIMAL, table.getColumnType("myInt"));
assertEquals("3", ColumnTypes.STRING, table.getColumnType("myString"));
}
/**
* @throws Exception
*/
public void testCopyFromList() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.setupColumns(MyBean.class);
List list = new ArrayList();
MyBean bean = new MyBean();
bean.setMyInt(1);
bean.setMyString("a");
list.add(bean);
bean = new MyBean();
bean.setMyInt(2);
bean.setMyString("b");
list.add(bean);
table.copyFrom(list);
assertEquals("1", 2, table.getRowSize());
assertEquals("2", new BigDecimal(1), table.getRow(0).getValue("myInt"));
assertEquals("3", "a", table.getRow(0).getValue("myString"));
assertEquals("4", new BigDecimal(2), table.getRow(1).getValue("myInt"));
assertEquals("5", "b", table.getRow(1).getValue("myString"));
assertEquals("6", RowStates.UNCHANGED, table.getRow(0).getState());
}
/**
* @throws Exception
*/
public void testCopyFromBeanOrMap() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.setupColumns(MyBean.class);
MyBean bean = new MyBean();
bean.setMyInt(1);
bean.setMyString("a");
table.copyFrom(bean);
assertEquals("1", 1, table.getRowSize());
assertEquals("2", new BigDecimal(1), table.getRow(0).getValue("myInt"));
assertEquals("3", "a", table.getRow(0).getValue("myString"));
assertEquals("4", RowStates.UNCHANGED, table.getRow(0).getState());
}
/**
* @throws Exception
*/
public void testHasColumn() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.addColumn("aaa_0");
table.addColumn("bbbCcc");
assertEquals("1", true, table.hasColumn("aaa_0"));
assertEquals("2", true, table.hasColumn("bbb_ccc"));
}
/**
* @throws Exception
*/
public void testGetColumn() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.addColumn("aaa_0");
table.addColumn("bbbCcc");
assertNotNull("1", table.getColumn("aaa_0"));
assertNotNull("2", table.getColumn("bbb_ccc"));
}
/**
* @throws Exception
*/
public void testGetColumn2() throws Exception {
DataTable table = new DataTableImpl("hoge");
table.addColumn("aaa_bbb");
assertNotNull("1", table.getColumn("aaaBbb"));
}
/**
* @throws Exception
*/
public void setUpSetupMetaData() throws Exception {
include("j2ee.dicon");
}
/**
* @throws Exception
*/
public void testSetupMetaData() throws Exception {
DataTable table = new DataTableImpl("emp");
table.addColumn("empno");
table.setupMetaData(getDatabaseMetaData());
assertEquals("1", ColumnTypes.BIGDECIMAL, table.getColumnType("empno"));
}
/**
*
*/
public static class MyBean {
private int myInt_;
private String myString_;
/**
* @return
*/
public int getMyInt() {
return myInt_;
}
/**
* @param myInt
*/
public void setMyInt(int myInt) {
myInt_ = myInt;
}
/**
* @return
*/
public String getMyString() {
return myString_;
}
/**
* @param myString
*/
public void setMyString(String myString) {
myString_ = myString;
}
}
}