package com.constellio.model.services.taxonomies; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.jdom2.Document; import org.jdom2.Element; import com.constellio.model.entities.Taxonomy; public class TaxonomiesReader { private static final String DISABLES = "disables"; private static final String TITLE = "title"; private static final String CODE = "code"; private static final String USER_IDS = "userIds"; private static final String GROUP_IDS = "groupIds"; private static final String VISIBLE_IN_HOME_PAGE = "visibleInHomePage"; private static final String SHOW_PARENTS_IN_SEARCH_RESULTS = "showParentsInSearchResults"; private static final String COLLECTION = "collection"; private static final String ENABLES = "enables"; private static final String SCHEMA_TYPES = "schemaTypes"; private final Document document; public TaxonomiesReader(Document document) { this.document = document; } public String readPrincipalCode() { return document.getRootElement().getAttributeValue("principal"); } public List<Taxonomy> readEnables() { List<Taxonomy> taxonomies = new ArrayList<>(); Element enablesElement = document.getRootElement().getChild(ENABLES); for (Element taxonomyElement : enablesElement.getChildren()) { Taxonomy taxonomy = readTaxonomy(taxonomyElement); taxonomies.add(taxonomy); } return taxonomies; } public List<Taxonomy> readDisables() { List<Taxonomy> taxonomies = new ArrayList<>(); Element enablesElement = document.getRootElement().getChild(DISABLES); for (Element taxonomyElement : enablesElement.getChildren()) { Taxonomy taxonomy = readTaxonomy(taxonomyElement); taxonomies.add(taxonomy); } return taxonomies; } private Taxonomy readTaxonomy(Element taxonomyElement) { String code = taxonomyElement.getAttributeValue(CODE); String title = taxonomyElement.getChildText(TITLE); String collection = taxonomyElement.getChildText(COLLECTION); List<String> userIds = toIdsList(taxonomyElement.getChildText(USER_IDS)); List<String> groupIds = toIdsList(taxonomyElement.getChildText(GROUP_IDS)); boolean visibleInHomePage = "true".equals(taxonomyElement.getChildText(VISIBLE_IN_HOME_PAGE)); boolean showParents = "true".equals(taxonomyElement.getChildText(SHOW_PARENTS_IN_SEARCH_RESULTS)); List<String> taxonomySchemaTypes = new ArrayList<>(); for (Element schemaTypeElement : taxonomyElement.getChild(SCHEMA_TYPES).getChildren()) { taxonomySchemaTypes.add(schemaTypeElement.getText()); } return new Taxonomy(code, title, collection, visibleInHomePage, userIds, groupIds, taxonomySchemaTypes, showParents); } private List<String> toIdsList(String idsStr) { List<String> ids; if (StringUtils.isNotBlank(idsStr)) { ids = asList(idsStr.split(",")); } else { ids = Collections.emptyList(); } return ids; } }