package jdepend.model.component.modelconf; import java.util.Collection; import java.util.List; import jdepend.metadata.Candidate; import jdepend.metadata.JavaPackage; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; public class JavaPackageComponentModelConf extends ComponentModelConf { private static final long serialVersionUID = 5051041678062375195L; private transient JavaPackageComponentModelConfRepo repo = new JavaPackageComponentModelConfRepo(); public JavaPackageComponentModelConf() { } public JavaPackageComponentModelConf(String name) { super(name); } /** * 增加一个组件配置 * * @param name * @param layer * @param packages * @throws ComponentConfException */ @Override public void addComponentConf(String name, int layer, List<String> packageNames) throws ComponentConfException { if (name == null || name.length() == 0) throw new ComponentConfException("没有给定组件名!"); if (this.contains(name)) throw new ComponentConfException("组件名重复!"); for (ComponentConf componentConf : this.getComponentConfs()) { for (String packageName : packageNames) { if (componentConf.getItemIds().contains(packageName)) { throw new ComponentConfException("该组件名选择的包[" + packageName + "]已经在组件[" + componentConf.getName() + "]中包含!"); } } } JavaPackageComponentConf componentConf = new JavaPackageComponentConf(name, packageNames); componentConf.setLayer(layer); this.addComponentConf(componentConf); } @Override public JavaPackageComponentModelConf clone() throws CloneNotSupportedException { JavaPackageComponentModelConf conf = new JavaPackageComponentModelConf(this.getName()); for (String ignoreItem : this.getIgnoreItems()) { conf.addIgnoreItem(ignoreItem); } for (ComponentConf componentConf : this.getComponentConfs()) { conf.addComponentConf(componentConf.clone()); } return conf; } @Override public Element save(Document document) { return this.repo.save(document, this); } @Override public JavaPackageComponentModelConf load(Node componentModel) throws ComponentConfException { return this.repo.load(componentModel); } @Override public Collection<? extends Candidate> getCandidates(Collection<JavaPackage> packages) { return packages; } }