001package org.nuxeo.drive.service.impl;
002
003import java.util.HashSet;
004import java.util.LinkedHashMap;
005import java.util.Map;
006import java.util.Set;
007
008import org.apache.commons.lang.StringUtils;
009import org.nuxeo.ecm.core.api.IdRef;
010
011/**
012 * Helper to handle synchronization root definitions.
013 *
014 * @author Antoine Taillefer
015 */
016public final class RootDefinitionsHelper {
017
018    private RootDefinitionsHelper() {
019        // Utility class
020    }
021
022    /**
023     * Parses the given synchronization root definitions string.
024     */
025    public static Map<String, Set<IdRef>> parseRootDefinitions(String rootDefinitions) {
026        Map<String, Set<IdRef>> lastActiveRootRefs = new LinkedHashMap<String, Set<IdRef>>();
027        if (rootDefinitions != null) {
028            String[] rootDefinitionComponents = StringUtils.split(rootDefinitions, ",");
029            for (String rootDefinition : rootDefinitionComponents) {
030                String[] rootComponents = StringUtils.split(rootDefinition, ":");
031                String repoName = rootComponents[0].trim();
032                Set<IdRef> refs = lastActiveRootRefs.get(repoName);
033                if (refs == null) {
034                    refs = new HashSet<IdRef>();
035                    lastActiveRootRefs.put(repoName, refs);
036                }
037                refs.add(new IdRef(rootComponents[1].trim()));
038            }
039        }
040        return lastActiveRootRefs;
041    }
042
043}