1 package org.kite9.diagram.builders;
2
3 import java.lang.reflect.Field;
4 import java.lang.reflect.Modifier;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 import org.kite9.framework.model.ProjectModel;
9
10 public class FieldBuilder extends AbstractAnnotatedElementBuilder<Field>{
11
12 public FieldBuilder(List<Tie<? extends Object, Field>> ties,ProjectModel model) {
13 super(ties, model);
14 }
15
16 public FieldBuilder show(Format f ) {
17 return (FieldBuilder) super.show(f);
18 }
19
20
21 public FieldBuilder showType(Format f) {
22 for (Tie<? extends Object, Field> m : ties) {
23 f.write(m.getObject(), HasRelationship.TYPE, m.getObject().getGenericType());
24 }
25 return this;
26 }
27
28
29 public ClassBuilder withType(Format f) {
30 List<Tie<? extends Object, Class<?>>> ties = new ArrayList<Tie<? extends Object, Class<?>>>();
31
32 for (Field m : allElements) {
33 ties.add(new Tie<Field, Class<?>>(m, HasRelationship.TYPE, m.getType()));
34 }
35 return new ClassBuilder(ties, model);
36 }
37
38 public FieldBuilder showVisibility(Format f) {
39 for (Tie<? extends Object, Field> m : ties) {
40 if (Modifier.isPublic(m.getObject().getModifiers())) {
41 f.write(m.getObject(), HasRelationship.VISIBILITY, new JavaModifier("public"));
42 } else if (Modifier.isPrivate(m.getObject().getModifiers())) {
43 f.write(m.getObject(), HasRelationship.VISIBILITY, new JavaModifier("private"));
44 } else if (Modifier.isProtected(m.getObject().getModifiers())) {
45 f.write(m.getObject(), HasRelationship.VISIBILITY, new JavaModifier("protected"));
46 }
47 }
48 return this;
49 }
50
51 @Override
52 public FieldBuilder reduce(Filter<? super Field> f) {
53 return new FieldBuilder(reduceInner(f), model);
54 }
55 }