/** Tests setScorecardStatus(ScorecardStatus scorecardStatus) method with accuracy state. */ public void testSetScorecardStatusAccuracy() { assertNull("setScorecardStatus1 is wrong.", card.getScorecardStatus()); ScorecardStatus newStatus = new ScorecardStatus(123); editor.setScorecardStatus(newStatus); assertEquals( "setScorecardStatus2 is wrong.", newStatus, editor.getScorecard().getScorecardStatus()); }
/** * Gets the ids of all sections for group from he scorecard. * * @param group the group for which the sections ids will be collected. * @param scorecard the source scorecard. * @return the set of sections ids for group. */ private static Set getSectionsIds(Group group, Scorecard scorecard) { Set ids = new HashSet(); // get all groups Group[] oldGroups = scorecard.getAllGroups(); for (int i = 0; i < oldGroups.length; i++) { // find the one of given id if (oldGroups[i].getId() == group.getId()) { // get all sections and add the ids to set Section[] sections = oldGroups[i].getAllSections(); for (int j = 0; j < sections.length; j++) { ids.add(new Long(sections[j].getId())); } break; } } return ids; }
/** * Update the given group instance into the database. The group instance can include sub items * such as sections and questions. Those sub items will be updated as well. If sub items are * removed from the group, they will be deleted from the persistence. Likewise, if new sub items * are added, they will be created in the persistence. The operator parameter is used as the * modification user of the group and its subitems. The modification date will be the current date * time when the group is updated. * * @param group The group instance to be updated into the database. * @param order the position of the group. * @param operator The modification user of this group. * @param parentId The id of the scorecard that contains this. * @param oldScorecard The scorecard instance before update. It is used to find out remeved items. * @param deletedSectionIds This is an output parameter. An empty array is expected to be passed * in. Deleted section ids will be saved into this list. * @param deletedQuestionIds This is an output parameter. An empty array is expected to be passed * in. Deleted question ids will be saved into this list. Delete question ids is collected * from updateSection() call. * @throws IllegalArgumentException if any input is null or the operator is empty string. * @throws PersistenceException if error occurred while accessing the database. */ public void updateGroup( Group group, int order, String operator, long parentId, Scorecard oldScorecard, List deletedSectionIds, List deletedQuestionIds) throws PersistenceException { if (group == null) { throw new IllegalArgumentException("group cannot be null."); } if (operator == null) { throw new IllegalArgumentException("operator cannot be null."); } if (operator.trim().length() == 0) { throw new IllegalArgumentException("operator cannot be empty String."); } if (oldScorecard == null) { throw new IllegalArgumentException("oldScorecard cannot be null."); } if (deletedSectionIds == null) { throw new IllegalArgumentException("deletedSectionIds cannot be null."); } if (deletedQuestionIds == null) { throw new IllegalArgumentException("deletedQuestionIds cannot be null."); } logger.log( Level.INFO, new LogMessage( "Group", new Long(group.getId()), operator, "create new Group with order:" + order + " ,parentId:" + parentId + ", oldScorecard:" + oldScorecard.getId())); Set oldSectionIds = getSectionsIds(group, oldScorecard); // mark all old section as 'to delete' deletedSectionIds.addAll(oldSectionIds); // get the section and create its persistence Section[] sections = group.getAllSections(); InformixSectionPersistence sectionPersistence = new InformixSectionPersistence(connection); // for each new section for (int i = 0; i < sections.length; i++) { Long longId = new Long(sections[i].getId()); // if is new - create it if (sections[i].getId() == NamedScorecardStructure.SENTINEL_ID) { sectionPersistence.createSection(sections[i], i, operator, group.getId()); } else if (oldSectionIds.contains(longId)) { // if is old - update it and removed from delete list sectionPersistence.updateSection( sections[i], i, operator, group.getId(), oldScorecard, deletedQuestionIds); deletedSectionIds.remove(longId); } } // update the group in the database updateGroup(connection, group, operator, parentId, order); }