package foundation.io.engine; import java.util.HashMap; import foundation.data.entity.Entity; import foundation.util.Util; public class LineValueTrigger { private TriggerEvent triggerName; private String[] columnNames; private int[] columnIndexes; private int columnCount; private HashMap values; public LineValueTrigger() { values = new HashMap(); } public void onReadLine(Entity entity) { int columnIndex; String columnName, key = ""; for (int i = 0 ; i < columnNames.length; i++) { columnIndex = columnIndexes[i]; columnName = columnNames[i]; if (columnIndex < 0) { columnIndex = entity.getFieldsMeta().getIndex(columnName); } key = key + "-" + entity.getString(columnIndex, "Null-Value"); } if (values.containsKey(key)) { entity.set(triggerName.getFieldName(), values.get(key)); return; } String newValue = triggerName.notifyReadNewValue(triggerName, entity, key); values.put(key, newValue); } public void load(Entity entity) { columnNames = entity.getString("column_name").split(","); columnCount = columnNames.length; columnIndexes = new int[columnCount]; String columnIndexStr = entity.getString("column_index", ""); String[] indexes = columnIndexStr.split(","); boolean isIndexsEmpty = Util.isEmpty(columnIndexStr); for (int i = 0; i < columnCount; i++) { columnIndexes[i] = isIndexsEmpty ? -1 : Integer.parseInt(indexes[i]); } triggerName = new TriggerEvent(); triggerName.setTriggerName(entity.getString("name")); triggerName.setColumnIndexes(columnIndexes); triggerName.setColumnNames(columnNames); triggerName.setField(entity.getString("field_name")); triggerName.setRemark(entity.getString("remark")); } public String getTriggerName() { return triggerName.getTriggerName(); } }