package foundation.version; import foundation.data.meta.field.Field; import foundation.data.meta.field.FieldsRuntime; import foundation.util.MapList; import foundation.util.Util; public class FieldMappingCreator { private MapList fromFields; private MapList toFields; public FieldMappingCreator(MapList fromFields, MapList toFields) { this.fromFields = fromFields; this.toFields = toFields; } public static FieldMappingCreator createMapping(FieldsRuntime fromFields, String direction, String versionCode) { MapList fromFieldList = new MapList(); MapList toFieldList = new MapList(); if("HistoryToPreparatory".equalsIgnoreCase(direction)) { for (Field field : fromFields) { if ("version_data_id".equalsIgnoreCase(field.getName()) || "version_code".equalsIgnoreCase(field.getName())) { continue; } else { fromFieldList.add(field.getName(), field); toFieldList.add(field.getName(), field); } } } else if("PreparatoryToActive".equalsIgnoreCase(direction)) { for (Field field : fromFields) { fromFieldList.add(field.getName(), field); toFieldList.add(field.getName(), field); } } else if("ActiveToHistory".equalsIgnoreCase(direction)) { toFieldList.add("version_data_id", new Field("version_data_id")); fromFieldList.add("MD5(UUID_SHORT())", new Field("MD5(UUID_SHORT())")); for (Field field : fromFields) { fromFieldList.add(field.getName(), field); toFieldList.add(field.getName(), field); } toFieldList.add("version_code", new Field("version_code")); fromFieldList.add(Util.quotedStr(versionCode), new Field(Util.quotedStr(versionCode))); } return new FieldMappingCreator(fromFieldList, toFieldList); } public String getFromFields() { Field field; int length = fromFields.size(); StringBuffer selectField = new StringBuffer(); for (int i = 0; i < length - 1; i++) { field = fromFields.get(i); selectField.append(field.getName()).append(", "); } field = fromFields.get(length - 1); selectField.append(field.getName()); return selectField.toString(); } public String getToFields() { Field field; int length = toFields.size(); StringBuffer insertField = new StringBuffer(); for (int i = 0; i < length - 1; i++) { field = toFields.get(i); insertField.append(field.getName()).append(", "); } field = toFields.get(length - 1); insertField.append(field.getName()); return insertField.toString(); } }