Beispiel #1
0
 @Override
 public List<Value> getFullPath(String valueId, String treeId) throws PdcException {
   List<Value> fullPath = new ArrayList<Value>();
   Value value = getValue(treeId, valueId);
   fullPath.add(value);
   while (value.hasFather()) {
     value = getValue(treeId, value.getFatherId());
     fullPath.add(0, value);
   }
   return fullPath;
 }
 private Value findTerm(String term, final List<Value> inValues) {
   Value valueOfTerm = null;
   for (Value value : inValues) {
     if (value.getName().equals(term)) {
       valueOfTerm = value;
       break;
     }
   }
   if (valueOfTerm == null) {
     throw new RuntimeException("The term to find should exist!");
   }
   return valueOfTerm;
 }
Beispiel #3
0
 private void addPosition(final ClassifyPosition position) {
   ClassificationPlan pdc = aClassificationPlan();
   for (ClassifyValue classifyValue : position.getValues()) {
     if (classifyValue.getFullPath() == null || classifyValue.getFullPath().isEmpty()) {
       Value value = new Value();
       value.setAxisId(classifyValue.getAxisId());
       String path = classifyValue.getValue();
       path = path.substring(0, path.length() - 1);
       int indexOfTermId = path.lastIndexOf("/") + 1;
       value.setValuePK(new ValuePK(path.substring(indexOfTermId)));
       value.setPath(path.substring(0, indexOfTermId));
       classifyValue.setFullPath(pdc.getPathInTreeOfValue(value));
     }
   }
   position.setPositionId(positions.size());
   positions.add(position);
 }
  public PdcClassification buildWithNoSynonyms() {
    ClassificationPlan pdc = aClassificationPlan();
    List<ClassifyPosition> positions = new ArrayList<ClassifyPosition>();

    List<ClassifyValue> positionValues = new ArrayList<ClassifyValue>();
    List<Value> values = pdc.getValuesOfAxisByName("Technologie");
    Value value = values.get(0);
    ClassifyValue classifyValue =
        new ClassifyValue(toValueId(value.getAxisId()), toValue(value.getFullPath()));
    classifyValue.setFullPath(pdc.getPathInTreeOfValue(value));
    positionValues.add(classifyValue);
    positions.add(new ClassifyPosition(positionValues));

    return aClassificationFromPositions(positions)
        .ofContent(contentId)
        .inComponentInstance(componentId);
  }
  public PdcClassification build() {
    ClassificationPlan pdc = aClassificationPlan();
    List<ClassifyPosition> positions = new ArrayList<ClassifyPosition>();

    List<ClassifyValue> positionValues = new ArrayList<ClassifyValue>();
    List<Value> values = pdc.getValuesOfAxisByName("Pays");
    Value value = findTerm("Grenoble", values);
    ClassifyValue classifyValue =
        new ClassifyValue(toValueId(value.getAxisId()), toValue(value.getFullPath()));
    classifyValue.setFullPath(pdc.getPathInTreeOfValue(value));
    positionValues.add(classifyValue);
    values = pdc.getValuesOfAxisByName("Période");
    value = findTerm("Moyen-Age", values);
    classifyValue = new ClassifyValue(toValueId(value.getAxisId()), toValue(value.getFullPath()));
    classifyValue.setFullPath(pdc.getPathInTreeOfValue(value));
    positionValues.add(classifyValue);
    positions.add(new ClassifyPosition(positionValues));

    positionValues = new ArrayList<ClassifyValue>();
    values = pdc.getValuesOfAxisByName("Religion");
    value = findTerm("Christianisme", values);
    classifyValue = new ClassifyValue(toValueId(value.getAxisId()), toValue(value.getFullPath()));
    classifyValue.setFullPath(pdc.getPathInTreeOfValue(value));
    positionValues.add(classifyValue);
    positions.add(new ClassifyPosition(positionValues));

    PdcClassification classification =
        aClassificationFromPositions(positions).inComponentInstance(getComponentId());
    if (getContentId() != null) {
      classification = classification.ofContent(getContentId());
    } else if (getNodeId() != null) {
      classification = classification.forNode(getNodeId());
    }
    return classification;
  }
Beispiel #6
0
 @Override
 public Value getValue(String axisId, String valueId) throws PdcException {
   Value theValue = null;
   ClassificationPlan pdc = aClassificationPlan();
   for (Value aValue : pdc.getValuesOfAxisById(axisId)) {
     if (aValue.getPK().getId().equals(valueId)) {
       theValue = aValue;
       break;
     }
   }
   if (theValue == null) {
     throw new PdcException(
         getClass().getSimpleName() + ".getValue()",
         SilverpeasException.ERROR,
         "root.NO_EX_MESSAGE");
   }
   return theValue;
 }
Beispiel #7
0
 @Override
 public List<Value> getPertinentDaughterValuesByInstanceIds(
     SearchContext searchContext, String axisId, String valueId, List<String> instanceIds)
     throws PdcException {
   List<Value> pertinentValues = new ArrayList<Value>();
   ClassificationPlan pdc = aClassificationPlan();
   UsedAxis theAxis = pdc.getAxis(axisId);
   if (instanceIds.contains(theAxis.getInstanceId())) {
     List<Value> values = pdc.getValuesUsedInClassification(axisId);
     List<SearchCriteria> criteria = searchContext.getCriterias();
     if (criteria.isEmpty()) {
       return values;
     }
     for (Value aValue : values) {
       for (SearchCriteria criterion : criteria) {
         if (criterion.getAxisId() == Integer.valueOf(aValue.getAxisId())
             && criterion.getValue().equals(aValue.getFullPath())) {
           pertinentValues.add(aValue);
         }
       }
     }
   }
   return pertinentValues;
 }
  @Override
  public int doStartTag() throws JspException {
    if (pdcBm == null) {
      pdcBm = (PdcBm) new PdcBmImpl();
    }

    List<SearchAxis> primaryAxis = null;
    List daughters = null;

    try {
      if (StringUtil.isDefined(m_spaceOrSubSpace)) {
        List<String> availableComponentIds = new ArrayList<String>();
        SearchContext searchContext = new SearchContext();

        if (StringUtil.isDefined(componentId)) {
          primaryAxis = pdcBm.getPertinentAxisByInstanceId(searchContext, "P", componentId);
        } else {
          String a[] =
              oganisationController.getAvailCompoIds(
                  m_spaceOrSubSpace, mainSessionController.getUserId());
          availableComponentIds = Arrays.asList(a);
          if (!availableComponentIds.isEmpty()) {
            primaryAxis =
                pdcBm.getPertinentAxisByInstanceIds(searchContext, "P", availableComponentIds);
          }
        }

        if (primaryAxis != null && !primaryAxis.isEmpty()) {
          if (!"".equals(selectedAxisId)) {
            if (StringUtil.isDefined(componentId)) {
              daughters =
                  pdcBm.getPertinentDaughterValuesByInstanceId(
                      searchContext, selectedAxisId, selectedAxisPath, componentId);
            } else {
              daughters =
                  pdcBm.getPertinentDaughterValuesByInstanceIds(
                      searchContext, selectedAxisId, selectedAxisPath, availableComponentIds);
            }
          } else {
            SearchAxis searchAxis = primaryAxis.get(0);
            String axisId = new Integer(searchAxis.getAxisId()).toString();
            daughters =
                pdcBm.getPertinentDaughterValuesByInstanceIds(
                    searchContext, axisId, "", availableComponentIds);
          }
        }
      } // end if
    } catch (PdcException e) {
      throw new JspTagException("PdcException occured : " + e.toString());
    }

    try {
      pageContext.getOut().println("<tr class='intfdcolor51'>");
      pageContext.getOut().println("	<td width='100%'>");
      pageContext
          .getOut()
          .println("		<table border='0' cellspacing='0' cellpadding='0' width='100%'>");
      pageContext.getOut().println("			<tr>");
      pageContext.getOut().println("				<td>&nbsp;</td>");
      pageContext.getOut().println("				<td width='100%'><span class='txtnote'>");
      pageContext
          .getOut()
          .println("					<table cellpadding=0 cellspacing=0 border=0 width='100%'>");
      pageContext.getOut().println("						<tr><td>");

      // il peut y avoir aucun axe primaire dans un 1er temps
      if ((primaryAxis != null) && !primaryAxis.isEmpty()) {
        String text_link = "";
        for (SearchAxis searchAxis : primaryAxis) {
          String axisId = new Integer(searchAxis.getAxisId()).toString();
          String axisRootId = new Integer(searchAxis.getAxisRootId()).toString();
          String axisName = EncodeHelper.javaStringToHtmlString(searchAxis.getAxisName());

          int nbPositions = searchAxis.getNbObjects();
          if (nbPositions == 0 && componentId != null) {
            continue;
          }
          String objectLinked = "";
          String link = "javascript:top.scriptFrame.axisClick('" + axisId + "','');";
          text_link =
              webContext
                  + "/RpdcSearch/jsp/showaxishfromhomepage?query=&AxisId="
                  + axisId
                  + "&ValueId=/"
                  + axisRootId
                  + "/&SearchContext=isNotEmpty&component_id="
                  + componentId
                  + "&space_id="
                  + m_spaceOrSubSpace;
          if (axisId.equals(selectedAxisId)) {
            if (daughters != null) {
              if ("".equals(selectedAxisPath)) {
                if ("off".equals(state)) {
                  pageContext
                      .getOut()
                      .println(
                          HomePageFunctions.urlFactory(
                              link,
                              text_link,
                              axisId,
                              "",
                              objectLinked,
                              axisName,
                              "&nbsp;(" + nbPositions + ")",
                              HomePageFunctions.AXIS,
                              HomePageFunctions.AXIS_COLLAPSED,
                              "",
                              webContext));
                  continue;
                }
              }
              pageContext
                  .getOut()
                  .println(
                      HomePageFunctions.urlFactory(
                          link,
                          text_link,
                          axisId,
                          "",
                          objectLinked,
                          axisName,
                          "&nbsp;(" + nbPositions + ")",
                          HomePageFunctions.AXIS,
                          HomePageFunctions.AXIS_EXPANDED,
                          "",
                          webContext));
              // **************Begin daughters

              int d_size = daughters.size();

              int[][] tree_gui_represintation = new int[d_size][d_size];
              int selected_x = -1;
              int selected_y = 0;

              for (int j = 0; j < d_size; j++) {
                Value value = (Value) daughters.get(j);
                int valueLevel = value.getLevelNumber();
                String path = value.getFullPath();
                HomePageFunctions.setTreeNode(tree_gui_represintation, valueLevel, j, d_size);
                if (selectedAxisPath.equals(path)) {
                  selected_x = valueLevel;
                  selected_y = j;
                }
              }

              HomePageFunctions.closeTreeNodes(tree_gui_represintation, 0, d_size, d_size);
              if (selected_x >= 0) {
                if (state.equals("on")) {
                  selected_x++;
                  selected_y++;
                }
                HomePageFunctions.collapseTree(
                    tree_gui_represintation, selected_x, selected_y, d_size);
              }

              for (int j = 1; j < d_size; j++) {
                Value value = (Value) daughters.get(j);
                String valueName = EncodeHelper.javaStringToHtmlString(value.getName());
                int valueLevel = value.getLevelNumber();
                int valueNbObjects = value.getNbObjects();
                if (valueNbObjects == 0 && componentId != null) {
                  continue;
                }
                String valueFullPath = value.getFullPath();
                link =
                    "javascript:top.scriptFrame.axisClick('"
                        + axisId
                        + "','"
                        + valueFullPath
                        + "');";
                text_link =
                    webContext
                        + "/RpdcSearch/jsp/showaxishfromhomepage?query=&AxisId="
                        + axisId
                        + "&ValueId="
                        + valueFullPath
                        + "&SearchContext=isNotEmpty&component_id="
                        + componentId
                        + "&space_id="
                        + m_spaceOrSubSpace;
                if (tree_gui_represintation[0][j] == HomePageFunctions.T_HIDED_NODE) {
                  continue;
                }
                String offset =
                    HomePageFunctions.getTreeNodeOffset(
                        tree_gui_represintation, j, d_size, webContext);
                int node_type;
                if (tree_gui_represintation[valueLevel][j] == HomePageFunctions.T_OPENED_NODE) {
                  node_type = HomePageFunctions.AXIS_EXPANDED;
                } else {
                  node_type = HomePageFunctions.AXIS_COLLAPSED;
                }
                if (selectedAxisPath.equals("")) {
                  if (valueLevel == 1) {
                    pageContext
                        .getOut()
                        .println(
                            HomePageFunctions.urlFactory(
                                link,
                                text_link,
                                valueFullPath,
                                "",
                                objectLinked,
                                valueName,
                                " (" + valueNbObjects + ")",
                                HomePageFunctions.AXIS_LAST,
                                HomePageFunctions.AXIS_COLLAPSED,
                                offset,
                                webContext));
                  }
                  continue;
                } else {
                  pageContext
                      .getOut()
                      .println(
                          HomePageFunctions.urlFactory(
                              link,
                              text_link,
                              valueFullPath,
                              "",
                              objectLinked,
                              valueName,
                              " (" + valueNbObjects + ")",
                              HomePageFunctions.AXIS_LAST,
                              node_type,
                              offset,
                              webContext));
                }
              }
            }
          } else {
            pageContext
                .getOut()
                .println(
                    HomePageFunctions.urlFactory(
                        link,
                        text_link,
                        axisId,
                        "",
                        objectLinked,
                        axisName,
                        "&nbsp;(" + nbPositions + ")",
                        HomePageFunctions.AXIS,
                        HomePageFunctions.AXIS_COLLAPSED,
                        "",
                        webContext));
          }
        } // fin du for
      }

      pageContext.getOut().println("						</td></tr>");
      pageContext.getOut().println("					</table>");
      pageContext.getOut().println("				</span></td>");
      pageContext.getOut().println("			</tr>");
      pageContext.getOut().println("		</table>");
      pageContext.getOut().println("	</td>");
      pageContext.getOut().println("	<td><img src='icons/1px.gif'></td>");
      pageContext.getOut().println("	<td class='intfdcolor'><img src='icons/1px.gif'></td>");
      pageContext.getOut().println("</tr>");
    } catch (IOException ioe) {
      throw new JspTagException("IO_ERROR");
    }

    return SKIP_BODY;
  }