Skip to content

Method: writeAspectClass(GenAspect, File)

1: package de.fhdw.wtf.generator.writer.writer;
2:
3: import java.io.File;
4: import java.util.ArrayList;
5: import java.util.Collection;
6: import java.util.HashMap;
7: import java.util.Vector;
8:
9: import org.apache.velocity.context.Context;
10:
11: import de.fhdw.wtf.generator.java.generatorModel.GenAspect;
12: import de.fhdw.wtf.generator.java.generatorModel.GenClass;
13: import de.fhdw.wtf.generator.java.generatorModel.GenDeclareInheritance;
14: import de.fhdw.wtf.generator.java.generatorModel.GenJavaOperation;
15:
16: public class JavaAspectClassFileWriter extends ClassClassFileWriter {
17:         
18:         private static final String TEMPLATE_FILE_NAME = "de/fhdw/wtf/generator/templates/aspectclass.vm";
19:         private static final String DECLARE_PARENTS_IMPL_KEY = "declareParentsImpl";
20:         private static final String SUBTYPE_KEY = "subType";
21:         private static final String SUPERTYPE_KEY = "superType";
22:         
23:         public JavaAspectClassFileWriter(final boolean fullyQualified) {
24:                 super(TEMPLATE_FILE_NAME, fullyQualified);
25:         }
26:         
27:         public void writeAspectClass(final GenAspect c, final File rootdir) {
28:                 this.writeClassClass(c);
29:                 this.setUpContext(c, this.getCurrentContext());
30:                 this.writeToFile(c, rootdir);
31:         }
32:         
33:         private void setUpContext(final GenAspect c, final Context currentContext) {
34:                 this.setAttributes(c, currentContext);
35:                 this.setOperations(c, currentContext);
36:                 this.setdeclareParents(c, currentContext);
37:         }
38:         
39:         private void setdeclareParents(final GenAspect c, final Context currentContext) {
40:                 final Vector<HashMap<String, String>> declares = new Vector<>();
41:                 for (final GenDeclareInheritance declare : c.getDeclareParents()) {
42:                         final HashMap<String, String> currentDeclare = new HashMap<>();
43:                         currentDeclare.put(SUBTYPE_KEY, this.typeToString(declare.getSubClass()));
44:                         currentDeclare.put(SUPERTYPE_KEY, this.typeToString(declare.getSuperClass()));
45:                         declares.add(currentDeclare);
46:                 }
47:                 currentContext.put(DECLARE_PARENTS_IMPL_KEY, declares);
48:         }
49:         
50:         private void setOperations(final GenAspect c, final Context currentContext) {
51:                 currentContext.put(PARSED_OPERATIONS_KEY, this.getParsedOperations(c.getAllOperations()));
52:                 final Collection<GenJavaOperation> operationsWithSimple = new ArrayList<>();
53:                 operationsWithSimple.addAll(c.getOperations());
54:                 operationsWithSimple.addAll(c.getConstructors());
55:                 currentContext.put(SIMPLE_OPERATIONS_KEY, this.getSimpleOperations(operationsWithSimple));
56:         }
57:         
58:         private void setAttributes(final GenAspect c, final Context currentContext) {
59:                 currentContext.put(ATTRIBUTES_KEY, this.getAttributes(c.getAllAttributes()));
60:         }
61:         
62:         @Override
63:         public String getStringContent(final GenClass c) {
64:                 final GenAspect cAsGenUserClass = (GenAspect) c;
65:                 this.writeClassClass(cAsGenUserClass);
66:                 this.setUpContext(cAsGenUserClass, this.getCurrentContext());
67:                 return this.writeToString();
68:         }
69: }