package foundation.data.meta.field;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.meta.template.PropertyTemplate;
|
import foundation.json.IJSONWriter;
|
import foundation.util.Util;
|
|
|
public class FieldExtension {
|
|
private String fieldName;
|
private String labelChinese;
|
private String labelEnglish;
|
private String inputType;
|
private String optionsKey;
|
private String optionsPattern;
|
private String formatter;
|
private String formatPattern;
|
private String translator;
|
private Align align;
|
private boolean required;
|
private String validateRegex;
|
private String defaultValue;
|
private Integer minVal;
|
private Integer maxVal;
|
private String prefix;
|
private String suffix;
|
private boolean exportable;
|
private boolean importable;
|
|
|
public FieldExtension() {
|
align = Align.left;
|
}
|
|
public static void toEntity(String dataName, Field field, Entity entity, PropertyTemplate template) {
|
int indexNo = field.getIndexNo();
|
String fieldName = field.getName();
|
|
String labelChinese = field.getRemark();
|
|
if (Util.isEmpty(labelChinese)) {
|
labelChinese = fieldName;
|
}
|
|
if (labelChinese.length() > 24) {
|
labelChinese = labelChinese.substring(0, 24);
|
}
|
|
entity.set("id", dataName + "_" + Util.format(indexNo, 3));
|
entity.set("dataName", dataName);
|
entity.set("field_name", fieldName);
|
entity.set("label_chinese", labelChinese);
|
entity.set("label_english", fieldName);
|
|
if (field.isNumber()) {
|
entity.set("align", Align.right.name());
|
}
|
else if (field.isDate()) {
|
entity.set("input_type", "input");
|
entity.set("formatter", "formatter_date");
|
entity.set("align", Align.center.name());
|
}
|
else {
|
entity.set("align", Align.center.name());
|
}
|
|
if (template != null) {
|
Entity data = template.getData();
|
String[] names = data.getFieldsMeta().getFieldNames();
|
int max = names.length;
|
|
for (int i = 0; i < max; i++) {
|
String name = names[i];
|
|
if (PropertyTemplate.ExcludeNames.contains(name)) {
|
continue;
|
}
|
|
Object value = data.getValue(i);
|
|
if (Util.isEmpty(value)) {
|
continue;
|
}
|
|
entity.set(name, value);
|
}
|
}
|
}
|
|
public void load(Entity entity) {
|
fieldName = entity.getString("field_name");
|
labelChinese = entity.getString("label_chinese");
|
labelEnglish = entity.getString("label_english");
|
inputType = entity.getString("input_type");
|
optionsKey = entity.getString("options_key");
|
optionsPattern = entity.getString("options_pattern");
|
formatter = entity.getString("formatter");
|
translator = entity.getString("translator");
|
|
formatPattern = entity.getString("format_pattern");
|
align = Align.parse(entity.getString("align"));
|
required = entity.getBoolean("is_required", false);
|
validateRegex = entity.getString("validate_regex");
|
defaultValue = entity.getString("default_value");
|
minVal = entity.getInteger("min_val", null);
|
maxVal = entity.getInteger("max_val", null);
|
prefix = entity.getString("prefix");
|
suffix = entity.getString("suffix");
|
exportable = entity.getBoolean("is_exportable", true);
|
importable = entity.getBoolean("is_importable", true);
|
}
|
|
public Entity toEntity(Entity entity) {
|
entity.set("field_name", fieldName);
|
entity.set("label_chinese", labelChinese);
|
entity.set("label_english", labelEnglish);
|
entity.set("input_type", inputType);
|
entity.set("options_key", optionsKey);
|
entity.set("options_pattern", optionsPattern);
|
entity.set("formatter", formatter);
|
entity.set("translator", translator);
|
|
entity.set("format_pattern", formatPattern);
|
entity.set("align", align.name());
|
entity.set("is_required", required);
|
entity.set("validate_regex", validateRegex);
|
entity.set("default_value", defaultValue);
|
entity.set("min_val", minVal);
|
entity.set("max_val", maxVal);
|
entity.getString("prefix", prefix);
|
entity.getString("suffix", suffix);
|
entity.getBoolean("is_exportable", exportable);
|
entity.getBoolean("is_importable", importable);
|
|
return entity;
|
}
|
|
public String getName() {
|
return this.fieldName;
|
}
|
|
public String getLabelChinese() {
|
return labelChinese;
|
}
|
|
public String getLabelEnglish() {
|
return labelEnglish;
|
}
|
|
public String getInputType() {
|
return inputType;
|
}
|
|
public String getOptionsKey() {
|
return optionsKey;
|
}
|
|
public String getOptionsPattern() {
|
return optionsPattern;
|
}
|
|
public String getFormatter() {
|
return formatter;
|
}
|
|
public String getFormatPattern() {
|
return formatPattern;
|
}
|
|
public String getTranslator() {
|
return translator;
|
}
|
|
public boolean hasTranslator() {
|
return !Util.isEmpty(translator);
|
}
|
|
public Align getAlign() {
|
return align;
|
}
|
|
public boolean isRequired() {
|
return required;
|
}
|
|
public String getValidateRegex() {
|
return validateRegex;
|
}
|
|
public boolean hasValidateRegex() {
|
return !Util.isEmpty(validateRegex);
|
}
|
|
public String getDefaultValue() {
|
return defaultValue;
|
}
|
|
public boolean hasDefaultValue() {
|
return !Util.isEmpty(defaultValue);
|
}
|
|
public Integer getMinVal() {
|
return minVal;
|
}
|
|
public Integer getMaxVal() {
|
return maxVal;
|
}
|
|
public String getPrefix() {
|
return prefix;
|
}
|
|
public String getSuffix() {
|
return suffix;
|
}
|
|
public boolean isExportable() {
|
return exportable;
|
}
|
|
public boolean isImportable() {
|
return importable;
|
}
|
|
public void setFieldName(String fieldName) {
|
this.fieldName = fieldName;
|
}
|
|
public void setAlign(Align align) {
|
this.align = align;
|
}
|
|
public void writeJSONBody(IJSONWriter writer) {
|
writer.write("input_type", inputType);
|
writer.write("options_key", optionsKey);
|
writer.write("options_pattern", optionsPattern);
|
writer.write("formatter", formatter);
|
writer.write("format_pattern", formatPattern);
|
writer.write("align", align.name());
|
writer.write("is_required", required);
|
writer.write("validate_regex", validateRegex);
|
writer.write("default_value", defaultValue);
|
writer.write("min_val", minVal);
|
writer.write("max_val", maxVal);
|
writer.write("prefix", prefix);
|
writer.write("suffix", suffix);
|
}
|
|
public String toString() {
|
StringBuilder result = new StringBuilder();
|
result.append("fieldName=").append(this.fieldName).append(",");
|
result.append("label=").append(this.labelChinese);
|
return result.toString();
|
}
|
|
public void toString(StringBuilder result) {
|
result.append("fieldName=").append(this.fieldName).append(",");
|
result.append("label=").append(this.labelChinese);
|
}
|
|
}
|