package jdepend.knowledge.architectpattern.domain; import java.util.Collection; import java.util.HashSet; import java.util.List; import jdepend.metadata.JavaPackage; import jdepend.model.Component; import jdepend.model.ComponentException; import jdepend.model.Relation; /** * 去除了干扰关系的组件 * * @author user * */ public class IdealComponent extends Component { private Component component; public IdealComponent(Component component) { super(component.getName()); this.component = component; } public Component getOriginalComponent() { return component; } @Override protected List<Component> doList(Collection<JavaPackage> javaPackages) throws ComponentException { throw new ComponentException("理想组件不进行组件的识别"); } @Override public synchronized Collection<Component> getAfferents() { if (this.afferents == null) { this.afferents = new HashSet<Component>(); for (Relation relation : component.getRelations()) { if (relation.isNormality() && relation.getDepend().getComponent().equals(component)) { this.afferents.add(relation.getCurrent().getComponent()); } } } return this.afferents; } @Override public synchronized Collection<Component> getEfferents() { if (this.efferents == null) { this.efferents = new HashSet<Component>(); for (Relation relation : component.getRelations()) { if (relation.isNormality() && relation.getCurrent().getComponent().equals(component)) { this.efferents.add(relation.getDepend().getComponent()); } } } return this.efferents; } @Override public String getName() { return component.getName(); } @Override public String toString() { return component.toString(); } }