/** * 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; }
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; }