
de.larmic.butterfaces.component.showcase.example.EnumCodeExample Maven / Gradle / Ivy
package de.larmic.butterfaces.component.showcase.example;
import java.util.ArrayList;
import java.util.List;
import de.larmic.butterfaces.component.partrenderer.StringUtils;
/**
* Created by larmic on 12.12.14.
*/
public class EnumCodeExample extends AbstractCodeExample {
private final StringBuilder innerContent = new StringBuilder();
private final List imports = new ArrayList<>();
private final List interfaces = new ArrayList<>();
private final String subPackage;
private final String className;
private final String classAnnotation;
public EnumCodeExample(final String tabName,
final String tabId,
final String subPackage,
final String className,
final String classAnnotation) {
super(tabName, tabId);
this.subPackage = subPackage;
this.className = className;
this.classAnnotation = classAnnotation;
}
@Override
public String getPrettyPrintLang() {
return "lang-java";
}
public boolean addImport(final String anImport) {
return imports.add(anImport);
}
public boolean addInterfaces(String anInterface) {
return interfaces.add(" " + anInterface);
}
public StringBuilder appendInnerContent(final String content) {
return this.appendInnerContent(content, true);
}
public StringBuilder appendInnerContent(final String content, final boolean lineBreak) {
if (lineBreak) {
return innerContent.append(content).append("\n");
} else {
return innerContent.append(content);
}
}
public String toString() {
final StringBuilder stringBuilder = new StringBuilder();
this.buildPackage(stringBuilder);
this.buildImports(stringBuilder);
this.buildClassAnnotations(stringBuilder);
this.buildClassDefinition(stringBuilder);
stringBuilder.append(innerContent.toString());
stringBuilder.append("\n}");
return stringBuilder.toString();
}
private void buildClassDefinition(StringBuilder stringBuilder) {
stringBuilder.append("public enum ");
stringBuilder.append(className);
if (!interfaces.isEmpty()) {
stringBuilder.append(" implements");
}
stringBuilder.append(StringUtils.joinWithCommaSeparator(interfaces));
stringBuilder.append(" {\n\n");
}
private void buildClassAnnotations(StringBuilder stringBuilder) {
if (classAnnotation != null) {
stringBuilder.append(classAnnotation + "\n");
}
}
private void buildImports(StringBuilder stringBuilder) {
for (String anImport : imports) {
if (StringUtils.isEmpty(anImport)) {
stringBuilder.append("\n");
} else {
stringBuilder.append("import ");
stringBuilder.append(anImport);
stringBuilder.append(";\n");
}
}
// build empty line after imports
if (!imports.isEmpty()) {
stringBuilder.append("\n");
}
}
private void buildPackage(StringBuilder stringBuilder) {
stringBuilder.append("package de.larmic.");
stringBuilder.append(subPackage);
stringBuilder.append(";\n\n");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy