package ilarkesto.mda.generator; import ilarkesto.mda.model.Node; import ilarkesto.mda.model.NodeTypes; public class GwtComponentBaseGenerator extends AJavaClassGenerator implements NodeTypes { private Node component; private Node package_; private Node gwtModule; public GwtComponentBaseGenerator(String srcPath, Node component) { super(srcPath, true); this.component = component; package_ = component.getSuperparentByType(Package); assert package_ != null; gwtModule = package_.getSuperparentByType(GwtModule); assert gwtModule != null; } @Override protected void printCode(JavaPrinter out) { out.package_(getPackageName()); out.beginClass(true, getClassName(), null, null); out.loggerByClassName(component.getValue()); for (Node initProc : component.getChildrenByType(InitializationProcedure)) { printInitializationProcedure(out, initProc); } for (Node dependency : component.getChildrenByType(Dependency)) { printDependency(out, dependency); } out.toStringMethod('"' + component.getValue() + '"'); out.endClass(); } private void printInitializationProcedure(JavaPrinter out, Node initProc) { out.abstractMethod("void", initProc.getValue(), null); } private void printDependency(JavaPrinter out, Node dependency) { out.protectedField(getDependencyType(dependency), dependency.getValue()); } private String getClassName() { return "G" + component.getValue(); } private String getPackageName() { String packageName = getBasePackageName() + "." + package_.getValue(); return packageName; } private String getBasePackageName() { return gwtModule.getValue().toLowerCase() + ".client"; } }