package ldbc.snb.datagen.test.csv;
import java.util.ArrayList;
import java.util.List;
/**
* Created by aprat on 30/03/16.
*/
public abstract class NumericPairCheck<T> extends Check {
public enum NumericCheckType {
G,
GE,
L,
LE,
E,
NE
}
protected NumericCheckType type;
protected Parser<T> parser;
public NumericPairCheck(Parser<T> parser, String name, Integer columnA, Integer columnB, NumericCheckType type) {
super(name, new ArrayList<Integer>());
this.getColumns().add(columnA);
this.getColumns().add(columnB);
this.type = type;
this.parser = parser;
}
@Override
public boolean check(List<String> values) {
switch(type) {
case G:
return greater(parser.parse(values.get(0)),parser.parse(values.get(1)));
case GE:
return greaterEqual(parser.parse(values.get(0)),parser.parse(values.get(1)));
case L:
return less(parser.parse(values.get(0)),parser.parse(values.get(1)));
case LE:
return lessEqual(parser.parse(values.get(0)),parser.parse(values.get(1)));
case E:
return equals(parser.parse(values.get(0)),parser.parse(values.get(1)));
case NE:
return nonEquals(parser.parse(values.get(0)),parser.parse(values.get(1)));
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);
}