/**
   * Get indentation level of a section
   *
   * @param indentBean SectionBeanService object
   * @param secBeans list of section bean objects
   * @return true if indentation is less than 10 levels, false otherwise
   */
  private boolean findIndent(SectionBeanService indentBean, List secBeans) {
    String pattern = "\\.";
    int occurs = indentBean.getDisplaySequence().split(pattern).length - 1;

    if (occurs >= 10) {
      return false;
    } else {
      String indDispSeq = indentBean.getDisplaySequence();
      for (ListIterator i = secBeans.listIterator(); i.hasNext(); ) {
        SectionBeanService secBean = (SectionBeanService) i.next();
        String sbDispSeq = secBean.getDisplaySequence();
        if (sbDispSeq.startsWith(indDispSeq)) {
          occurs = 0;
          occurs = sbDispSeq.split(pattern).length - 1;
          if (occurs >= 10) return false;
        }
      }
    }
    return true;
  }
  /**
   * Bring section one level up in indentation
   *
   * @return list_auth_modules
   */
  public String BringSubSectionLevelUpAction() {
    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 (count == 0) {
      String msg = bundle.getString("list_select_one_indent");
      addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR);
      resetSubSectionValues();
      return "list_auth_modules";
    }

    // if module is selected then throw message
    if (moduleSelected) {
      String msg = bundle.getString("list_select_indent");
      addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR);
      resetSubSectionValues();
      return "list_auth_modules";
    }

    // section selected
    /*
     * if(sectionSelected && count != 1) { String msg =
     * bundle.getString("list_select_one_indent"); addMessage(ctx,"Error
     * Message
     * ",msg,FacesMessage.SEVERITY_ERROR); resetSubSectionValues(); return "
     * list_auth_modules"; }
     */

    if (sectionSelected == true) {
      if ((secObjMap == null) || (secObjMap.size() == 0)) 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 top level section
      // 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 = (ModuleDateBean) smObj.getMdBean();
          secBean = (SectionBeanService) smObj.getSecBean();
          if (checkTopLevelSection(secBean.getDisplaySequence())) {
            logger.debug("Top level section can't indent left more");
            resetSubSectionValues();
            return "list_auth_modules";
          }
          try {
            indentSecBeans.add(secBean);
            moduleService.bringOneLevelUp(mdbean.getModule(), indentSecBeans);
          } catch (MeleteException me) {
            logger.debug(me.toString());
            String msg = bundle.getString("indent_left_fail");
            addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR);
          }
        }
      } 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();
              indentSecBeans.add(secBean);
            }
          }
          if ((indentSecBeans != null) && (indentSecBeans.size() != 0)) {
            try {
              moduleService.bringOneLevelUp(mdbean.getModule(), indentSecBeans);
            } catch (MeleteException me) {
              logger.debug(me.toString());
              String msg = bundle.getString("indent_left_fail");
              addMessage(ctx, "Error Message", msg, FacesMessage.SEVERITY_ERROR);
            }
          }
        }
      }
    }

    resetSubSectionValues();
    int saveShowId = showModuleId;
    resetValues();
    setShowModuleId(saveShowId);
    return "list_auth_modules";
  }