package foundation.dao.version; import java.util.List; import foundation.json.IJSONWriter; import foundation.util.MapList; public class EntityChange implements IDataChange { private String dataName; private ChangeType changeType; private MapList fieldChanges; public EntityChange(String dataName) { this.dataName = dataName; fieldChanges = new MapList(); } public void addOneFieldChange(String fieldName, ChangeType changeType, Object oneValue, Object anotherValue, String oneJSON, String anotherJSON) { FieldChange change = new FieldChange(fieldName, changeType, oneValue, anotherValue, oneJSON, anotherJSON); fieldChanges.add(fieldName, change); } public void setChangeType(ChangeType changeType) { this.changeType = changeType; } public String getDataName() { return dataName; } public ChangeType getChangeType() { return changeType; } public List getFieldChanges() { return fieldChanges.getItemList(); } public boolean isEmpty() { if (!fieldChanges.isEmpty()) { return false; } if (changeType != null) { return false; } return true; } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject(dataName); //1. 变更类型 writer.write("change_type", changeType.name()); if (ChangeType.NoChange == changeType) { writer.endObject(); return; } //2. 变更的entity writer.beginArray("fields"); for (FieldChange fieldChange: fieldChanges) { fieldChange.writeJSON(writer); } writer.endArray(); writer.endObject(); } }