public class Generator {
private static final String FORMAT_ERROR = "数据格式错误";
private static final String QUOTATION_MARK = "\"";
private static final String RESULT_PREFIX = "<result property=";
private static final String RESULT_COLUMN = " column=";
private static final String RESULT_JDBCTYPE = " jdbcType=";
private static final String RESULT_SUFFIX = "/>";
private static Map<String, String> jdbcTypeMap;
public static String singleResultMapGenerator(String formatData) {
if (formatData == null || formatData.length() == 0) return formatData;
String[] splits = formatData.split(" ");
if (splits.length < 2) return FORMAT_ERROR;
initJdbcTypeMap();
StringBuilder result = new StringBuilder(RESULT_PREFIX);
splits[splits.length - 1] = splits[splits.length - 1].substring(0, splits[splits.length - 1].length() - 1);
result.append(QUOTATION_MARK).append(splits[splits.length - 1]).append(QUOTATION_MARK)
.append(RESULT_COLUMN).append(QUOTATION_MARK).append(humpConvertUnderline(splits[splits.length - 1])).append(QUOTATION_MARK);
if (!jdbcTypeMap.containsKey(splits[splits.length - 2])) {
return FORMAT_ERROR;
}
result.append(RESULT_JDBCTYPE).append(QUOTATION_MARK).append(jdbcTypeMap.get(splits[splits.length - 2])).append(QUOTATION_MARK)
.append(RESULT_SUFFIX);
return result.toString();
}
public static String multiResultMapGenerator(String formatData) {
if (formatData == null || formatData.length() == 0) return formatData;
String[] splits = formatData.split("\n");
StringBuilder result = new StringBuilder();
for (String s : splits) {
result.append(singleResultMapGenerator(s)).append("\n");
}
return result.toString();
}
public static void main(String[] args) {
System.out.println(multiResultMapGenerator(" private Integer id;\n" +
" private String applyId;\n" +
" private java.sql.Timestamp applyDate;"));
}
private static String humpConvertUnderline(String humpData) {
if (humpData == null || humpData.length() <= 1) return humpData;
StringBuilder result = new StringBuilder();
for (int var1 = 0; var1 < humpData.length(); var1++) {
if ('A' <= humpData.charAt(var1) && humpData.charAt(var1) <= 'Z') {
result.append("_").append((char) (humpData.charAt(var1) + 32));
} else {
result.append(humpData.charAt(var1));
}
}
return result.toString();
}
private synchronized static void initJdbcTypeMap() {
if (jdbcTypeMap == null) {
jdbcTypeMap = new HashMap<>();
jdbcTypeMap.put("String", "VARCHAR");
jdbcTypeMap.put("BegDecimal", "DECIMAL");
jdbcTypeMap.put("boolean", "BOOLEAN");
jdbcTypeMap.put("Boolean", "BOOLEAN");
jdbcTypeMap.put("byte", "TINYINT");
jdbcTypeMap.put("Byte", "TINYINT");
jdbcTypeMap.put("short", "SMALLINT");
jdbcTypeMap.put("Short", "SMALLINT");
jdbcTypeMap.put("int", "INTEGER");
jdbcTypeMap.put("Integer", "INTEGER");
jdbcTypeMap.put("long", "LONG");
jdbcTypeMap.put("Long", "LONG");
jdbcTypeMap.put("float", "REAL");
jdbcTypeMap.put("Float", "REAL");
jdbcTypeMap.put("double", "DOUBLE");
jdbcTypeMap.put("Double", "DOUBLE");
jdbcTypeMap.put("byte[]", "BINARY");
jdbcTypeMap.put("Date", "DATE");
jdbcTypeMap.put("Time", "TIME");
jdbcTypeMap.put("Timestamp", "TIMESTAMP");
jdbcTypeMap.put("java.sql.Timestamp", "TIMESTAMP");
jdbcTypeMap.put("Clob", "CLOB");
jdbcTypeMap.put("Blob", "BLOB");
jdbcTypeMap.put("Array", "ARRAY");
jdbcTypeMap.put("Struct", "STRUCT");
jdbcTypeMap.put("Ref", "REF");
jdbcTypeMap.put("URL", "DATALINK");
}
}
}