package org.n3r.eql.matrix.func; import org.n3r.eql.matrix.MatrixTableFieldValue; import org.n3r.eql.matrix.impl.MatrixFunction; import org.n3r.eql.matrix.impl.MatrixTableField; public abstract class SingleFieldBaseFunction implements MatrixFunction { private MatrixTableField matrixTableField; @Override public void configRelativeTableFields(MatrixTableField... matrixTableFields) { if (matrixTableFields.length != 1) { throw new RuntimeException("function need only one relative table field"); } this.matrixTableField = matrixTableFields[0]; } @Override public boolean match(MatrixTableFieldValue[] fieldValues) { return matrixTableField.find(fieldValues); } protected String find(MatrixTableFieldValue... fieldValues) { for (MatrixTableFieldValue fieldValue : fieldValues) { if (!fieldValue.tableName.equals(matrixTableField.tableName)) continue; if (!fieldValue.fieldName.equals(matrixTableField.fieldName)) continue; return fieldValue.fieldValue; } return null; } @Override public boolean relativeTo(String tableName) { return matrixTableField.tableName.equalsIgnoreCase(tableName); } @Override public boolean relativeTo(String tableName, String columnName) { return relativeTo(tableName) && matrixTableField.fieldName.equalsIgnoreCase(columnName); } }