private SectionCheck getLoopBreakCheck() { OffsetRowCheck rowCheck = new OffsetRowCheckImpl(0); rowCheck.addCellCheck(new OffsetCellCheckImpl((short) 0, "Employee Payment Totals:")); SectionCheck sectionCheck = new SimpleSectionCheck(); sectionCheck.addRowCheck(rowCheck); return sectionCheck; }
public void testRead2() throws IOException, InvalidFormatException { InputStream inputXLS = new BufferedInputStream(getClass().getResourceAsStream(departmentDataXLS)); Workbook hssfInputWorkbook = WorkbookFactory.create(inputXLS); Sheet sheet = hssfInputWorkbook.getSheetAt(2); Department department; Map beans = new HashMap(); List departments = new ArrayList(); beans.put("departments", departments); List chiefMappings = new ArrayList(); chiefMappings.add(new BeanCellMapping(0, (short) 1, "department", "name")); chiefMappings.add(new BeanCellMapping(3, (short) 0, "department", "chief.name")); chiefMappings.add(new BeanCellMapping(3, (short) 1, "department.chief.age")); chiefMappings.add(new BeanCellMapping(3, (short) 2, "department.chief.payment")); chiefMappings.add(new BeanCellMapping(3, (short) 3, "department", "chief.bonus")); XLSBlockReader chiefReader = new SimpleBlockReaderImpl(0, 6, chiefMappings); List employeeMappings = new ArrayList(); employeeMappings.add(new BeanCellMapping(7, (short) 0, "employee", "name")); employeeMappings.add(new BeanCellMapping(7, (short) 1, "employee", "age")); employeeMappings.add(new BeanCellMapping(7, (short) 2, "employee", "payment")); employeeMappings.add(new BeanCellMapping(7, (short) 3, "employee", "bonus")); XLSBlockReader employeeReader = new SimpleBlockReaderImpl(7, 7, employeeMappings); XLSLoopBlockReader employeesReader = new XLSForEachBlockReaderImpl(7, 7, "department.staff", "employee", Employee.class); employeesReader.addBlockReader(employeeReader); SectionCheck loopBreakCheck = getLoopBreakCheck(); employeesReader.setLoopBreakCondition(loopBreakCheck); XLSLoopBlockReader departmentInfoReader = new XLSForEachBlockReaderImpl(0, 8, "departments", "department", Department.class); departmentInfoReader.addBlockReader(chiefReader); departmentInfoReader.addBlockReader(employeesReader); departmentInfoReader.addBlockReader(new SimpleBlockReaderImpl(8, 8, new ArrayList())); loopBreakCheck = new SimpleSectionCheck(); loopBreakCheck.addRowCheck(new OffsetRowCheckImpl(0)); loopBreakCheck.addRowCheck(new OffsetRowCheckImpl(1)); departmentInfoReader.setLoopBreakCondition(loopBreakCheck); XLSRowCursor cursor = new XLSRowCursorImpl(sheet); cursor.setCurrentRowNum(0); departmentInfoReader.read(cursor, beans); assertEquals(3, departments.size()); department = (Department) departments.get(0); checkDepartmentInfo( department, "IT", "Derek", new Integer(35), new Double(3000.0), new Double(0.30)); assertEquals(5, department.getStaff().size()); Employee employee = (Employee) department.getStaff().get(0); checkEmployee(employee, "Elsa", new Integer(28), new Double(1500.0), new Double(0.15)); employee = (Employee) department.getStaff().get(1); checkEmployee(employee, "Oleg", new Integer(32), new Double(2300.0), new Double(0.25)); employee = (Employee) department.getStaff().get(2); checkEmployee(employee, "Neil", new Integer(34), new Double(2500.0), new Double(0.00)); employee = (Employee) department.getStaff().get(3); checkEmployee(employee, "Maria", new Integer(34), new Double(1700.0), new Double(0.15)); employee = (Employee) department.getStaff().get(4); checkEmployee(employee, "John", new Integer(35), new Double(2800.0), new Double(0.20)); department = (Department) departments.get(1); checkDepartmentInfo( department, "HR", "Betsy", new Integer(37), new Double(2200.0), new Double(0.30)); assertEquals(4, department.getStaff().size()); employee = (Employee) department.getStaff().get(0); checkEmployee(employee, "Olga", new Integer(26), new Double(1400.0), new Double(0.20)); employee = (Employee) department.getStaff().get(1); checkEmployee(employee, "Helen", new Integer(30), new Double(2100.0), new Double(0.10)); employee = (Employee) department.getStaff().get(2); checkEmployee(employee, "Keith", new Integer(24), new Double(1800.0), new Double(0.15)); employee = (Employee) department.getStaff().get(3); checkEmployee(employee, "Cat", new Integer(34), new Double(1900.0), new Double(0.15)); department = (Department) departments.get(2); checkDepartmentInfo( department, "BA", "Wendy", new Integer(35), new Double(2900.0), new Double(0.35)); assertEquals(4, department.getStaff().size()); employee = (Employee) department.getStaff().get(0); checkEmployee(employee, "Denise", new Integer(30), new Double(2400.0), new Double(0.20)); employee = (Employee) department.getStaff().get(1); checkEmployee(employee, "LeAnn", new Integer(32), new Double(2200.0), new Double(0.15)); employee = (Employee) department.getStaff().get(2); checkEmployee(employee, "Natali", new Integer(28), new Double(2600.0), new Double(0.10)); employee = (Employee) department.getStaff().get(3); checkEmployee(employee, "Martha", new Integer(33), new Double(2150.0), new Double(0.25)); }