package org.nocket.gen.domain.visitor.java; import java.io.File; import java.io.IOException; import gengui.domain.AbstractDomainReference; import gengui.util.SevereGUIException; import org.apache.commons.io.FileUtils; import org.nocket.gen.domain.DMDWebGenContext; import org.nocket.gen.domain.visitor.AbstractDomainElementVisitor; abstract public class AbstractJavaGeneratorVisitor<E extends AbstractDomainReference> extends AbstractDomainElementVisitor<E> { protected static final String INDENT_1 = "\t"; protected static final String INDENT_2 = "\t\t"; protected static final String JAVAEXT = ".java"; public AbstractJavaGeneratorVisitor(DMDWebGenContext<E> context) { super(context); } protected String getPojoClassName() { return getContext().getFileAndClassNameStrategy().getJavaClassNamePart(); } protected String getPojoPackageName() { return getContext().getFileAndClassNameStrategy().getJavaClassPackageName(); } protected File getOutputJavaFile(String fileName) { String path = getContext().getGenDir() + File.separator + getContext().getFileAndClassNameStrategy().getJavaClassPackageNameAsPath() + File.separator + fileName; return new File(path); } protected void writeToFile(String fileName, StringBuilder sb) { try { File output = getOutputJavaFile(fileName); FileUtils.deleteQuietly(output); FileUtils.forceMkdir(output.getParentFile()); FileUtils.writeStringToFile(output, sb.toString()); } catch (IOException e) { throw new SevereGUIException(e); } } abstract protected String getJavaClassName(); abstract protected String getOutputFileName(); }