summaryrefslogtreecommitdiff
path: root/src/main/java/com/amazon/carbonado/qe/QueryEngine.java
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2006-09-11 01:33:12 +0000
committerBrian S. O'Neill <bronee@gmail.com>2006-09-11 01:33:12 +0000
commitb1ba29c24f6c48c9b028bc8c4c5e9c729092f5ac (patch)
tree50fa59a25e1d38a6d54a7666880de8933ab8cc31 /src/main/java/com/amazon/carbonado/qe/QueryEngine.java
parent09ba4bbe4d8ccad08d634be676eb58576ea18b95 (diff)
Completed new query engine implementation.
Diffstat (limited to 'src/main/java/com/amazon/carbonado/qe/QueryEngine.java')
-rw-r--r--src/main/java/com/amazon/carbonado/qe/QueryEngine.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/com/amazon/carbonado/qe/QueryEngine.java b/src/main/java/com/amazon/carbonado/qe/QueryEngine.java
new file mode 100644
index 0000000..1362045
--- /dev/null
+++ b/src/main/java/com/amazon/carbonado/qe/QueryEngine.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2006 Amazon Technologies, Inc. or its affiliates.
+ * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks
+ * of Amazon Technologies, Inc. or its affiliates. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.amazon.carbonado.qe;
+
+import com.amazon.carbonado.IsolationLevel;
+import com.amazon.carbonado.Storable;
+import com.amazon.carbonado.Transaction;
+
+import com.amazon.carbonado.filter.FilterValues;
+
+/**
+ * Complete rule-based query engine implementation.
+ *
+ * @author Brian S O'Neill
+ */
+public class QueryEngine<S extends Storable> extends StandardQueryFactory<S> {
+ final RepositoryAccess mRepoAccess;
+ final QueryExecutorFactory<S> mExecutorFactory;
+
+ public QueryEngine(Class<S> type, RepositoryAccess access) {
+ super(type);
+ mRepoAccess = access;
+ mExecutorFactory = new QueryExecutorCache<S>(new UnionQueryAnalyzer<S>(type, access));
+ }
+
+ protected StandardQuery<S> createQuery(FilterValues<S> values, OrderingList<S> ordering) {
+ return new Query(values, ordering);
+ }
+
+ private class Query extends StandardQuery<S> {
+ Query(FilterValues<S> values, OrderingList<S> ordering) {
+ super(values, ordering);
+ }
+
+ protected Transaction enterTransaction(IsolationLevel level) {
+ return mRepoAccess.getRootRepository().enterTransaction(level);
+ }
+
+ protected QueryFactory<S> queryFactory() {
+ return QueryEngine.this;
+ }
+
+ protected QueryExecutorFactory<S> executorFactory() {
+ return mExecutorFactory;
+ }
+
+ protected StandardQuery<S> newInstance(FilterValues<S> values, OrderingList<S> ordering) {
+ return new Query(values, ordering);
+ }
+ }
+}