/**
   * @param manualActivityPath
   * @param pathDataMapping
   */
  private void processManualActivityPath(
      ManualActivityPath manualActivityPath, Map<Path, DataMapping> pathDataMapping) {
    // Process Children
    for (Path path : manualActivityPath.getChildPaths()) {
      if (path instanceof IppSystemPath) {
        handleSystemPath((IppSystemPath) path);
      } else if (path instanceof DocumentPath) {
        handleDocumentPath((DocumentPath) path, pathDataMapping.get(path));
      } else if (path.isEnumeration()) {
        handleEnumerationPath(path);
      } else if (path.isPrimitive()) {
        handlePrimitivePath(path);
      } else if (path.isList()) {
        handleListDataMapping(path);
      } else if (path.getChildPaths().size() > 0) {
        handleStructureDataMapping(path);
      }
    }

    // For Single Document Case
    IppDocumentInputController docController = getIfSingleDocument();
    if (null != docController && null == docController.getValue()) {
      docController.setOpenDocument(true);
      docController.setEnableOpenDocument(false);
    }
  }
  /**
   * @param onlyHavingDocViewerOpened
   * @param checkDocementAvailable
   * @return
   */
  public List<DocumentInputController> getDisplayedMappedDocuments(
      boolean onlyHavingDocViewerOpened, boolean checkDocementAvailable) {
    IppDocumentInputController docInputCtrl;
    List<DocumentInputController> mappedDocs = new ArrayList<DocumentInputController>();
    for (InputController inputCtrl : getTopLevelInputControllerMap().values()) {
      if (inputCtrl instanceof IppDocumentInputController
          && (!checkDocementAvailable
              || ((IppDocumentInputController) inputCtrl).isDocumentAvailable())) {
        docInputCtrl = (IppDocumentInputController) inputCtrl;
        if (!onlyHavingDocViewerOpened || docInputCtrl.isDocumentViewerOpened()) {
          mappedDocs.add(docInputCtrl);
        }
      }
    }

    return mappedDocs;
  }