/**
* Generated from ConstClassTemplate.csp
* Do not edit.
*/
package org.civilian.tool.resbundle;
import java.util.ArrayList;
import java.util.HashSet;
import org.civilian.template.TemplateWriter;
import org.civilian.util.ClassUtil;
import org.civilian.util.DateTime;
class ConstClassTemplate
{
public ConstClassTemplate(ResBundleCompiler.Config config, String packageName, DateTime generationTime, ArrayList<String> ids)
{
this.config = config;
this.packageName = packageName;
this.generationTime = generationTime;
this.ids = ids;
}
public synchronized void print(TemplateWriter out)
{
if (out == null)
throw new IllegalArgumentException("out is null");
this.out = out;
print();
}
protected void print()
{
boolean hasIdClass = config.idClass != null; // line 12: @boolean hasIdClass = config.idClass != null;
String idClassSimple = hasIdClass ? ClassUtil.cutPackageName(config.idClass) : "String"; // line 13: @String idClassSimple = hasIdClass ? ClassUtil.cutPackageName(config.idClass) : "String";
HashSet<String> usedConstants = new HashSet<>(); // line 14: @HashSet<String> usedConstants = new HashSet<>();
StringBuilder s = new StringBuilder(); // line 15: @StringBuilder s = new StringBuilder();
// // line 16: @//
out.print("package "); // line 17: package
out.print(packageName); // line 17: <%packageName%>
out.println(";"); // line 17: ;
out.println();
out.println();
if (hasIdClass && !config.inlineIdClass) // line 20: @if (hasIdClass && !config.inlineIdClass)
{
out.print("import "); // line 21: import
out.print(config.idClass); // line 21: <%config.idClass%>
out.println(";"); // line 21: ;
out.println();
out.println();
}
out.println("/**"); // line 24: /**
out.print(" * Contains constants for resource bundle ids in "); // line 25: * Contains constants for resource bundle ids in
out.print(config.excelFile.getName()); // line 25: <%config.excelFile.getName()%>
out.println("."); // line 25: .
out.print(" * Generated at "); // line 26: * Generated at
out.print(generationTime); // line 26: <%generationTime%>
out.println(". Do not edit directly."); // line 26: . Do not edit directly.
out.println(" */"); // line 27: */
out.print("public interface "); // line 28: public interface
out.print(config.constClass); // line 28: <%config.constClass%>
out.printlnIfNotEmpty();
out.println("{"); // line 29: {
out.increaseTab();
for (String id : ids) // line 30: @for (String id : ids)
{
// javafy key: must be a valid java identifier // line 31: @// javafy key: must be a valid java identifier
// escape key when passed as argument to the MsgKey ctor // line 32: @// escape key when passed as argument to the MsgKey ctor
// keep a list of javafied keys and add _x suffixes if not unique // line 33: @// keep a list of javafied keys and add _x suffixes if not unique
String constantName = getConstantName(id, usedConstants, s); // line 34: @String constantName = getConstantName(id, usedConstants, s);
if (constantName != null) // line 35: @if (constantName != null)
{
out.print("public static final "); // line 36: public static final
out.print(idClassSimple); // line 36: <%idClassSimple%>
out.print(" "); // line 36:
out.print(constantName); // line 36: <%constantName%>
for (int i=id.length(); i<=20; i++) // line 37: @for (int i=id.length(); i<=20; i++)
{
out.print(" "); // line 38:
}
out.print(" = "); // line 39: =
if (hasIdClass) // line 39: <%?hasIdClass%>
{
out.print("new "); // line 39: new
out.print(idClassSimple); // line 39: <%idClassSimple%>
out.print("("); // line 39: (
}
out.print("\""); // line 39: "
out.print(escapeId(id)); // line 39: <%escapeId(id)%>
out.print("\""); // line 39: "
if (hasIdClass) // line 39: <%?hasIdClass%>
{
out.print(")"); // line 39: )
}
out.println(";"); // line 39: ;
}
}
if (config.inlineIdClass) // line 40: @if (config.inlineIdClass)
{
out.println();
out.println();
out.print("public static class "); // line 43: public static class
out.print(idClassSimple); // line 43: <%idClassSimple%>
out.println(" implements CharSequence"); // line 43: implements CharSequence
out.println("{"); // line 44: {
out.increaseTab();
out.print("public "); // line 45: public
out.print(idClassSimple); // line 45: <%idClassSimple%>
out.println("(String value)"); // line 45: (String value)
out.println("{"); // line 46: {
out.increaseTab();
out.println("value_ = value;"); // line 47: value_ = value;
out.decreaseTab();
out.println("}"); // line 48: }
out.println();
out.println("@Override public int length()"); // line 50: @Override public int length()
out.println("{"); // line 51: {
out.increaseTab();
out.println("return value_.length();\");"); // line 52: return value_.length();");
out.decreaseTab();
out.println("}"); // line 53: }
out.println();
out.println("@Override public char charAt(int index)"); // line 55: @Override public char charAt(int index)
out.println("{"); // line 56: {
out.increaseTab();
out.println("return value_.charAt(index);\");"); // line 57: return value_.charAt(index);");
out.decreaseTab();
out.println("}"); // line 58: }
out.println();
out.println("@Override public CharSequence subSequence(int start, int end)"); // line 60: @Override public CharSequence subSequence(int start, int end)
out.println("{"); // line 61: {
out.increaseTab();
out.println("return value_.subSequence(start, end);\");"); // line 62: return value_.subSequence(start, end);");
out.decreaseTab();
out.println("}"); // line 63: }
out.println();
out.println("@Override public String toString()"); // line 65: @Override public String toString()
out.println("{"); // line 66: {
out.increaseTab();
out.println("return value_;"); // line 67: return value_;
out.decreaseTab();
out.println("}"); // line 68: }
out.println();
out.println("private String value_;"); // line 70: private String value_;
out.decreaseTab();
out.println("}"); // line 71: }
}
out.decreaseTab();
out.println("}"); // line 72: }
}
private String getConstantName(String id, HashSet<String> usedConstants, StringBuilder s)
{
int length = id.length();
if (length == 0)
return null;
if (!Character.isJavaIdentifierStart(id.charAt(0)))
return null;
s.setLength(0);
for (int i=0; i<length; i++)
{
char c = id.charAt(i);
if (!Character.isJavaIdentifierPart(c))
c = '_';
s.append(c);
}
String constantName = s.toString();
if (usedConstants.contains(constantName))
return null;
usedConstants.add(constantName);
return constantName;
}
private String escapeId(String id)
{
return id.replace("\\", "\\\\").replace("\"", "\\\"");
}
private ResBundleCompiler.Config config;
private String packageName;
private DateTime generationTime;
private ArrayList<String> ids;
protected TemplateWriter out;
}