package org.nocket.gen.domain.visitor.java;
import gengui.domain.AbstractDomainReference;
import java.io.File;
import org.nocket.gen.domain.DMDWebGenContext;
import org.nocket.gen.domain.element.ButtonElement;
import org.nocket.gen.domain.element.CheckboxPropertyElement;
import org.nocket.gen.domain.element.ChoicerPropertyElement;
import org.nocket.gen.domain.element.HeadlineElement;
import org.nocket.gen.domain.element.HiddenPropertyElement;
import org.nocket.gen.domain.element.MultivaluePropertyElement;
import org.nocket.gen.domain.element.ResourceElement;
import org.nocket.gen.domain.element.SimplePropertyElement;
/**
* Generates Java Source gode for Panel or page. No merge functionality. If according class exists, it will
* do nothing.
*
* @author blaz02
*
* @param <E>
*/
public class JavaPanelGeneratorVisitor<E extends AbstractDomainReference> extends AbstractJavaGeneratorVisitor<E> {
protected static final String SUFFIX = "Panel";
public JavaPanelGeneratorVisitor(DMDWebGenContext<E> context) {
super(context);
}
@Override
public void visitSimpleProperty(SimplePropertyElement<E> e) {
}
@Override
public void visitChoicerProperty(ChoicerPropertyElement<E> e) {
}
@Override
public void visitCheckboxProperty(CheckboxPropertyElement<E> e) {
}
@Override
public void visitButton(ButtonElement<E> e) {
}
@Override
public void visitResource(ResourceElement<E> e) {
}
@Override
public void visitFieldsetOpen(HeadlineElement<E> e) {
}
@Override
public void visitMultivalueProperty(MultivaluePropertyElement<E> e) {
}
@Override
public void visitFieldsetClose() {
}
@Override
public void visitHiddenProperty(HiddenPropertyElement<E> e) {
}
@Override
public void finish() {
File outputFile = getOutputJavaFile(getOutputFileName());
if(!outputFile.exists()) {
StringBuilder gen = new StringBuilder();
gen.append("package ").append(getPojoPackageName()).append(";\n");
gen.append("\n").append(getImports()).append("\n");
gen.append("public class ").append(getJavaClassName()).append(" extends Panel {\n\n");
gen.append(INDENT_1).append("private static final long serialVersionUID = 1L;\n");
gen.append("\n");
gen.append(INDENT_1).append("public ").append(getJavaClassName()).append("(String id, final IModel<").append(getPojoClassName()).append("> model) {\n");
gen.append(INDENT_2).append("super(id, model);\n");
gen.append(INDENT_2).append("final GeneratedBinding generatedBinding = new GeneratedBinding(this);\n");
gen.append(INDENT_2).append("generatedBinding.bind();\n");
gen.append(INDENT_1).append("}\n");
gen.append("}\n");
writeToFile(getOutputFileName(), gen);
}
}
protected StringBuilder getImports() {
StringBuilder sb = new StringBuilder();
sb.append("import org.apache.wicket.markup.html.panel.Panel;\n");
sb.append("import org.apache.wicket.model.IModel;\n");
sb.append("import org.nocket.gen.page.GeneratedBinding;\n");
return sb;
}
protected String getJavaClassName() {
return getPojoClassName() + SUFFIX;
}
protected String getOutputFileName() {
return getJavaClassName() + JAVAEXT;
}
}