View Javadoc

1   package org.kite9.diagram.builders;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import java.util.Set;
6   
7   import org.kite9.framework.model.MemberHandle;
8   import org.kite9.framework.model.ProjectModel;
9   
10  public class PackageBuilder extends AbstractAnnotatedElementBuilder<Package> {
11         
12      public PackageBuilder(List<Tie<? extends Object, Package>> packages, ProjectModel model) {
13  	super(packages, model);
14      }
15      
16      public PackageBuilder show(Format f ) {
17  	return (PackageBuilder) super.show(f);
18      }
19  
20      
21      public ClassBuilder withMembers(Class<?>... classes) {
22  	List<Tie<? extends Object, Class<?>>> ties = new ArrayList<Tie<? extends Object,Class<?>>>(classes.length);
23  	for (Class<?> c : classes) {
24  	    Package p = c.getPackage();
25  	    if (allElements.contains(p)) {
26  		ties.add(new Tie<Object, Class<?>>(p, HasRelationship.CLASS, c));
27  	    }
28  	}
29  	ClassBuilder ch = new ClassBuilder(ties, model);
30  	return ch;
31      }
32      
33      public ClassBuilder withMemberClasses(Filter<? super Class<?>> f) {
34  	List<Tie<? extends Object, Class<?>>> ties = new ArrayList<Tie<? extends Object,Class<?>>>(10);
35  	final ClassLoader cl = Thread.currentThread().getContextClassLoader();
36  
37  	for (Package p : allElements) {
38  	    Set<String> classNames = model.getClassesInPackage(MemberHandle.convertPackageName(p));
39  	    for (Class<?> c : MemberHandle.hydrateClasses(classNames, cl)) {
40  		if ((f==null) || (f.accept(c))) {
41  		    ties.add(new Tie<Object, Class<?>>(p, HasRelationship.CLASS, c));
42  		}
43  	    }
44  	}
45  	ClassBuilder ch = new ClassBuilder(ties, model);
46  	return ch;	
47      }
48      
49      @Override
50      public PackageBuilder reduce(Filter<? super Package> f) {
51  	return new PackageBuilder(reduceInner(f), model);
52      }
53  }