package ldbc.snb.datagen.test.csv; import java.util.ArrayList; import java.util.List; /** * Created by aprat on 23/12/15. */ public abstract class NumericCheck<T extends Number > extends Check { public enum NumericCheckType { G, GE, L, LE, E, NE, BETWEEN } protected NumericCheckType type; protected T val1; protected T val2; protected Parser<T> parser; public NumericCheck(Parser<T> parser, String name, Integer column, NumericCheckType type, T val1, T val2 ) { super(name, new ArrayList<Integer>()); this.getColumns().add(column); this.type = type; this.val1 = val1; this.val2 = val2; this.parser = parser; } @Override public boolean check(List<String> values) { switch(type) { case G: return greater(parser.parse(values.get(0)),val1); case GE: return greaterEqual(parser.parse(values.get(0)),val1); case L: return less(parser.parse(values.get(0)),val1); case LE: return lessEqual(parser.parse(values.get(0)),val1); case E: return equals(parser.parse(values.get(0)),val1); case NE: return nonEquals(parser.parse(values.get(0)),val1); case BETWEEN: return between(parser.parse(values.get(0)),val1, val2); default: return false; } } public abstract boolean greater(T val1, T val2); public abstract boolean greaterEqual(T val1, T val2); public abstract boolean less(T val1, T val2); public abstract boolean lessEqual(T val1, T val2); public abstract boolean equals(T val1, T val2); public abstract boolean nonEquals(T val1, T val2); public abstract boolean between(T val1, T val2, T val3); }