예제 #1
0
  /**
   * Get the list of contents by relationship if exists.
   *
   * @param structure The content structure
   * @param contentlet The content
   * @param parametersOptions The macro form options parameters
   * @return Map<Relationship,List<Contentlet>>
   * @throws DotSecurityException
   */
  private static Map<Relationship, List<Contentlet>> getRelationships(
      Structure structure, Contentlet contentlet, String parametersOptions, User user)
      throws DotDataException, DotSecurityException {
    LanguageAPI lAPI = APILocator.getLanguageAPI();
    Map<Relationship, List<Contentlet>> contentRelationships =
        new HashMap<Relationship, List<Contentlet>>();
    if (contentlet == null) return contentRelationships;
    List<Relationship> rels =
        RelationshipFactory.getAllRelationshipsByStructure(contentlet.getStructure());
    for (Relationship rel : rels) {

      String[] opt = parametersOptions.split(";");
      for (String text : opt) {
        if (text.indexOf(rel.getRelationTypeValue()) != -1) {

          String[] identArray =
              text.substring(text.indexOf("=") + 1)
                  .replaceAll("\\[", "")
                  .replaceAll("\\]", "")
                  .split(",");

          List<Contentlet> cons =
              conAPI.findContentletsByIdentifiers(
                  identArray, true, lAPI.getDefaultLanguage().getId(), user, true);
          if (cons.size() > 0) {
            contentRelationships.put(rel, cons);
          }
        }
      }
    }
    return contentRelationships;
  }
예제 #2
0
  private List<Map<String, Object>> findChildFacilities(
      List<Contentlet> buildingConts, String filter, User user, boolean respectFrontendRoles)
      throws DotDataException, DotSecurityException {
    List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();

    // Searching for children facilities
    Structure facilityStructure = eventAPI.getFacilityStructure();
    // Facility Structure might be absent http://jira.dotmarketing.net/browse/DOTCMS-6275
    if (facilityStructure.getName() != null) {
      Field titleField = facilityStructure.getFieldVar("title");
      String luceneQuery = "+structureInode:" + facilityStructure.getInode() + " +(";
      for (Contentlet cont : buildingConts) {
        luceneQuery += " Building-Facility:" + cont.getIdentifier() + " ";
      }
      luceneQuery += ") ";
      if (UtilMethods.isSet(filter))
        luceneQuery += " +" + titleField.getFieldContentlet() + ":" + filter.trim() + "*";

      List<Contentlet> matches =
          contAPI.search(
              luceneQuery, -1, 0, titleField.getFieldContentlet(), user, respectFrontendRoles);
      List<Relationship> rels =
          RelationshipFactory.getAllRelationshipsByStructure(eventAPI.getBuildingStructure());
      for (Contentlet cont : matches) {
        List<Contentlet> relCont = new ArrayList<Contentlet>();
        for (Relationship rel : rels) {
          if (rel.getChildStructure().equals(eventAPI.getFacilityStructure())
              && rel.getParentStructure().equals(eventAPI.getBuildingStructure())) {
            relCont.addAll(
                APILocator.getContentletAPI()
                    .getRelatedContent(cont, rel, user, respectFrontendRoles));
          }
        }
        Map<String, Object> contMap = cont.getMap();
        contMap.put("buildings", relCont);
        results.add(contMap);
      }
    }
    return results;
  }