package restx.build; import java.util.*; /** * User: xavierhanin * Date: 4/14/13 * Time: 2:07 PM */ public class ModuleDescriptor { private final GAV parent; private final GAV gav; private final String packaging; private final Map<String,String> properties; private final Map<String, List<ModuleFragment>> fragments; private final Map<String, List<ModuleDependency>> dependencies; public ModuleDescriptor(GAV parent, GAV gav, String packaging, Map<String, String> properties, Map<String, List<ModuleFragment>> fragments, Map<String, List<ModuleDependency>> dependencies) { this.parent = parent; this.gav = gav; this.packaging = packaging; this.fragments = Collections.unmodifiableMap(fragments); this.properties = Collections.unmodifiableMap(properties); this.dependencies = Collections.unmodifiableMap(dependencies); } public GAV getParent() { return parent; } public GAV getGav() { return gav; } public String getPackaging() { return packaging; } public Map<String,String> getProperties() { return properties; } public Set<String> getDependencyScopes() { return dependencies.keySet(); } public List<ModuleDependency> getDependencies(String scope) { return dependencies.get(scope); } public List<ModuleFragment> getFragments(String s) { List<ModuleFragment> moduleFragments = fragments.get(s); return moduleFragments == null ? Collections.<ModuleFragment>emptyList() : moduleFragments; } public ModuleDescriptor concatDependency(String scope, ModuleDependency dep) { LinkedHashMap<String, List<ModuleDependency>> newDeps = new LinkedHashMap<>(dependencies); if (!newDeps.containsKey(scope)) { newDeps.put(scope, new ArrayList<ModuleDependency>()); } else { newDeps.put(scope, new ArrayList<ModuleDependency>(newDeps.get(scope))); } newDeps.get(scope).add(dep); return new ModuleDescriptor(parent, gav, packaging, properties, fragments, newDeps); } public boolean hasClassifier() { for (String scope : this.getDependencyScopes()) { for (ModuleDependency dependency : this.getDependencies(scope)) { if (dependency.getGav().getClassifier()!=null) { return true; } } } return false; } }