protected Map getSecObjMap(List moduleDateBeans) { if ((moduleDateBeans == null) || (moduleDateBeans.size() == 0)) return null; Map secobjMap = new LinkedHashMap<Integer, SecModObj>(); for (Iterator itr = moduleDateBeans.listIterator(); itr.hasNext(); ) { ModuleDateBean mdbean = (ModuleDateBean) itr.next(); List sectionBeans = mdbean.getSectionBeans(); if ((sectionBeans != null) && (sectionBeans.size() > 0)) { int moduleId = mdbean.getModuleId(); for (Iterator sItr = sectionBeans.listIterator(); sItr.hasNext(); ) { SectionBean secbean = (SectionBean) sItr.next(); secobjMap.put( secbean.getSection().getSectionId(), new SecModObj(moduleId, secbean, mdbean)); } } } return secobjMap; }
/** * Indent this section by first checking if indentation is less than 10 levels * * @return list_auth_modules */ public String CreateSubSectionAction() { FacesContext ctx = FacesContext.getCurrentInstance(); ResourceLoader bundle = new ResourceLoader("org.etudes.tool.melete.bundle.Messages"); if (!saveModuleDates()) return "list_auth_modules"; if ((moduleDateBeans == null) || (moduleDateBeans.size() == 0)) return "list_auth_modules"; // if module is selected then throw message if (moduleSelected) { String msg = bundle.getString("list_select_indent"); addMessage(ctx, "Select Indent", msg, FacesMessage.SEVERITY_ERROR); resetSubSectionValues(); return "list_auth_modules"; } if ((moduleSelected == false) && (sectionSelected == false)) { String msg = bundle.getString("list_select_one_indent"); addMessage(ctx, "Select Indent", msg, FacesMessage.SEVERITY_ERROR); resetSubSectionValues(); return "list_auth_modules"; } if (sectionSelected == true) { if ((secObjMap == null) || (secObjMap.size() == 0)) { resetSubSectionValues(); return "list_auth_modules"; } SecModObj smObj = null; ModuleDateBean mdbean = null; SectionBeanService secBean = null; List indentSecBeans = null; if (indentSecBeans == null) { indentSecBeans = new ArrayList(); } if (selectedSecIds == null) { resetSubSectionValues(); return "list_auth_modules"; } // If one section is selected, we check if its the first section // or if it is too deep to indent // If multiple sections are selected, we indent those that we can // and leave the others alone if (selectedSecIds.size() == 1) { smObj = (SecModObj) secObjMap.get(selectedSecIds.get(0)); if ((smObj != null) && (smObj.getMdBean() != null) && (smObj.getSecBean() != null)) { mdbean = smObj.getMdBean(); if (mdbean.getSectionBeans().size() < 2) { logger.debug("First section can't be change to subsection"); resetSubSectionValues(); return "list_auth_modules"; } else { secBean = smObj.getSecBean(); boolean indentOk = findIndent(secBean, mdbean.getSectionBeans()); // Only allow indent upto 10 levels if (indentOk) { try { indentSecBeans.add(secBean); moduleService.createSubSection(mdbean.getModule(), indentSecBeans); } catch (MeleteException me) { logger.debug(me.toString()); String msg = bundle.getString("indent_right_fail"); addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR); } } else { String msg = bundle.getString("indent_right_toodeep"); addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR); } } } else { resetSubSectionValues(); return "list_auth_modules"; } } else { // Multiple indent code boolean res = checkDifModules(selectedSecIds); if (res == true) { String msg = bundle.getString("list_select_in_onemodule"); addMessage(ctx, "Select Indent", msg, FacesMessage.SEVERITY_ERROR); resetSubSectionValues(); return "list_auth_modules"; } else { mdbean = null; secBean = null; for (ListIterator i = selectedSecIds.listIterator(); i.hasNext(); ) { Integer sectionId = (Integer) i.next(); smObj = (SecModObj) secObjMap.get(sectionId); if ((smObj != null) && (smObj.getMdBean() != null) && (smObj.getSecBean() != null)) { mdbean = smObj.getMdBean(); secBean = smObj.getSecBean(); boolean indentOk = findIndent(secBean, mdbean.getSectionBeans()); if (indentOk) { indentSecBeans.add(secBean); } } } try { moduleService.createSubSection(mdbean.getModule(), indentSecBeans); } catch (MeleteException me) { logger.debug(me.toString()); String msg = bundle.getString("indent_right_fail"); addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR); } } } } resetSubSectionValues(); int saveShowId = showModuleId; resetValues(); setShowModuleId(saveShowId); return "list_auth_modules"; }