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<String , String> values;
|
|
public LineValueTrigger() {
|
values = new HashMap<String , String>();
|
}
|
|
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();
|
}
|
}
|