package jdepend.util.refactor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import jdepend.metadata.JavaPackage;
import jdepend.model.Component;
import jdepend.model.ComponentException;
import jdepend.model.JDependUnitMgr;
import jdepend.model.JavaClassUnit;
public final class UniteComponent extends Component {
/**
*
*/
private static final long serialVersionUID = 2809762258520777271L;
private Collection<String> subComponents = new ArrayList<String>();
public UniteComponent() {
super();
}
public UniteComponent(String name) {
super(name);
}
@Override
protected List<Component> doList(Collection<JavaPackage> javaPackages) throws ComponentException {
throw new ComponentException("合并组件不进行组件的识别");
}
public Collection<String> getSubComponents() {
return subComponents;
}
public void setSubComponents(Collection<String> subComponents) {
this.subComponents = subComponents;
}
public void unite() {
Component component;
for (String componentName : subComponents) {
component = JDependUnitMgr.getInstance().getResult().getTheComponent(componentName);
for (JavaClassUnit javaClass : component.getClasses()) {
this.addJavaClass(javaClass);
}
}
}
@Override
public Component clone(Map<String, JavaClassUnit> javaClasses) throws ComponentException {
UniteComponent obj = (UniteComponent) super.clone(javaClasses);
obj.setSubComponents(this.subComponents);
return obj;
}
}