package jdepend.client.core.command;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import jdepend.metadata.JavaClass;
import jdepend.metadata.JavaPackage;
import jdepend.model.Component;
import jdepend.model.ComponentException;
import jdepend.model.JavaClassUnit;
/**
* 由args设置的Component
*
* @author <b>Abner</b>
*
*/
public final class SimpleComponent extends Component {
/**
*
*/
private static final long serialVersionUID = 3612255931574478103L;
private List<String> componentNames;
public SimpleComponent() {
super();
}
public SimpleComponent(String name) {
super(name);
}
public void setComponentNames(List<String> componentNames) {
this.componentNames = componentNames;
}
@Override
protected List<Component> doList(Collection<JavaPackage> javaPackages) throws ComponentException {
List<Component> components = new ArrayList<Component>();
SimpleComponent component;
for (String componentName : componentNames) {
component = new SimpleComponent(componentName);
component.setTitle(componentName);
for (JavaPackage javaPackage : javaPackages) {
if (javaPackage.getName().startsWith(componentName + ".")
|| javaPackage.getName().startsWith(componentName)) {
for (JavaClass javaClass : javaPackage.getClasses()) {
component.addJavaClass(new JavaClassUnit(javaClass));
}
}
}
components.add(component);
}
return components;
}
@Override
public Component clone(Map<String, JavaClassUnit> javaClasses) throws ComponentException {
SimpleComponent obj = (SimpleComponent) super.clone(javaClasses);
obj.setComponentNames(this.componentNames);
return obj;
}
/**
* Sets the list of components.
*
* @param components
* Comma-separated list of components.
*/
public static SimpleComponent calSimpleComponent(String components, String split) {
List<String> componentLists = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(components, split);
while (st.hasMoreTokens()) {
String component = st.nextToken();
componentLists.add(component);
}
if (componentLists.size() == 0) {
return null;
} else {
SimpleComponent sc = new SimpleComponent();
sc.setComponentNames(componentLists);
return sc;
}
}
}