|
@@ -0,0 +1,114 @@
|
|
|
+package org.geek.szbay.assistant.code.generator;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.net.URL;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import org.apache.commons.io.FileUtils;
|
|
|
+
|
|
|
+public class UpdateFtlMaker {
|
|
|
+
|
|
|
+ public static String parseList(String tableComment, String keyName, List<String> attrNames, List<String> colTypes,
|
|
|
+ List<String> colComments) {
|
|
|
+ ClassLoader classLoader = UpdateFtlMaker.class.getClassLoader();
|
|
|
+ URL url = classLoader.getResource("list.ftl");
|
|
|
+ System.out.println(url.getFile());
|
|
|
+ String fileContent = null;
|
|
|
+ try {
|
|
|
+ fileContent = FileUtils.readFileToString(new File(url.getFile()), "utf-8");
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ StringBuilder sb1 = new StringBuilder();
|
|
|
+ StringBuilder sb2 = new StringBuilder();
|
|
|
+ sb1.append(
|
|
|
+ "\t\t\t\t\t\t\t\t\t<th><input type=\"button\" value=\"全选\" onclick=\"multiSelectCheck()\" /></th>\r\n");
|
|
|
+ sb2.append("\t\t\t\t\t\t\t\t\t<td><input type=\"checkbox\" name=\"multiSelect\" value=\"${item." + keyName
|
|
|
+ + "}\" /></td>\r\n");
|
|
|
+ sb1.append("\t\t\t\t\t\t\t\t\t<th>序号</th>\r\n");
|
|
|
+ sb2.append(String.format(
|
|
|
+ "\t\t\t\t\t\t\t\t\t<td>${item_index+1}<input type=\"hidden\" name=\"%s\" value=\"${item.%s}\" /></td>\r\n",
|
|
|
+ keyName, keyName));
|
|
|
+ int size = attrNames.size();
|
|
|
+ for (int i = 0; i < size; i++) {
|
|
|
+ String attrName = attrNames.get(i);
|
|
|
+ String attrDescr = colComments.get(i);
|
|
|
+ String attrType = colTypes.get(i);
|
|
|
+
|
|
|
+ if (attrName.equals(keyName)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ sb1.append(String.format("\t\t\t\t\t\t\t\t\t<th>%s</th>\r\n", attrDescr));
|
|
|
+ if (attrType.contains("Date")) {
|
|
|
+ sb2.append(String.format("\t\t\t\t\t\t\t\t\t<th>${(item.%s?string('yyyy-MM-dd HH:mm:ss'))!}</th>\r\n",
|
|
|
+ attrName));
|
|
|
+ } else {
|
|
|
+ sb2.append(String.format(
|
|
|
+ "\t\t\t\t\t\t\t\t\t<td><#if globalDict['%s']?exists && globalDict['%s'][item.%s]?exists> ${globalDict['%s'][item.%s]!} <#else> ${item.%s!} </#if></td>\r\n",
|
|
|
+ attrName, attrName, attrName, attrName, attrName, attrName));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sb1.append("\t\t\t\t\t\t\t\t\t<th>操作</th>");
|
|
|
+ sb2.append(String.format(
|
|
|
+ "\t\t\t\t\t\t\t\t\t<td><a href=\"###\" onclick=\"showModal('updatePage?%s=${item.%s}')\">编辑</a></td>",
|
|
|
+ keyName, keyName));
|
|
|
+ return String.format(fileContent, sb1.toString(), sb2.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String parse(boolean update, String tableComment, String keyName, List<String> attrNames,
|
|
|
+ List<String> colTypes, List<String> colComments) {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append(String.format("<form title=\"%s\" class=\"form-horizontal \">\r\n", update ? "更新" : "添加"));
|
|
|
+ int size = attrNames.size();
|
|
|
+ for (int i = 0; i < size; i++) {
|
|
|
+ String attrName = attrNames.get(i);
|
|
|
+ if ((attrName.contains("createdOn") || attrName.contains("modifiedOn"))
|
|
|
+ && colTypes.get(i).contains("Date")) {
|
|
|
+ continue;
|
|
|
+ } else if (keyName.equals(attrNames.get(i)) && update) {
|
|
|
+ sb.append(String.format(
|
|
|
+ "\t<input id=\"updateKey\" type=\"hidden\" name=\"%s\" value=\"${ret.model.%s!}\" />\r\n",
|
|
|
+ attrName, attrName));
|
|
|
+ } else {
|
|
|
+ sb.append("\t<div class=\"form-group row\">\r\n");
|
|
|
+
|
|
|
+ sb.append(String.format("\t\t<label class=\"col-md-3 form-control-label\" for=\"%s\">%s</label>\r\n",
|
|
|
+ attrName, colComments.get(i)));
|
|
|
+
|
|
|
+ sb.append("\t\t<div class=\"col-md-9\">\r\n");
|
|
|
+
|
|
|
+ if (colTypes.get(i).contains("Date")) {
|
|
|
+ sb.append(String.format(
|
|
|
+ "\t\t\t<input type=\"text\" class=\"form-control\" name=\"%s\" value=\"%s\" />\r\n",
|
|
|
+ attrName,
|
|
|
+ update ? String.format("${(item.%s?string('yyyy-MM-dd HH:mm:ss'))!}", attrName) : ""));
|
|
|
+ } else {
|
|
|
+ sb.append(String.format(
|
|
|
+ "\t\t\t<#if globalDict['%s']?exists> <select class=\"form-control\" name=\"%s\">\r\n",
|
|
|
+ attrName, attrName));
|
|
|
+
|
|
|
+ sb.append(String.format("\t\t\t\t<#list globalDict['%s']?keys as key>\r\n", attrName));
|
|
|
+
|
|
|
+ sb.append(String.format("\t\t\t\t<option value=\"${key}\"%s>${globalDict['%s'][key]!}</option>\r\n",
|
|
|
+ update ? (" ${(key==ret.model." + attrName + ")?string( 'selected=\"selected\"','')}") : "",
|
|
|
+ attrName));
|
|
|
+
|
|
|
+ sb.append("\t\t\t\t</#list>\r\n");
|
|
|
+
|
|
|
+ sb.append(String.format(
|
|
|
+ "\t\t\t</select> <#else /> <input type=\"text\" class=\"form-control\" name=\"%s\" value=\"%s\" /> </#if>\r\n",
|
|
|
+ attrName, update ? "${ret.model." + attrName + "!}" : ""));
|
|
|
+ }
|
|
|
+
|
|
|
+ sb.append("\t\t</div>\r\n");
|
|
|
+ sb.append("\t</div>\r\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ sb.append("</form>\r\n");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|