You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2014/12/23 23:15:00 UTC
incubator-ignite git commit: ignite-gg9499 - minor refactoring and
cleanup
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-gg9499 88571b9a6 -> 98df8e167
ignite-gg9499 - minor refactoring and cleanup
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/98df8e16
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/98df8e16
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/98df8e16
Branch: refs/heads/ignite-gg9499
Commit: 98df8e167c080803110872bb05b88cc264018882
Parents: 88571b9
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Dec 24 01:14:50 2014 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Dec 24 01:14:50 2014 +0300
----------------------------------------------------------------------
.../processors/query/h2/sql/GridOperation.java | 4 +-
.../query/h2/sql/GridQueryParser.java | 148 ++++++++++++++++---
.../processors/query/h2/sql/GridQueryUtils.java | 148 -------------------
.../processors/query/h2/sql/GridSqlElement.java | 6 +-
.../processors/query/h2/sql/GridQueryTest.java | 4 +-
5 files changed, 133 insertions(+), 177 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/98df8e16/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridOperation.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridOperation.java b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridOperation.java
index c38ae85..a52e33e 100644
--- a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridOperation.java
+++ b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridOperation.java
@@ -29,7 +29,7 @@ public class GridOperation extends GridSqlElement {
* @param opType Op type.
* @param arg argument.
*/
- public GridOperation(@NotNull GridOperationType opType, @NotNull GridSqlElement arg) {
+ public GridOperation(GridOperationType opType, GridSqlElement arg) {
this(opType);
addChild(arg);
@@ -40,7 +40,7 @@ public class GridOperation extends GridSqlElement {
* @param left Left.
* @param right Right.
*/
- public GridOperation(@NotNull GridOperationType opType, @NotNull GridSqlElement left, @NotNull GridSqlElement right) {
+ public GridOperation(GridOperationType opType, GridSqlElement left, GridSqlElement right) {
this(opType);
addChild(left);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/98df8e16/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryParser.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryParser.java b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryParser.java
index 780c662..5b5a434 100644
--- a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryParser.java
+++ b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryParser.java
@@ -10,7 +10,6 @@
package org.gridgain.grid.kernal.processors.query.h2.sql;
import org.apache.ignite.*;
-import org.gridgain.grid.kernal.processors.query.h2.sql.GridQueryUtils.*;
import org.h2.command.dml.*;
import org.h2.expression.*;
import org.h2.result.*;
@@ -22,7 +21,6 @@ import java.util.*;
import java.util.Set;
import static org.gridgain.grid.kernal.processors.query.h2.sql.GridOperationType.*;
-import static org.gridgain.grid.kernal.processors.query.h2.sql.GridQueryUtils.*;
/**
* H2 Query parser.
@@ -42,7 +40,7 @@ public class GridQueryParser {
private static final Getter<Select, Expression> CONDITION = getter(Select.class, "condition");
/** */
- private static final Field GROUP_INDEXES = GridQueryUtils.getField(Select.class, "groupIndex");
+ private static final Getter<Select, int[]> GROUP_INDEXES = getter(Select.class, "groupIndex");
/** */
private static final Getter<Operation, Integer> OPERATION_TYPE = getter(Operation.class, "opType");
@@ -72,6 +70,63 @@ public class GridQueryParser {
private static final Getter<ConditionAndOr, Expression> ANDOR_RIGHT = getter(ConditionAndOr.class, "right");
/** */
+ private static final Getter<TableView, Query> VIEW_QUERY = getter(TableView.class, "viewQuery");
+
+ /** */
+ private static final Getter<TableFilter, String> ALIAS = getter(TableFilter.class, "alias");
+
+ /** */
+ private static final Getter<Select, Integer> HAVING_INDEX = getter(Select.class, "havingIndex");
+
+ /** */
+ private static final Getter<ConditionIn, Expression> LEFT_CI = getter(ConditionIn.class, "left");
+
+ /** */
+ private static final Getter<ConditionIn, List<Expression>> VALUE_LIST_CI = getter(ConditionIn.class, "valueList");
+
+ /** */
+ private static final Getter<ConditionInConstantSet, Expression> LEFT_CICS =
+ getter(ConditionInConstantSet.class, "left");
+
+ /** */
+ private static final Getter<ConditionInConstantSet, List<Expression>> VALUE_LIST_CICS =
+ getter(ConditionInConstantSet.class, "valueList");
+
+ /** */
+ private static final Getter<ConditionInSelect, Expression> LEFT_CIS = getter(ConditionInSelect.class, "left");
+
+ /** */
+ private static final Getter<ConditionInSelect, Boolean> ALL = getter(ConditionInSelect.class, "all");
+
+ /** */
+ private static final Getter<ConditionInSelect, Integer> COMPARE_TYPE = getter(ConditionInSelect.class,
+ "compareType");
+
+ /** */
+ private static final Getter<ConditionInSelect, Query> QUERY = getter(ConditionInSelect.class, "query");
+
+ /** */
+ private static final Getter<CompareLike, Expression> LEFT = getter(CompareLike.class, "left");
+
+ /** */
+ private static final Getter<CompareLike, Expression> RIGHT = getter(CompareLike.class, "right");
+
+ /** */
+ private static final Getter<CompareLike, Expression> ESCAPE = getter(CompareLike.class, "escape");
+
+ /** */
+ private static final Getter<CompareLike, Boolean> REGEXP_CL = getter(CompareLike.class, "regexp");
+
+ /** */
+ private static final Getter<Aggregate, Boolean> DISTINCT = getter(Aggregate.class, "distinct");
+
+ /** */
+ private static final Getter<Aggregate, Integer> TYPE = getter(Aggregate.class, "type");
+
+ /** */
+ private static final Getter<Aggregate, Expression> ON = getter(Aggregate.class, "on");
+
+ /** */
private final IdentityHashMap<Object, Object> h2ObjToGridObj = new IdentityHashMap<>();
/**
@@ -86,7 +141,7 @@ public class GridQueryParser {
if (tbl instanceof TableBase)
res = new GridTable(tbl.getSchema().getName(), tbl.getName());
else if (tbl instanceof TableView) {
- Query qry = GridQueryUtils.getFieldValue(tbl, "viewQuery");
+ Query qry = VIEW_QUERY.get((TableView)tbl);
assert0(qry instanceof Select, qry);
@@ -95,7 +150,7 @@ public class GridQueryParser {
else
throw new IgniteException("Unsupported query: " + filter);
- String alias = GridQueryUtils.getFieldValue(filter, "alias");
+ String alias = ALIAS.get(filter);
if (alias != null)
res = new GridAlias(alias, res, false);
@@ -152,7 +207,7 @@ public class GridQueryParser {
ArrayList<Expression> expressions = select.getExpressions();
- int[] grpIdx = GridQueryUtils.getFieldValue(GROUP_INDEXES, select);
+ int[] grpIdx = GROUP_INDEXES.get(select);
if (grpIdx != null) {
for (int idx : grpIdx)
@@ -161,7 +216,7 @@ public class GridQueryParser {
assert0(select.getHaving() == null, select);
- int havingIdx = GridQueryUtils.getFieldValue(select, "havingIndex");
+ int havingIdx = HAVING_INDEX.get(select);
if (havingIdx >= 0)
res.having(toGridExpression(expressions.get(havingIdx)));
@@ -276,9 +331,9 @@ public class GridQueryParser {
if (expression instanceof ConditionIn) {
GridOperation res = new GridOperation(IN);
- res.addChild(toGridExpression((Expression)GridQueryUtils.getFieldValue(expression, "left")));
+ res.addChild(toGridExpression(LEFT_CI.get((ConditionIn)expression)));
- List<Expression> vals = GridQueryUtils.getFieldValue(expression, "valueList");
+ List<Expression> vals = VALUE_LIST_CI.get((ConditionIn)expression);
for (Expression val : vals)
res.addChild(toGridExpression(val));
@@ -289,9 +344,9 @@ public class GridQueryParser {
if (expression instanceof ConditionInConstantSet) {
GridOperation res = new GridOperation(IN);
- res.addChild(toGridExpression((Expression)GridQueryUtils.getFieldValue(expression, "left")));
+ res.addChild(toGridExpression(LEFT_CICS.get((ConditionInConstantSet)expression)));
- List<Expression> vals = GridQueryUtils.getFieldValue(expression, "valueList");
+ List<Expression> vals = VALUE_LIST_CICS.get((ConditionInConstantSet)expression);
for (Expression val : vals)
res.addChild(toGridExpression(val));
@@ -302,15 +357,15 @@ public class GridQueryParser {
if (expression instanceof ConditionInSelect) {
GridOperation res = new GridOperation(IN);
- boolean all = GridQueryUtils.getFieldValue(expression, "all");
- int compareType = GridQueryUtils.getFieldValue(expression, "compareType");
+ boolean all = ALL.get((ConditionInSelect)expression);
+ int compareType = COMPARE_TYPE.get((ConditionInSelect)expression);
assert0(!all, expression);
assert0(compareType == Comparison.EQUAL, expression);
- res.addChild(toGridExpression((Expression)GridQueryUtils.getFieldValue(expression, "left")));
+ res.addChild(toGridExpression(LEFT_CIS.get((ConditionInSelect)expression)));
- Query qry = GridQueryUtils.getFieldValue(expression, "query");
+ Query qry = QUERY.get((ConditionInSelect)expression);
assert0(qry instanceof Select, qry);
@@ -320,13 +375,12 @@ public class GridQueryParser {
}
if (expression instanceof CompareLike) {
- assert0(GridQueryUtils.getFieldValue(expression, "escape") == null, expression);
+ assert0(ESCAPE.get((CompareLike)expression) == null, expression);
- boolean regexp = GridQueryUtils.getFieldValue(expression, "regexp");
+ boolean regexp = REGEXP_CL.get((CompareLike)expression);
- return new GridOperation(regexp ? REGEXP : LIKE,
- toGridExpression((Expression)GridQueryUtils.getFieldValue(expression, "left")),
- toGridExpression((Expression)GridQueryUtils.getFieldValue(expression, "right")));
+ return new GridOperation(regexp ? REGEXP : LIKE, toGridExpression(LEFT.get((CompareLike)expression)),
+ toGridExpression(RIGHT.get((CompareLike)expression)));
}
if (expression instanceof Function) {
@@ -348,10 +402,10 @@ public class GridQueryParser {
return new GridSqlParameter(((Parameter)expression).getIndex());
if (expression instanceof Aggregate) {
- GridAggregateFunction res = new GridAggregateFunction(GridQueryUtils.<Boolean>getFieldValue(expression,
- "distinct"), GridQueryUtils.<Integer>getFieldValue(expression, "type"));
+ GridAggregateFunction res = new GridAggregateFunction(DISTINCT.get((Aggregate)expression),
+ TYPE.get((Aggregate)expression));
- Expression on = GridQueryUtils.getFieldValue(expression, "on");
+ Expression on = ON.get((Aggregate)expression);
if (on != null)
res.addChild(toGridExpression(on));
@@ -371,4 +425,52 @@ public class GridQueryParser {
if (!cond)
throw new IgniteException("Unsupported query: " + o);
}
+
+ /**
+ * @param cls Class.
+ * @param fldName Fld name.
+ */
+ private static <T, R> Getter<T, R> getter(Class<T> cls, String fldName) {
+ Field field;
+
+ try {
+ field = cls.getDeclaredField(fldName);
+ }
+ catch (NoSuchFieldException e) {
+ throw new RuntimeException(e);
+ }
+
+ field.setAccessible(true);
+
+ return new Getter<>(field);
+ }
+
+ /**
+ * Field getter.
+ */
+ @SuppressWarnings("unchecked")
+ private static class Getter<T, R> {
+ /** */
+ private final Field fld;
+
+ /**
+ * @param fld Fld.
+ */
+ private Getter(Field fld) {
+ this.fld = fld;
+ }
+
+ /**
+ * @param obj Object.
+ * @return Result.
+ */
+ public R get(T obj) {
+ try {
+ return (R)fld.get(obj);
+ }
+ catch (IllegalAccessException e) {
+ throw new IgniteException(e);
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/98df8e16/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryUtils.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryUtils.java b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryUtils.java
deleted file mode 100644
index 0ffac88..0000000
--- a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryUtils.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.gridgain.grid.kernal.processors.query.h2.sql;
-
-import org.h2.table.*;
-
-import java.lang.reflect.*;
-import java.util.*;
-
-/**
- *
- */
-public class GridQueryUtils {
-
- /**
- * @param res
- * @param tbl
- */
- public static void extractTables(Set<TableBase> res, Table tbl) {
- if (tbl instanceof TableBase) {
- res.add((TableBase)tbl);
-
- return;
- }
-
- if (tbl instanceof TableView) {
- List<Table> tableList = getTables((TableView)tbl);
-
- for (Table table : tableList) {
- extractTables(res, table);
- }
- }
- else
- throw new IllegalArgumentException("Unknown table type: " + tbl);
- }
-
- /**
- * @param view Table view.
- * @return List of tables.
- */
- public static List<Table> getTables(TableView view) {
- try {
- Field field = TableView.class.getDeclaredField("tables");
-
- field.setAccessible(true);
-
- return (List<Table>)field.get(view);
- }
- catch (NoSuchFieldException | IllegalAccessException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- *
- * @param fld
- * @param obj
- * @param <T>
- * @return
- */
- public static <T> T getFieldValue(Field fld, Object obj) {
- try {
- return (T)fld.get(obj);
- }
- catch (IllegalAccessException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * @param cls
- * @param fieldName
- * @return
- */
- public static Field getField(Class<?> cls, String fieldName) {
- Field field;
- try {
- field = cls.getDeclaredField(fieldName);
- }
- catch (NoSuchFieldException e) {
- throw new RuntimeException(e);
- }
-
- field.setAccessible(true);
-
- return field;
- }
-
- /**
- * @param cls Class.
- * @param obj Object.
- * @param fldName Fld name.
- */
- public static <C> Object getFieldValue(Class<? super C> cls, C obj, String fldName) {
- Field field = getField(cls, fldName);
-
- return getFieldValue(field, obj);
- }
-
- /**
- * @param obj Object.
- * @param fldName Fld name.
- */
- public static <T> T getFieldValue(Object obj, String fldName) {
- return (T)getFieldValue((Class<? super Object>)obj.getClass(), obj, fldName);
- }
-
- /**
- * @param cls Class.
- * @param fldName Fld name.
- */
- public static <T, R> Getter<T, R> getter(Class<T> cls, String fldName) {
- Field field = getField(cls, fldName);
-
- return new Getter<>(field);
- }
-
- /**
- *
- */
- @SuppressWarnings("PublicInnerClass")
- public static class Getter<T, R> {
- /** */
- private final Field fld;
-
- /**
- * @param fld Fld.
- */
- private Getter(Field fld) {
- this.fld = fld;
- }
-
- /**
- * @param obj Object.
- * @return Result.
- */
- public R get(T obj) {
- return getFieldValue(fld, obj);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/98df8e16/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlElement.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlElement.java b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlElement.java
index f569261..c658e24 100644
--- a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlElement.java
+++ b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlElement.java
@@ -33,7 +33,9 @@ public abstract class GridSqlElement implements Cloneable {
/**
* @param expr Expr.
*/
- public void addChild(@NotNull GridSqlElement expr) {
+ public void addChild(GridSqlElement expr) {
+ assert expr != null;
+
children.add(expr);
}
@@ -53,7 +55,7 @@ public abstract class GridSqlElement implements Cloneable {
/** {@inheritDoc} */
@SuppressWarnings("CloneCallsConstructors")
- @Override protected GridSqlElement clone() {
+ @Override protected GridSqlElement clone() throws CloneNotSupportedException {
try {
GridSqlElement res = (GridSqlElement)super.clone();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/98df8e16/modules/indexing/src/test/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryTest.java b/modules/indexing/src/test/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryTest.java
index 099bfc1..f4f3c71 100644
--- a/modules/indexing/src/test/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryTest.java
+++ b/modules/indexing/src/test/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridQueryTest.java
@@ -15,6 +15,7 @@ import org.gridgain.grid.kernal.*;
import org.gridgain.grid.kernal.processors.cache.*;
import org.gridgain.grid.kernal.processors.query.*;
import org.gridgain.grid.kernal.processors.query.h2.*;
+import org.gridgain.grid.util.typedef.internal.*;
import org.h2.command.*;
import org.h2.command.dml.*;
import org.h2.engine.*;
@@ -150,8 +151,7 @@ public class GridQueryTest extends GridCacheAbstractQuerySelfTest {
GridQueryProcessor qryProcessor = ctx.query();
- GridH2Indexing idx = (GridH2Indexing)GridQueryUtils.getFieldValue(GridQueryProcessor.class, qryProcessor,
- "idx");
+ GridH2Indexing idx = U.field(qryProcessor, "idx");
return (JdbcConnection)idx.connectionForSpace(null);
}