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<String, Field> fromFields;
|
private MapList<String, Field> toFields;
|
|
public FieldMappingCreator(MapList<String, Field> fromFields, MapList<String, Field> toFields) {
|
this.fromFields = fromFields;
|
this.toFields = toFields;
|
}
|
|
public static FieldMappingCreator createMapping(FieldsRuntime fromFields, String direction, String versionCode) {
|
MapList<String, Field> fromFieldList = new MapList<String, Field>();
|
MapList<String, Field> toFieldList = new MapList<String, Field>();
|
|
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();
|
}
|
|
|
}
|