package net.sf.minuteProject.configuration.bean.enumeration; import net.sf.minuteProject.configuration.bean.Template; import net.sf.minuteProject.utils.LicenceUtils; import org.apache.commons.lang.StringUtils; public enum Extension implements FileComment { java { public String lineCommentBeginning() { return "//"; } public String lineCommentEnding() { return ""; } public String textCommentBeginning() { return "/**"; } public String textCommentMiddle() { return "*"; } public String textCommentEnding() { return "*/"; } public boolean licenceAtBeginning() { return true; } }, groovy { public String lineCommentBeginning() { return "//"; } public String lineCommentEnding() { return ""; } public String textCommentBeginning() { return "/**"; } public String textCommentMiddle() { return "*"; } public String textCommentEnding() { return "*/"; } public boolean licenceAtBeginning() { return true; } }, xml { public String lineCommentBeginning() { return "<!--"; } public String lineCommentEnding() { return "-->"; } public String textCommentBeginning() { return "<!--"; } public String textCommentMiddle() { return ""; } public String textCommentEnding() { return "-->"; } public boolean licenceAtBeginning() { return false; } }, xsd { public String lineCommentBeginning() { return "<!--"; } public String lineCommentEnding() { return "-->"; } public String textCommentBeginning() { return "<!--"; } public String textCommentMiddle() { return ""; } public String textCommentEnding() { return "-->"; } public boolean licenceAtBeginning() { return false; } }, properties { public String lineCommentBeginning() { return "#"; } public String lineCommentEnding() { return ""; } public String textCommentBeginning() { return "#"; } public String textCommentMiddle() { return "#"; } public String textCommentEnding() { return "#"; } public boolean licenceAtBeginning() { return true; } }, sql { public String lineCommentBeginning() { return "--"; } public String lineCommentEnding() { return ""; } public String textCommentBeginning() { return "/*"; } public String textCommentMiddle() { return ""; } public String textCommentEnding() { return "*/"; } public boolean licenceAtBeginning() { return true; } }; private static final String CRLF = "\n"; private String licence; public String getLicence() { if (licence==null) { licence = format(LicenceUtils.getLicence()); } return licence; } public String format (String text) { if (text==null) return null; String[] lines = StringUtils.split(text, CRLF); if (lines.length==0) return null; if (lines.length==1) return formatLine(lines[0]); return formatText(lines); } private String formatText(String[] lines) { StringBuffer sb = new StringBuffer(); sb.append(textCommentBeginning()+CRLF); for (int i = 0; i < lines.length; i++) { sb.append("\t"+textCommentMiddle()+lines[i]+CRLF); } sb.append(textCommentEnding()+CRLF); return sb.toString(); } private String formatLine(String string) { return lineCommentBeginning()+string+lineCommentEnding(); } public static Extension fromValue(String v) { for (Extension c : Extension.values()) { if (c.toString().equals(v)) { return c; } } return null; } //UGLY but for groovy compile... public String lineCommentBeginning() { return ""; } public String lineCommentEnding() { return ""; } public boolean licenceAtBeginning() { return false; } }