You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/12/18 09:26:34 UTC
svn commit: r1220349 [1/6] - in
/incubator/lcf/branches/CONNECTORS-286/warthog-reimport: ./ lib/ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/warthog/ src/main/java/org/apache/warthog/api/
src/main...
Author: kwright
Date: Sun Dec 18 08:26:30 2011
New Revision: 1220349
URL: http://svn.apache.org/viewvc?rev=1220349&view=rev
Log:
SVN messed up and won't actually allow me to commit a reorganization without errors so I am importing it by hand.
Added:
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/build.xml
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/lib/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/lib/junit-4.7.jar (with props)
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateRelationship.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnBreakOnChange.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMax.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMin.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAfter.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBefore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBetween.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterCriteria.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEquals.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsMultiple.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrAfter.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrBefore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationship.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationshipBuilder.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterSubquery.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexAfter.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBefore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBetween.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexCriteria.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexEquals.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexEqualsMultiple.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexEqualsOrAfter.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexEqualsOrBefore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexRelationship.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexRelationshipBuilder.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/JoinAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/JoinRelationship.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/RowSkipAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/RowSkipRelationship.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHColumnCalculator.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHColumnDescription.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHComparator.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHConcurrencyException.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHException.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHIndex.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHRelationship.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHRelationshipBuilder.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHRowID.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHTable.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHTableStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHUniqueConstraintViolationException.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/WHValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/bytekeyvalue/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/bytekeyvalue/WHAtomicByteKeyValueStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/bytekeyvalue/WHByteKeyIterator.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/bytekeyvalue/WHByteKeyMap.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/BooleanValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/BufferPointer.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/CharacterArray.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/CharacterValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/ColumnCount.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/ColumnSumLong.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/IntegerKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/IntegerValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/LongArray.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/LongComparatorAscending.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/LongKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/LongValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/StringArray.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/StringComparatorAscending.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/StringKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/common/StringValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvalue/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvalue/WHAtomicKeyValueStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvalue/WHKeyIterator.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvalue/WHKeyMap.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/GeneralIDFactoryKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/Index.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexLookupKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNameKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNodeColumnKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNodeEqualsKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNodeGreaterKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNodeKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNodeLesserKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexNodeParentKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexRootKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/IndexValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/Table.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableAccessor.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableBaseKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableColumnKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableHeadKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableIndexKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableLookupKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableNameKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableRowIDFactoryKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableRowKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableRowNextKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableRowPrevKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableTailKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/keyvaluetablestore/TableValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/transactionalkeyvaluestore/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/transactionalkeyvaluestore/WHKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/transactionalkeyvaluestore/WHKeyValue.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/transactionalkeyvaluestore/WHTransaction.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/transactionalkeyvaluestore/WHTransactionalStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemAtomicByteKeyValueStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemAtomicKeyValueStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemAtomicNativeKeyValueStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemAtomicNativeNonblockingKeyValueStore.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemByteTransactionImpl.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemByteTransactionalStoreImpl.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemNativeTransactionImpl.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemNativeTransactionalStoreImpl.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/SanityTest.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/WrappedByteKey.java
incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/WrappedKey.java
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/build.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/build.xml?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/build.xml (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/build.xml Sun Dec 18 08:26:30 2011
@@ -0,0 +1,87 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+
+<project default="all">
+
+ <target name="clean">
+ <delete dir="build"/>
+ </target>
+
+ <target name="compile">
+ <mkdir dir="build/classes"/>
+ <javac srcdir="src/main/java" destdir="build/classes" target="1.5" source="1.5" debug="true" debuglevel="lines,vars,source">
+ <classpath>
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="compile-tests" depends="compile">
+ <mkdir dir="build/test-classes"/>
+ <javac srcdir="src/test/java" destdir="build/test-classes" target="1.5" source="1.5" debug="true" debuglevel="lines,vars,source">
+ <classpath>
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="build/classes"/>
+ </classpath>
+ </javac>
+ </target>
+
+
+ <target name="run-tests" depends="compile-tests">
+ <mkdir dir="build/test-output"/>
+ <junit fork="true" maxmemory="128m" dir="build/test-output" outputtoformatters="true" showoutput="true" haltonfailure="true">
+ <classpath>
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="build/classes"/>
+ <pathelement location="build/test-classes"/>
+ </classpath>
+ <formatter type="brief" usefile="false"/>
+
+ <test name="org.apache.warthog.tests.SanityTest" todir="build/test-output"/>
+ <!-- MHL -->
+
+ </junit>
+ </target>
+
+ <target name="run-perf-tests" depends="compile-tests">
+ <mkdir dir="build/test-output"/>
+ <junit fork="true" maxmemory="512m" dir="build/test-output" outputtoformatters="true" showoutput="true" haltonfailure="true">
+ <classpath>
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="build/classes"/>
+ <pathelement location="build/test-classes"/>
+ </classpath>
+ <formatter type="brief" usefile="false"/>
+
+ <test name="org.apache.warthog.tests.PerformanceTest" todir="build/test-output"/>
+ <test name="org.apache.warthog.tests.MultiThreadTest" todir="build/test-output"/>
+ <!-- MHL -->
+
+ </junit>
+ </target>
+
+ <target name="all" depends="compile,run-tests"/>
+
+</project>
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/lib/junit-4.7.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/lib/junit-4.7.jar?rev=1220349&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/lib/junit-4.7.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateAccessor.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateAccessor.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateAccessor.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateAccessor.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,178 @@
+/* $Id: AggregateAccessor.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+import java.util.*;
+
+/** Accessor class that returns aggregate rows.
+*/
+public class AggregateAccessor implements WHAccessor
+{
+ protected WHAccessor baseAccessor;
+ protected WHColumnCalculator[] returnColumnCalculators;
+ protected String[] returnColumnNames;
+ protected WHRowID currentRowID;
+ protected long nextRowNumber = 0L;
+ protected boolean finalRowRendered = false;
+
+ protected Map<String,WHValue> currentRowValues = new HashMap<String,WHValue>();
+
+ public AggregateAccessor(WHAccessor baseAccessor, WHColumnCalculator[] returnColumnCalculators, String[] returnColumnNames)
+ throws WHException
+ {
+ this.baseAccessor = baseAccessor;
+ this.returnColumnCalculators = returnColumnCalculators;
+ this.returnColumnNames = returnColumnNames;
+ goToNextLegalRow();
+ }
+
+ protected void goToNextLegalRow()
+ throws WHException
+ {
+ while (true)
+ {
+ WHRowID baseRowID = baseAccessor.getCurrentRowID();
+ if (baseRowID == null)
+ {
+ if (!finalRowRendered)
+ {
+ finalRowRendered = true;
+ // End! Tally all rows; there may a row of data we need to return still.
+ boolean seenNoValue = false;
+ for (int i = 0 ; i < returnColumnCalculators.length ; i++)
+ {
+ if (returnColumnCalculators[i].canGenerateSummaryValue() == false)
+ seenNoValue = true;
+ }
+
+ if (!seenNoValue)
+ {
+ if (tallyCalculators());
+ {
+ currentRowID = new LongRowID(nextRowNumber);
+ return;
+ }
+ }
+ }
+ // No final row
+ currentRowID = null;
+ currentRowValues = null;
+ return;
+ }
+ // Feed the row into all the calculators. If a value emerges from any one of them, demand a value
+ // from ALL of them and set up a new row.
+ boolean seenValue = false;
+ for (int i = 0 ; i < returnColumnCalculators.length ; i++)
+ {
+ if (returnColumnCalculators[i].canProcessRowValue(baseAccessor) == false)
+ seenValue = true;
+ }
+
+ if (seenValue)
+ {
+ if (tallyCalculators())
+ {
+ currentRowID = new LongRowID(nextRowNumber);
+ nextRowNumber++;
+ // By returning, we guarantee that the same base accessor row will be
+ // used again, which is part of the contract.
+ return;
+ }
+ }
+
+ // Add in the row to all column calculators
+ for (int i = 0 ; i < returnColumnCalculators.length ; i++)
+ {
+ returnColumnCalculators[i].processRowValue(baseAccessor);
+ }
+
+ // Go process the next base accessor row
+ baseAccessor.advance();
+ }
+ }
+
+ protected boolean tallyCalculators()
+ throws WHException
+ {
+ WHValue[] calculatedValues = new WHValue[returnColumnCalculators.length];
+ boolean seenValue = false;
+ boolean seenNoValue = false;
+ for (int i = 0 ; i < returnColumnCalculators.length ; i++)
+ {
+ calculatedValues[i] = returnColumnCalculators[i].tally();
+ if (calculatedValues[i] != null)
+ seenValue = true;
+ else
+ seenNoValue = true;
+ }
+ if (seenValue && seenNoValue)
+ throw new WHException("Column calculators cannot tally consistently");
+
+ if (seenValue)
+ {
+ currentRowValues.clear();
+ for (int i = 0 ; i < returnColumnCalculators.length ; i++)
+ {
+ currentRowValues.put(returnColumnNames[i],calculatedValues[i]);
+ }
+ }
+ return seenValue;
+ }
+
+ /** Advance to the next row.
+ */
+ public void advance()
+ throws WHException
+ {
+ if (currentRowID != null)
+ {
+ goToNextLegalRow();
+ }
+ }
+
+ /** Read the current relationship row ID, Null will be returned if we are
+ * at the end of the sequence.
+ */
+ public WHRowID getCurrentRowID()
+ throws WHException
+ {
+ return currentRowID;
+ }
+
+ /** Get the data for the current row and specified column.
+ */
+ public WHValue getValue(String columnName)
+ throws WHException
+ {
+ if (currentRowID != null)
+ return currentRowValues.get(columnName);
+ throw new WHException("Can't read beyond end of accessor");
+ }
+
+ protected static class LongRowID implements WHRowID
+ {
+ protected long value;
+
+ public LongRowID(long value)
+ {
+ this.value = value;
+ }
+ }
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateRelationship.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateRelationship.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateRelationship.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/AggregateRelationship.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,68 @@
+/* $Id: AggregateRelationship.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This relationship type applies column aggregation and row aggregation
+* capabilities.
+*/
+public class AggregateRelationship implements WHRelationship
+{
+ protected WHRelationship relationshipToAggregate;
+ protected WHColumnDescription[] returnColumnCalculators;
+ protected String[] returnColumnNames;
+
+ /** Constructor */
+ public AggregateRelationship(WHRelationship relationshipToAggregate,
+ WHColumnDescription[] returnColumnCalculators)
+ throws WHException
+ {
+ this.relationshipToAggregate = relationshipToAggregate;
+ this.returnColumnCalculators = returnColumnCalculators;
+ // Calculate the return column names
+ returnColumnNames = new String[returnColumnCalculators.length];
+ for (int i = 0 ; i < returnColumnCalculators.length ; i++)
+ {
+ returnColumnNames[i] = returnColumnCalculators[i].getReturnColumnName();
+ }
+ }
+
+ /** Get the column names represented by the relationship. */
+ public String[] getColumnNames()
+ throws WHException
+ {
+ return returnColumnNames;
+ }
+
+ /** Get the row accessor. This determines
+ * both the initial set of rows and the ordering. The results can be later filtered to
+ * yield the final output data.
+ */
+ public WHAccessor buildAccessor()
+ throws WHException
+ {
+ WHColumnCalculator[] calculators = new WHColumnCalculator[returnColumnCalculators.length];
+ for (int i = 0 ; i < calculators.length ; i++)
+ {
+ calculators[i] = returnColumnCalculators[i].createCalculator();
+ }
+ return new AggregateAccessor(relationshipToAggregate.buildAccessor(),calculators,returnColumnNames);
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnBreakOnChange.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnBreakOnChange.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnBreakOnChange.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnBreakOnChange.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,114 @@
+/* $Id: ColumnBreakOnChange.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class is used to create a column upon which presorted aggregation works.
+* By signaling when the value changes from row to row, this column definition creates
+* "buckets". which can be used for both DISTINCT and GROUP BY functionality,
+* as long as the rows returned by the underlying accessor are ordered by the column
+* being selected.
+*/
+public class ColumnBreakOnChange implements WHColumnDescription
+{
+ protected String baseColumnName;
+ protected String returnColumnName;
+
+ /** Constructor */
+ public ColumnBreakOnChange(String baseColumnName, String returnColumnName)
+ {
+ this.baseColumnName = baseColumnName;
+ this.returnColumnName = returnColumnName;
+ }
+
+ /** Get the name of the return column */
+ public String getReturnColumnName()
+ throws WHException
+ {
+ return returnColumnName;
+ }
+
+ /** Create a return column calculator for this column.
+ */
+ public WHColumnCalculator createCalculator()
+ throws WHException
+ {
+ return new BreakCalculator(baseColumnName);
+ }
+
+ protected static class BreakCalculator implements WHColumnCalculator
+ {
+ protected String baseColumnName;
+
+ protected WHValue previousValue = null;
+
+ public BreakCalculator(String baseColumnName)
+ {
+ this.baseColumnName = baseColumnName;
+ }
+
+ /** Check whether a row can be added to to the column calculator.
+ * Does NOT actually change the result of the calculator!
+ *@return true if the row can be added and false if a tally should be done immediately.
+ */
+ public boolean canProcessRowValue(WHAccessor accessor)
+ throws WHException
+ {
+ if (previousValue == null)
+ return true;
+ WHValue newValue = accessor.getValue(baseColumnName);
+ if (newValue.equals(previousValue))
+ return true;
+ return false;
+ }
+
+ /** Check whether this calculator is capable of generating a final summary row value.
+ *@return true if it is capable. tally() will only be called at the end for the summary
+ * row if all columns are capable of generating a summary value.
+ */
+ public boolean canGenerateSummaryValue()
+ throws WHException
+ {
+ return (previousValue != null);
+ }
+
+ /** Feed a row to the column calculator.
+ */
+ public void processRowValue(WHAccessor accessor)
+ throws WHException
+ {
+ previousValue = accessor.getValue(baseColumnName);
+ }
+
+ /** Tally a final result, obtaining whatever current aggregate value there is.
+ * Also resets the calculator in preparation for another set of rows.
+ */
+ public WHValue tally()
+ throws WHException
+ {
+ WHValue rval = previousValue;
+ previousValue = null;
+ return rval;
+ }
+
+ }
+
+}
+
+
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMax.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMax.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMax.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMax.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,127 @@
+/* $Id: ColumnMax.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class is used to create a column which finds the max of values found in the specified
+* base column.
+*/
+public class ColumnMax implements WHColumnDescription
+{
+ protected WHComparator comparator;
+ protected String baseColumnName;
+ protected String returnColumnName;
+
+ /** Constructor */
+ public ColumnMax(WHComparator comparator, String baseColumnName, String returnColumnName)
+ {
+ this.comparator = comparator;
+ this.baseColumnName = baseColumnName;
+ this.returnColumnName = returnColumnName;
+ }
+
+ /** Get the name of the return column */
+ public String getReturnColumnName()
+ throws WHException
+ {
+ return returnColumnName;
+ }
+
+ /** Create a return column calculator for this column.
+ */
+ public WHColumnCalculator createCalculator()
+ throws WHException
+ {
+ return new MaxCalculator(comparator,baseColumnName);
+ }
+
+ protected static class MaxCalculator implements WHColumnCalculator
+ {
+ protected WHComparator comparator;
+ protected String baseColumnName;
+
+ protected boolean firstValue = true;
+ protected WHValue max = null;
+
+ public MaxCalculator(WHComparator comparator, String baseColumnName)
+ {
+ this.comparator = comparator;
+ this.baseColumnName = baseColumnName;
+ }
+
+ /** Check whether a row can be added to to the column calculator.
+ * Does NOT actually change the result of the calculator!
+ *@return true if the row can be added and false if a tally should be done immediately.
+ */
+ public boolean canProcessRowValue(WHAccessor accessor)
+ throws WHException
+ {
+ // This calculator can always accept new values
+ return true;
+ }
+
+ /** Check whether this calculator is capable of generating a final summary row value.
+ *@return true if it is capable. tally() will only be called at the end for the summary
+ * row if all columns are capable of generating a summary value.
+ */
+ public boolean canGenerateSummaryValue()
+ throws WHException
+ {
+ // This calculator can only generate a summary value if there's at least one row
+ return !firstValue;
+ }
+
+ /** Feed a row to the column calculator.
+ */
+ public void processRowValue(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(baseColumnName);
+ if (value != null)
+ {
+ if (firstValue)
+ {
+ max = value;
+ firstValue = false;
+ }
+ else
+ {
+ if (comparator.compare(max,value) == WHComparator.RESULT_GREATER)
+ max = value;
+ }
+ }
+ }
+
+ /** Tally a final result, obtaining whatever current aggregate value there is.
+ * Also resets the calculator in preparation for another set of rows.
+ */
+ public WHValue tally()
+ throws WHException
+ {
+ WHValue rval = max;
+ max = null;
+ firstValue = true;
+ return rval;
+ }
+
+ }
+
+}
+
+
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMin.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMin.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMin.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/ColumnMin.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,127 @@
+/* $Id: ColumnMin.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class is used to create a column which finds minimum of values found in the specified
+* base column.
+*/
+public class ColumnMin implements WHColumnDescription
+{
+ protected WHComparator comparator;
+ protected String baseColumnName;
+ protected String returnColumnName;
+
+ /** Constructor */
+ public ColumnMin(WHComparator comparator, String baseColumnName, String returnColumnName)
+ {
+ this.comparator = comparator;
+ this.baseColumnName = baseColumnName;
+ this.returnColumnName = returnColumnName;
+ }
+
+ /** Get the name of the return column */
+ public String getReturnColumnName()
+ throws WHException
+ {
+ return returnColumnName;
+ }
+
+ /** Create a return column calculator for this column.
+ */
+ public WHColumnCalculator createCalculator()
+ throws WHException
+ {
+ return new MinCalculator(comparator,baseColumnName);
+ }
+
+ protected static class MinCalculator implements WHColumnCalculator
+ {
+ protected WHComparator comparator;
+ protected String baseColumnName;
+
+ protected boolean firstValue = true;
+ protected WHValue min = null;
+
+ public MinCalculator(WHComparator comparator, String baseColumnName)
+ {
+ this.comparator = comparator;
+ this.baseColumnName = baseColumnName;
+ }
+
+ /** Check whether a row can be added to to the column calculator.
+ * Does NOT actually change the result of the calculator!
+ *@return true if the row can be added and false if a tally should be done immediately.
+ */
+ public boolean canProcessRowValue(WHAccessor accessor)
+ throws WHException
+ {
+ // This calculator can always accept new values
+ return true;
+ }
+
+ /** Check whether this calculator is capable of generating a final summary row value.
+ *@return true if it is capable. tally() will only be called at the end for the summary
+ * row if all columns are capable of generating a summary value.
+ */
+ public boolean canGenerateSummaryValue()
+ throws WHException
+ {
+ // This calculator can only generate a summary value if there's at least one row
+ return !firstValue;
+ }
+
+ /** Feed a row to the column calculator.
+ */
+ public void processRowValue(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(baseColumnName);
+ if (value != null)
+ {
+ if (firstValue)
+ {
+ min = value;
+ firstValue = false;
+ }
+ else
+ {
+ if (comparator.compare(min,value) == WHComparator.RESULT_LESS)
+ min = value;
+ }
+ }
+ }
+
+ /** Tally a final result, obtaining whatever current aggregate value there is.
+ * Also resets the calculator in preparation for another set of rows.
+ */
+ public WHValue tally()
+ throws WHException
+ {
+ WHValue rval = min;
+ min = null;
+ firstValue = true;
+ return rval;
+ }
+
+ }
+
+}
+
+
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAccessor.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAccessor.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAccessor.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAccessor.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,81 @@
+/* $Id: FilterAccessor.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** Accessor class that performs generic filtering.
+*/
+public class FilterAccessor implements WHAccessor
+{
+ protected FilterCriteria filter;
+ protected WHAccessor baseAccessor;
+ protected WHRowID currentRowID;
+
+ public FilterAccessor(WHAccessor baseAccessor, FilterCriteria filter)
+ throws WHException
+ {
+ this.baseAccessor = baseAccessor;
+ this.filter = filter;
+ goToNextLegalRow();
+ }
+
+ protected void goToNextLegalRow()
+ throws WHException
+ {
+ while (true)
+ {
+ currentRowID = baseAccessor.getCurrentRowID();
+ if (currentRowID == null)
+ break;
+ if (filter == null || filter.include(baseAccessor))
+ break;
+ baseAccessor.advance();
+ }
+ }
+
+ /** Advance to the next row.
+ */
+ public void advance()
+ throws WHException
+ {
+ if (currentRowID != null)
+ {
+ baseAccessor.advance();
+ goToNextLegalRow();
+ }
+ }
+
+ /** Read the current relationship row ID, Null will be returned if we are
+ * at the end of the sequence.
+ */
+ public WHRowID getCurrentRowID()
+ throws WHException
+ {
+ return currentRowID;
+ }
+
+ /** Get the data for the current row and specified column.
+ */
+ public WHValue getValue(String columnName)
+ throws WHException
+ {
+ return baseAccessor.getValue(columnName);
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAfter.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAfter.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAfter.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterAfter.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,48 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering where a specific column is after a specific value, based
+* on a comparator.
+*/
+public class FilterAfter extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue matchValue;
+
+ public FilterAfter(String columnName, WHValue matchValue, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.matchValue = matchValue;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ return comparator.compare(value,matchValue) == WHComparator.RESULT_LESS;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBefore.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBefore.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBefore.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBefore.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,48 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering where a specific column is before a specific value, based
+* on a comparator.
+*/
+public class FilterBefore extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue matchValue;
+
+ public FilterBefore(String columnName, WHValue matchValue, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.matchValue = matchValue;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ return comparator.compare(value,matchValue) == WHComparator.RESULT_GREATER;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBetween.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBetween.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBetween.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterBetween.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,54 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering where a specific column is between two specific values, based
+* on a comparator.
+*/
+public class FilterBetween extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue afterValue;
+ protected WHValue beforeValue;
+
+ public FilterBetween(String columnName, WHValue afterValue, WHValue beforeValue, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.afterValue = afterValue;
+ this.beforeValue = beforeValue;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ int afterResult = comparator.compare(value,afterValue);
+ if (afterResult != WHComparator.RESULT_LESS)
+ return false;
+ int beforeResult = comparator.compare(value,beforeValue);
+ return beforeResult == WHComparator.RESULT_GREATER;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterCriteria.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterCriteria.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterCriteria.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterCriteria.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,38 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This base class specifies filtering that is applied on top of an accessor.
+*/
+public class FilterCriteria
+{
+ public FilterCriteria()
+ {
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ return true;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEquals.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEquals.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEquals.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEquals.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,47 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering on a specific column for a specific value.
+*/
+public class FilterEquals extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue matchValue;
+
+ public FilterEquals(String columnName, WHValue matchValue, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.matchValue = matchValue;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ return comparator.compare(value,matchValue) == WHComparator.RESULT_EQUALS;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsMultiple.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsMultiple.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsMultiple.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsMultiple.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,52 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering on a specific column for a specific set of values.
+*/
+public class FilterEqualsMultiple extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue[] matchValues;
+
+ public FilterEqualsMultiple(String columnName, WHValue[] matchValues, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.matchValues = matchValues;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ for (int i = 0 ; i < matchValues.length ; i++)
+ {
+ if (comparator.compare(value,matchValues[i]) == WHComparator.RESULT_EQUALS)
+ return true;
+ }
+ return false;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrAfter.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrAfter.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrAfter.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrAfter.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,49 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering where a specific column is equal to or after a specific value, based
+* on a comparator.
+*/
+public class FilterEqualsOrAfter extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue matchValue;
+
+ public FilterEqualsOrAfter(String columnName, WHValue matchValue, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.matchValue = matchValue;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ int result = comparator.compare(value,matchValue);
+ return result == WHComparator.RESULT_LESS || result == WHComparator.RESULT_EQUALS;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrBefore.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrBefore.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrBefore.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterEqualsOrBefore.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,49 @@
+/* $Id: FilterCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class specifies filtering where a specific column is equal to or before a specific value, based
+* on a comparator.
+*/
+public class FilterEqualsOrBefore extends FilterCriteria
+{
+ protected WHComparator comparator;
+ protected String columnName;
+ protected WHValue matchValue;
+
+ public FilterEqualsOrBefore(String columnName, WHValue matchValue, WHComparator comparator)
+ {
+ super();
+ this.comparator = comparator;
+ this.columnName = columnName;
+ this.matchValue = matchValue;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHValue value = accessor.getValue(columnName);
+ int result = comparator.compare(value,matchValue);
+ return result == WHComparator.RESULT_GREATER || result == WHComparator.RESULT_EQUALS;
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationship.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationship.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationship.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationship.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,53 @@
+/* $Id: FilterRelationship.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This relationship type applies filtering criteria on top of another relationship.
+*/
+public class FilterRelationship implements WHRelationship
+{
+ protected WHRelationship relationshipToFilter;
+ protected FilterCriteria filterer;
+
+ /** Constructor */
+ public FilterRelationship(WHRelationship relationshipToFilter, FilterCriteria filterer)
+ {
+ this.relationshipToFilter = relationshipToFilter;
+ this.filterer = filterer;
+ }
+
+ /** Get the column names represented by the relationship. */
+ public String[] getColumnNames()
+ throws WHException
+ {
+ return relationshipToFilter.getColumnNames();
+ }
+
+ /** Get the row accessor. This determines
+ * both the initial set of rows and the ordering. The results can be later filtered to
+ * yield the final output data.
+ */
+ public WHAccessor buildAccessor()
+ throws WHException
+ {
+ return new FilterAccessor(relationshipToFilter.buildAccessor(),filterer);
+ }
+
+}
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationshipBuilder.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationshipBuilder.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationshipBuilder.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterRelationshipBuilder.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,100 @@
+/* $Id: FilterRelationshipBuilder.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+import java.lang.reflect.*;
+
+/** Build a relationship based on another WHRelationshipBuilder with an applied filter.
+*/
+public class FilterRelationshipBuilder implements WHRelationshipBuilder
+{
+ protected WHRelationshipBuilder baseRelationshipBuilder;
+ protected FilterCriteria filterer;
+ protected String columnToFilter;
+ protected String filterClassName;
+ protected String matchColumnName;
+ protected WHComparator comparator;
+
+ /** Constructor.
+ * Can be called on one of two ways. Either filterer is null and matchColumnName, columnToFilter, and filterClassName
+ * are set, or filterer is non-null. The class specified by filterClassName will be instantiated
+ * using the XXX(columnName, value) constructor.
+ */
+ public FilterRelationshipBuilder(WHRelationshipBuilder baseRelationshipBuilder,
+ FilterCriteria filterer, String matchColumnName, String filterClassName, String columnToFilter,
+ WHComparator comparator)
+ throws WHException
+ {
+ this.baseRelationshipBuilder = baseRelationshipBuilder;
+ this.filterer = filterer;
+ this.columnToFilter = columnToFilter;
+ this.filterClassName = filterClassName;
+ this.matchColumnName = matchColumnName;
+ this.comparator = comparator;
+ }
+
+ /** Construct a relationship based on the specified accessor row.
+ */
+ public WHRelationship createRelationship(WHAccessor accessor)
+ throws WHException
+ {
+ // Build the base accessor using the accessor builder we've been handed
+ WHRelationship baseRelationship = baseRelationshipBuilder.createRelationship(accessor);
+
+ if (matchColumnName != null && columnToFilter != null && filterClassName != null &&
+ comparator != null)
+ {
+ WHValue theMatchValue = accessor.getValue(matchColumnName);
+ try
+ {
+ Class classValue = Class.forName(filterClassName);
+ Constructor constructor = classValue.getConstructor(new Class[]{String.class,WHValue.class,WHComparator.class});
+ Object object = constructor.newInstance(new Object[]{columnToFilter,theMatchValue,comparator});
+ if (!(object instanceof FilterCriteria))
+ throw new WHException("Filter class '"+filterClassName+"' does not extend FilterCriteria");
+ filterer = (FilterCriteria)object;
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new WHException("Can't find filter class '"+filterClassName+"': "+e.getMessage(),e);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new WHException("Filter class '"+filterClassName+"' does not have a constructor with (String,WHValue,WHComparator) arguments: "+e.getMessage(),e);
+ }
+ catch (InvocationTargetException e)
+ {
+ throw new WHException("Constructor exception instantiating filter class '"+filterClassName+"': "+e.getMessage(),e);
+ }
+ catch (InstantiationException e)
+ {
+ throw new WHException("Instantiation exception for filter class '"+filterClassName+"': "+e.getMessage(),e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new WHException("Filter class '"+filterClassName+"' (String,WHValue,WHComparator) constructor has protected access",e);
+ }
+ }
+
+ // Now build the filter relationship with it.
+ return new FilterRelationship(baseRelationship,filterer);
+ }
+
+}
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterSubquery.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterSubquery.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterSubquery.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/FilterSubquery.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,54 @@
+/* $Id: FilterSubquery.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** Filter using a secondary index, in either an "exists" or "not exists"
+* way. This filter must build a new accessor for every isUnfiltered() request,
+* and return 'true' if the accessor is non-empty, or the converse (depending on the
+* setting of the isExists flag).
+* Note that there are a number of 'moving parts' needed to make this filter work.
+* The accessor must be constructed on the fly, so there has to be some code that
+* finds the right table or index accessor based on the join criteria. That's going to
+* be handled by a class implementing WHRelationshipBuilder.
+*/
+public class FilterSubquery extends FilterCriteria
+{
+ protected boolean isExists;
+ protected WHRelationshipBuilder builder;
+
+ /** Constructor */
+ public FilterSubquery(boolean isExists, WHRelationshipBuilder builder)
+ {
+ super();
+ this.isExists = isExists;
+ this.builder = builder;
+ }
+
+ /** Check if a row should be filtered or not.
+ */
+ @Override
+ public boolean include(WHAccessor accessor)
+ throws WHException
+ {
+ WHRelationship checkerRelationship = builder.createRelationship(accessor);
+ return isExists ^ (checkerRelationship.buildAccessor().getCurrentRowID() == null);
+ }
+
+}
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexAfter.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexAfter.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexAfter.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexAfter.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,62 @@
+/* $Id: IndexAfter.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class represents index criteria designed to locate matches that follow
+* a specific WHValue.
+*/
+public class IndexAfter extends IndexCriteria
+{
+ protected WHValue value;
+
+ /** Constructor */
+ public IndexAfter(WHValue value)
+ {
+ super();
+ this.value = value;
+ }
+
+ /** Evaluate a given value (which comes from a table row described by a btree node, and which
+ * may turn out to be null) against the criteria as determined by this class, and return
+ * an appropriate bit pattern. The bit pattern is used to limit which branches of the index tree the search
+ * should descend.
+ *
+ * The comparator is provided to allow simple inequality comparisons against known values using the same logic
+ * as the index is organized by.
+ */
+ public int evaluateValue(WHValue value, WHComparator comparator)
+ throws WHException
+ {
+ int result = comparator.compare(value,this.value);
+ if (result == WHComparator.RESULT_EQUALS)
+ return SIGNAL_GREATER;
+
+ if (result == WHComparator.RESULT_GREATER)
+ return SIGNAL_GREATER;
+
+ if (result == WHComparator.RESULT_LESS)
+ return SIGNAL_LESSER | SIGNAL_EQUALS | SIGNAL_GREATER;
+
+ throw new WHException("Comparator returned unexpected value");
+ }
+
+}
+
+
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBefore.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBefore.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBefore.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBefore.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,62 @@
+/* $Id: IndexBefore.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class represents index criteria designed to locate matches that precede
+* a specific WHValue.
+*/
+public class IndexBefore extends IndexCriteria
+{
+ protected WHValue value;
+
+ /** Constructor */
+ public IndexBefore(WHValue value)
+ {
+ super();
+ this.value = value;
+ }
+
+ /** Evaluate a given value (which comes from a table row described by a btree node, and which
+ * may turn out to be null) against the criteria as determined by this class, and return
+ * an appropriate bit pattern. The bit pattern is used to limit which branches of the index tree the search
+ * should descend.
+ *
+ * The comparator is provided to allow simple inequality comparisons against known values using the same logic
+ * as the index is organized by.
+ */
+ public int evaluateValue(WHValue value, WHComparator comparator)
+ throws WHException
+ {
+ int result = comparator.compare(value,this.value);
+ if (result == WHComparator.RESULT_EQUALS)
+ return SIGNAL_LESSER;
+
+ if (result == WHComparator.RESULT_GREATER)
+ return SIGNAL_GREATER | SIGNAL_EQUALS | SIGNAL_LESSER;
+
+ if (result == WHComparator.RESULT_LESS)
+ return SIGNAL_LESSER;
+
+ throw new WHException("Comparator returned unexpected value");
+ }
+
+}
+
+
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBetween.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBetween.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBetween.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexBetween.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,74 @@
+/* $Id: IndexBetween.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class represents index criteria designed to locate matches that follow
+* a specific WHValue, but precede a second WHValue, non-inclusive.
+*/
+public class IndexBetween extends IndexCriteria
+{
+ protected WHValue afterValue;
+ protected WHValue beforeValue;
+
+ /** Constructor */
+ public IndexBetween(WHValue afterValue, WHValue beforeValue)
+ {
+ super();
+ this.afterValue = afterValue;
+ this.beforeValue = beforeValue;
+ }
+
+ /** Evaluate a given value (which comes from a table row described by a btree node, and which
+ * may turn out to be null) against the criteria as determined by this class, and return
+ * an appropriate bit pattern. The bit pattern is used to limit which branches of the index tree the search
+ * should descend.
+ *
+ * The comparator is provided to allow simple inequality comparisons against known values using the same logic
+ * as the index is organized by.
+ */
+ public int evaluateValue(WHValue value, WHComparator comparator)
+ throws WHException
+ {
+ int afterResult = comparator.compare(value,afterValue);
+ if (afterResult == WHComparator.RESULT_EQUALS)
+ return SIGNAL_GREATER;
+
+ if (afterResult == WHComparator.RESULT_GREATER)
+ return SIGNAL_GREATER;
+
+ if (afterResult == WHComparator.RESULT_LESS)
+ {
+ int beforeResult = comparator.compare(value,beforeValue);
+ if (beforeResult == WHComparator.RESULT_EQUALS)
+ return SIGNAL_LESSER;
+
+ if (beforeResult == WHComparator.RESULT_GREATER)
+ return SIGNAL_LESSER | SIGNAL_EQUALS | SIGNAL_GREATER;
+
+ if (beforeResult == WHComparator.RESULT_LESS)
+ return SIGNAL_LESSER;
+ }
+
+ throw new WHException("Comparator returned unexpected value");
+ }
+
+}
+
+
\ No newline at end of file
Added: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexCriteria.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexCriteria.java?rev=1220349&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexCriteria.java (added)
+++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/main/java/org/apache/warthog/api/IndexCriteria.java Sun Dec 18 08:26:30 2011
@@ -0,0 +1,62 @@
+/* $Id: IndexCriteria.java -1 $ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 org.apache.warthog.api;
+
+/** This class represents what is needed to scan an index and make decisions about
+* what subtrees to descend into, and which not to. An instance of this interface will
+* be present for each column present in the index. Override this class to provide
+* specific exclusions for specific index scans.
+*/
+public class IndexCriteria
+{
+ // Return signals. This constitutes 3 bits which determine how to proceed in order
+ // to locate the next matching row in the index, at least as far as the current
+ // comparator and key are concerned.
+
+ // Zero value for the bit indicates "skip", while a 1 value indicates "descend".
+
+ public static final int SIGNAL_LESSER = 1;
+ public static final int SIGNAL_GREATER = 2;
+ public static final int SIGNAL_EQUALS = 4;
+
+ /** Constructor */
+ public IndexCriteria()
+ {
+ }
+
+ /** Evaluate a given value (which comes from a table row described by a btree node, and which
+ * may turn out to be null) against the criteria as determined by this class, and return
+ * an appropriate bit pattern. The bit pattern is used to limit which branches of the index tree the search
+ * should descend.
+ *
+ * The comparator is provided to allow simple inequality comparisons against known values using the same logic
+ * as the index is organized by.
+ */
+ public int evaluateValue(WHValue value, WHComparator comparator)
+ throws WHException
+ {
+ // The base case is that there is no limiting criteria, so that the criteria places no restrictions
+ // on which way we are allowed to descend.
+ return SIGNAL_LESSER | SIGNAL_GREATER | SIGNAL_EQUALS;
+ }
+
+}
+
+
\ No newline at end of file