package jdepend.util.analyzer.element.layer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import jdepend.metadata.JavaClass;
import jdepend.metadata.JavaPackage;
import jdepend.model.Component;
import jdepend.model.ComponentException;
import jdepend.model.JavaClassUnit;
import jdepend.model.component.PrefixComponent;
public final class JEELayer extends PrefixComponent {
/**
*
*/
private static final long serialVersionUID = -3007782209744031746L;
private List<LayerType> layerTypes = new ArrayList<LayerType>();
private LayerType layerType;
public JEELayer() {
}
public JEELayer(List<LayerInfo> layerInfos) {
super();
for (LayerInfo layerInfo : layerInfos) {
layerTypes.add(new LayerType(layerInfo));
}
}
public JEELayer(String name, LayerType layerType) {
super(name);
this.layerType = layerType;
}
@Override
protected List<Component> doList(Collection<JavaPackage> javaPackages) throws ComponentException {
List<Component> layers = new ArrayList<Component>();
for (LayerType layerType : layerTypes) {
layers.add(new JEELayer(layerType.getName(), layerType));
}
for (JavaPackage javaPackage : javaPackages) {
for (Component layer : layers) {
if (((JEELayer) layer).isMember(javaPackage)) {
for (JavaClass javaClass : javaPackage.getClasses()) {
layer.addJavaClass(new JavaClassUnit(javaClass));
}
}
}
}
return layers;
}
@Override
public boolean isMember(JavaPackage javaPackage) {
return this.layerType.isMember(javaPackage);
}
}