/**
* Copyright 2004-2017 the original author or authors.
*
* 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 com.ibatis.sqlmap;
import testdomain.*;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class NestedIterateTest extends BaseSqlMapTest {
@Override
protected void setUp() throws Exception {
initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
initScript("scripts/person-init.sql");
initScript("scripts/jpetstore-hsqldb-schema.sql");
initScript("scripts/jpetstore-hsqldb-dataload.sql");
}
/**
* This test should return 9 rows: ids 1-9
*
* This method works as expected
*/
public void testShouldReturn9Rows() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest1", po);
assertEquals(9, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(4, ((Person) results.get(3)).getId().intValue());
assertEquals(5, ((Person) results.get(4)).getId().intValue());
assertEquals(6, ((Person) results.get(5)).getId().intValue());
assertEquals(7, ((Person) results.get(6)).getId().intValue());
assertEquals(8, ((Person) results.get(7)).getId().intValue());
assertEquals(9, ((Person) results.get(8)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test shoud return 1 row: id 4
*/
public void test02() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest2", po);
assertEquals(1, results.size());
assertEquals(4, ((Person) results.get(0)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 8 rows: ids 1-3, 5-9
*/
public void test03() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(4)); // put first to make the test fail
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest3", po);
assertEquals(8, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(5, ((Person) results.get(3)).getId().intValue());
assertEquals(6, ((Person) results.get(4)).getId().intValue());
assertEquals(7, ((Person) results.get(5)).getId().intValue());
assertEquals(8, ((Person) results.get(6)).getId().intValue());
assertEquals(9, ((Person) results.get(7)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 5 rows: ids 5-9
*/
public void test04() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest4", po);
assertEquals(5, results.size());
assertEquals(5, ((Person) results.get(0)).getId().intValue());
assertEquals(6, ((Person) results.get(1)).getId().intValue());
assertEquals(7, ((Person) results.get(2)).getId().intValue());
assertEquals(8, ((Person) results.get(3)).getId().intValue());
assertEquals(9, ((Person) results.get(4)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 6 rows: ids 4-9
*/
public void test05() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest5", po);
assertEquals(6, results.size());
assertEquals(4, ((Person) results.get(0)).getId().intValue());
assertEquals(5, ((Person) results.get(1)).getId().intValue());
assertEquals(6, ((Person) results.get(2)).getId().intValue());
assertEquals(7, ((Person) results.get(3)).getId().intValue());
assertEquals(8, ((Person) results.get(4)).getId().intValue());
assertEquals(9, ((Person) results.get(5)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 3 rows: ids 1-3
*/
public void test06() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
// go backwards to make the test fail
po.addId(new Integer(9));
po.addId(new Integer(8));
po.addId(new Integer(7));
po.addId(new Integer(6));
po.addId(new Integer(5));
po.addId(new Integer(4));
po.addId(new Integer(3));
po.addId(new Integer(2));
po.addId(new Integer(1));
try {
List results = sqlMap.queryForList("NestedIterateTest6", po);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 4 rows: ids 1-4
*/
public void test07() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
// go backwards to make the test fail
po.addId(new Integer(9));
po.addId(new Integer(8));
po.addId(new Integer(7));
po.addId(new Integer(6));
po.addId(new Integer(5));
po.addId(new Integer(4));
po.addId(new Integer(3));
po.addId(new Integer(2));
po.addId(new Integer(1));
try {
List results = sqlMap.queryForList("NestedIterateTest7", po);
assertEquals(4, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(4, ((Person) results.get(3)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return four rows: ids 1, 2, 7, 8
*/
public void test08() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addFirstName("Jeff");
po.addFirstName("Matt");
po.addLastName("Jones");
po.addLastName("Smith");
try {
List results = sqlMap.queryForList("NestedIterateTest8", po);
assertEquals(4, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(7, ((Person) results.get(2)).getId().intValue());
assertEquals(8, ((Person) results.get(3)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return two rows: ids 1, 2
*
* This method works when Christian's IBATIS-281 patches are applied
*/
public void test09() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest9", po);
assertEquals(2, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
public void test09a() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest9a", po);
assertEquals(2, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test shoud return 1 row: id 4
*/
public void test10() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest10", po);
assertEquals(1, results.size());
assertEquals(4, ((Person) results.get(0)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 8 rows: ids 1-3, 5-9
*/
public void test11() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(4)); // put first to make the test fail
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest11", po);
assertEquals(8, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(5, ((Person) results.get(3)).getId().intValue());
assertEquals(6, ((Person) results.get(4)).getId().intValue());
assertEquals(7, ((Person) results.get(5)).getId().intValue());
assertEquals(8, ((Person) results.get(6)).getId().intValue());
assertEquals(9, ((Person) results.get(7)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 5 rows: ids 5-9
*/
public void test12() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest12", po);
assertEquals(5, results.size());
assertEquals(5, ((Person) results.get(0)).getId().intValue());
assertEquals(6, ((Person) results.get(1)).getId().intValue());
assertEquals(7, ((Person) results.get(2)).getId().intValue());
assertEquals(8, ((Person) results.get(3)).getId().intValue());
assertEquals(9, ((Person) results.get(4)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 6 rows: ids 4-9
*/
public void test13() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest13", po);
assertEquals(6, results.size());
assertEquals(4, ((Person) results.get(0)).getId().intValue());
assertEquals(5, ((Person) results.get(1)).getId().intValue());
assertEquals(6, ((Person) results.get(2)).getId().intValue());
assertEquals(7, ((Person) results.get(3)).getId().intValue());
assertEquals(8, ((Person) results.get(4)).getId().intValue());
assertEquals(9, ((Person) results.get(5)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 3 rows: ids 1-3
*/
public void test14() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
// go backwards to make the test fail
po.addId(new Integer(9));
po.addId(new Integer(8));
po.addId(new Integer(7));
po.addId(new Integer(6));
po.addId(new Integer(5));
po.addId(new Integer(4));
po.addId(new Integer(3));
po.addId(new Integer(2));
po.addId(new Integer(1));
try {
List results = sqlMap.queryForList("NestedIterateTest14", po);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This test should return 4 rows: ids 1-4
*/
public void test15() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
// go backwards to make the test fail
po.addId(new Integer(9));
po.addId(new Integer(8));
po.addId(new Integer(7));
po.addId(new Integer(6));
po.addId(new Integer(5));
po.addId(new Integer(4));
po.addId(new Integer(3));
po.addId(new Integer(2));
po.addId(new Integer(1));
try {
List results = sqlMap.queryForList("NestedIterateTest15", po);
assertEquals(4, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(4, ((Person) results.get(3)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return six rows: ids 1-6
*
* This method works when Christian's IBATIS-281 patches are applied
*/
public void test16() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(false));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest16", po);
assertEquals(6, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(4, ((Person) results.get(3)).getId().intValue());
assertEquals(5, ((Person) results.get(4)).getId().intValue());
assertEquals(6, ((Person) results.get(5)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return six rows: ids 1-6
*
* This method works when Christian's IBATIS-281 patches are applied
*/
public void test17() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(false));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest17", po);
assertEquals(6, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(4, ((Person) results.get(3)).getId().intValue());
assertEquals(5, ((Person) results.get(4)).getId().intValue());
assertEquals(6, ((Person) results.get(5)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return two rows: ids 1, 2
*
* This method tests <isNotPropertyAvailable> inside in <iterate>
*/
public void test18() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(false));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest18", po);
assertEquals(2, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return two rows: ids 1, 2
*
* This method tests <isNotNull> inside an <iterate>
*/
public void test19() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(false));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest19", po);
assertEquals(2, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return two rows: ids 1, 2
*
* This method tests <isNotEmpty> inside an <iterate>
*/
public void test20() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
NestedIterateParameterObject.AndCondition andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Jeff", new Boolean(false));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
andCondition = new NestedIterateParameterObject.AndCondition();
andCondition.addCondition("first_name =", "Matt", new Boolean(true));
andCondition.addCondition("last_name =", "Jones", new Boolean(true));
po.addOrCondition(andCondition);
try {
List results = sqlMap.queryForList("NestedIterateTest20", po);
assertEquals(2, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return nine rows: ids 1-9
*
* This method tests the open, close, and prepend attributes when no sub elements satisfy - so no where clause should
* be generated
*
*/
public void test21() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest21", po);
assertEquals(9, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
assertEquals(4, ((Person) results.get(3)).getId().intValue());
assertEquals(5, ((Person) results.get(4)).getId().intValue());
assertEquals(6, ((Person) results.get(5)).getId().intValue());
assertEquals(7, ((Person) results.get(6)).getId().intValue());
assertEquals(8, ((Person) results.get(7)).getId().intValue());
assertEquals(9, ((Person) results.get(8)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return one rows: id 4
*
* This method tests the open, close, and prepend attributes when the first element doesn't satisfy
*
*/
public void test22() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest22", po);
assertEquals(1, results.size());
assertEquals(4, ((Person) results.get(0)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return one rows: id 1
*
*/
public void test23() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest23", po);
assertEquals(1, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return one rows: id 9
*
*/
public void test24() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest24", po);
assertEquals(1, results.size());
assertEquals(9, ((Person) results.get(0)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This method should return three rows: id 1-3
*
*/
public void test25() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
try {
List results = sqlMap.queryForList("NestedIterateTest25", po);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This tests nesting when objects are maps and not a list nested in a list
*/
public void test26() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
Map params = new HashMap();
params.put("po", po);
try {
List results = sqlMap.queryForList("NestedIterateTest26", params);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This tests nesting when objects are maps and not a list nested in a list same as test26 except deeper
*/
public void test27() {
Map firstMap = new HashMap();
List firstList = new ArrayList();
Map params = new HashMap();
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
params.put("po", po);
firstList.add(params);
firstMap.put("firstList", firstList);
try {
List results = sqlMap.queryForList("NestedIterateTest27", firstMap);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This tests nesting when objects are maps and not a list nested in a list
*/
public void test28() {
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
SimpleNestedParameterObject simpleNestedParameterObject = new SimpleNestedParameterObject();
simpleNestedParameterObject.setNestedIterateParameterObject(po);
try {
List results = sqlMap.queryForList("NestedIterateTest28", simpleNestedParameterObject);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This tests nesting when objects are maps and not a list nested in a list same as test26 except deeper
*/
public void test29() {
SimpleNestedParameterObject firstParameterObject = new SimpleNestedParameterObject();
SimpleNestedParameterObject secondParameterObject = new SimpleNestedParameterObject();
List parameterObjectList = new ArrayList();
NestedIterateParameterObject po = new NestedIterateParameterObject();
po.addId(new Integer(1));
po.addId(new Integer(2));
po.addId(new Integer(3));
po.addId(new Integer(4));
po.addId(new Integer(5));
po.addId(new Integer(6));
po.addId(new Integer(7));
po.addId(new Integer(8));
po.addId(new Integer(9));
secondParameterObject.setNestedIterateParameterObject(po);
parameterObjectList.add(secondParameterObject);
firstParameterObject.setNestedList(parameterObjectList);
try {
List results = sqlMap.queryForList("NestedIterateTest29", firstParameterObject);
assertEquals(3, results.size());
assertEquals(1, ((Person) results.get(0)).getId().intValue());
assertEquals(2, ((Person) results.get(1)).getId().intValue());
assertEquals(3, ((Person) results.get(2)).getId().intValue());
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* This tests nesting when a list is initially nested in a bean. so it tests
* [bean]->[list]->[property_of_object_on_exposed_index]
*
*/
public void test30() {
try {
// prepare item list
Item item1 = new Item();
item1.setItemId("EST-1");
item1.setProductId("FI-SW-01");
List itemList = new ArrayList();
itemList.add(item1);
// prepare product list
Product product1 = new Product();
product1.setProductId("FI-SW-01");
product1.setCategoryId("DOGS");
product1.setItemList(itemList);
List productList = new ArrayList();
productList.add(product1);
// prepare parent category
Category parentCategory = new Category();
parentCategory.setCategoryId("DOGS");
parentCategory.setProductList(productList);
// setup Category
Category category = new Category();
category.setCategoryId("FISH");
category.setParentCategory(parentCategory);
List results = sqlMap.queryForList("NestedIterateTest30", category);
assertEquals(1, results.size());
} catch (Exception e) {
fail(e.getMessage());
}
}
}