package middleware; import java.util.HashMap; import java.util.Map; import org.apache.hadoop.hbase.filter.CompareFilter; public class ComparisonOperatorMapper { public enum ComparisonOperator { EQ, NE, LT, GT, LE, GE } private static Map<ComparisonOperator, String> wordOperators = new HashMap<>(); private static Map<ComparisonOperator, String> charOperator = new HashMap<>(); private static Map<ComparisonOperator, CompareFilter.CompareOp> constantOperator = new HashMap<>(); public static void initConditionalOperatorMapper(){ wordOperators.put(ComparisonOperator.EQ, "EQ"); wordOperators.put(ComparisonOperator.NE, "NE"); wordOperators.put(ComparisonOperator.LT, "LT"); wordOperators.put(ComparisonOperator.GT, "GT"); wordOperators.put(ComparisonOperator.LE, "LE"); wordOperators.put(ComparisonOperator.GE, "GE"); charOperator.put(ComparisonOperator.EQ, "="); charOperator.put(ComparisonOperator.NE, "!="); charOperator.put(ComparisonOperator.LT, "<"); charOperator.put(ComparisonOperator.GT, ">"); charOperator.put(ComparisonOperator.LE, "<="); charOperator.put(ComparisonOperator.GE, ">="); constantOperator.put(ComparisonOperator.EQ, CompareFilter.CompareOp.EQUAL); constantOperator.put(ComparisonOperator.NE, CompareFilter.CompareOp.NOT_EQUAL); constantOperator.put(ComparisonOperator.LT, CompareFilter.CompareOp.LESS); constantOperator.put(ComparisonOperator.GT, CompareFilter.CompareOp.GREATER); constantOperator.put(ComparisonOperator.LE, CompareFilter.CompareOp.LESS_OR_EQUAL); constantOperator.put(ComparisonOperator.GE, CompareFilter.CompareOp.GREATER_OR_EQUAL); } public static Object mapConditionalOperator(ComparisonOperator operator){ switch (NoSQLMiddleware.getUsedDatabase()) { case Cassandra: return charOperator.get(operator); case DynamoDb: return wordOperators.get(operator); case Hbase: return constantOperator.get(operator); case Hypertable: return charOperator.get(operator); } return ""; } public static String mapStandardizedConditionalOperator(ComparisonOperator operator){ return charOperator.get(operator); } }