From dd3b48a40b47609426e0f34eb9a234b854026926 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 25 Oct 2021 11:41:50 +0200 Subject: [PATCH] Moved query operators (logical and condtional) from resource-registry --- .../operators/QueryConditionalOperator.java | 64 +++++++++++++++++++ .../operators/QueryLogicalOperator.java | 59 +++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 src/main/java/org/gcube/informationsystem/queries/operators/QueryConditionalOperator.java create mode 100644 src/main/java/org/gcube/informationsystem/queries/operators/QueryLogicalOperator.java diff --git a/src/main/java/org/gcube/informationsystem/queries/operators/QueryConditionalOperator.java b/src/main/java/org/gcube/informationsystem/queries/operators/QueryConditionalOperator.java new file mode 100644 index 0000000..6d1a31a --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/queries/operators/QueryConditionalOperator.java @@ -0,0 +1,64 @@ +package org.gcube.informationsystem.queries.operators; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public enum QueryConditionalOperator { + + EQ("$eq", " = ", "Matches values that are equal to a specified value."), + GT("$gt", " > ", "Matches values that are greater than a specified value."), + GTE("$gte", " >= ", "Matches values that are greater than or equal to a specified value."), + LT("$lt", " < ", "Matches values that are less than a specified value."), + LTE("$lte", " <= ", "Matches values that are less than or equal to a specified value."), + NE("$ne", " <> ", "Matches all values that are not equal to a specified value."), + + IN("$in", " IN ", "Matches any of the values specified in an array."); + + protected final String operator; + protected final String conditionalOperator; + protected final String description; + + private QueryConditionalOperator(String operator, String conditionalOperator, String description) { + this.operator = operator; + this.conditionalOperator = conditionalOperator; + this.description = description; + } + + public String getOperator() { + return operator; + } + + public String getConditionalOperator() { + return conditionalOperator; + } + + public String getDescription() { + return description; + } + + private static Set operators; + private static Map operatorByKey; + + static { + QueryConditionalOperator.operators = new HashSet<>(); + QueryConditionalOperator.operatorByKey = new HashMap<>(); + + for(QueryConditionalOperator queryComparisonOperator : QueryConditionalOperator.values()) { + QueryConditionalOperator.operators.add(queryComparisonOperator.getOperator()); + QueryConditionalOperator.operatorByKey.put(queryComparisonOperator.getOperator(), queryComparisonOperator); + } + } + + public static Set getOperators() { + return QueryConditionalOperator.operators; + } + + public static QueryConditionalOperator getQueryComparisonOperator(String key) { + return operatorByKey.get(key); + } +} diff --git a/src/main/java/org/gcube/informationsystem/queries/operators/QueryLogicalOperator.java b/src/main/java/org/gcube/informationsystem/queries/operators/QueryLogicalOperator.java new file mode 100644 index 0000000..eaf8a82 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/queries/operators/QueryLogicalOperator.java @@ -0,0 +1,59 @@ +package org.gcube.informationsystem.queries.operators; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public enum QueryLogicalOperator { + + AND("$and", " AND ", "true if both the conditions are true"), + OR("$or", " OR ", "true if at least one of the condition is true"), + NOT("$not", " NOT ", "true if the condition is false."); + + protected final String operator; + protected final String logicalOperator; + protected final String description; + + private QueryLogicalOperator(String operator, String logicalOperator, String description) { + this.operator = operator; + this.logicalOperator = logicalOperator; + this.description = description; + } + + public String getOperator() { + return operator; + } + + public String getLogicalOperator() { + return logicalOperator; + } + + public String getDescription() { + return description; + } + + private static Set operators; + private static Map operatorByKey; + + static { + QueryLogicalOperator.operators = new HashSet<>(); + QueryLogicalOperator.operatorByKey = new HashMap<>(); + + for(QueryLogicalOperator queryLogicalOperator : QueryLogicalOperator.values()) { + QueryLogicalOperator.operators.add(queryLogicalOperator.getOperator()); + QueryLogicalOperator.operatorByKey.put(queryLogicalOperator.getOperator(), queryLogicalOperator); + } + } + + public static Set getOperators() { + return QueryLogicalOperator.operators; + } + + public static QueryLogicalOperator getQueryLogicalOperator(String key) { + return operatorByKey.get(key); + } +}