From e66650b0ed3fcb688e798cb36f101abf56741c8a Mon Sep 17 00:00:00 2001 From: Trevor Strohman Date: Wed, 5 Dec 2007 21:10:28 -0500 Subject: [PATCH] Bringing tree up to date. --- java/galago/dist/galago.jar | Bin 3133744 -> 3151413 bytes java/galago/nbproject/build-impl.xml | 9 ++++- java/galago/nbproject/genfiles.properties | 4 +- java/galago/nbproject/project.properties | 6 ++- java/galago/src/galago/Sorts.java | 2 +- .../src/galago/index/PositionListWriter.java | 43 ++++++++++++--------- .../src/galago/parse/DocumentStreamParser.java | 3 -- java/galago/src/galago/parse/ExtentExtractor.java | 1 - java/galago/src/galago/parse/UniversalParser.java | 1 - .../retrieval/BinOrderedBinnedRetrieval.java | 8 ---- .../src/galago/tupleflow/FileOrderedReader.java | 4 ++ .../galago/src/galago/tupleflow/NullProcessor.java | 22 ++++++++++- .../src/galago/tupleflow/OrderedCombiner.java | 14 +++++++ java/galago/src/galago/tupleflow/Step.java | 2 - java/galago/src/galago/tupleflow/VByteInput.java | 2 +- 15 files changed, 80 insertions(+), 41 deletions(-) diff --git a/java/galago/dist/galago.jar b/java/galago/dist/galago.jar index fe82e9321f1a3dfb22f58ce595fd50d652341b8a..ad2e063e7ac96b5c50b9c211cf80da002fbce95e 100644 GIT binary patch delta 68087 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 delta 56250 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 + + + + + + @@ -146,7 +152,6 @@ is divided into following sections: - @@ -154,7 +159,7 @@ is divided into following sections: - + diff --git a/java/galago/nbproject/genfiles.properties b/java/galago/nbproject/genfiles.properties index 520c598..6cb877b 100644 --- a/java/galago/nbproject/genfiles.properties +++ b/java/galago/nbproject/genfiles.properties @@ -4,8 +4,8 @@ build.xml.stylesheet.CRC32=d5b6853a # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=55ff3b0b -nbproject/build-impl.xml.script.CRC32=cfc4cddf -nbproject/build-impl.xml.stylesheet.CRC32=eab35451 +nbproject/build-impl.xml.script.CRC32=9766b029 +nbproject/build-impl.xml.stylesheet.CRC32=f1d9da08 nbproject/profiler-build-impl.xml.data.CRC32=4f301049 nbproject/profiler-build-impl.xml.script.CRC32=abda56ed nbproject/profiler-build-impl.xml.stylesheet.CRC32=a5b6598e diff --git a/java/galago/nbproject/project.properties b/java/galago/nbproject/project.properties index 1b5584e..b0044bb 100644 --- a/java/galago/nbproject/project.properties +++ b/java/galago/nbproject/project.properties @@ -29,6 +29,8 @@ file.reference.junit-3.8.1.jar=lib/junit-3.8.1.jar file.reference.log4j-1.2.13.jar=lib/log4j-1.2.13.jar file.reference.script-api.jar=lib/script-api.jar file.reference.script-js.jar=lib/script-js.jar +file.reference.smack.jar=../../../../othercode/smack_3_0_4/smack.jar +file.reference.smackx.jar=../../../../othercode/smack_3_0_4/smackx.jar file.reference.stringtemplate-3.0.jar=lib/stringtemplate-3.0.jar includes=** jar.compress=false @@ -42,7 +44,9 @@ javac.classpath=\ ${file.reference.stringtemplate-3.0.jar}:\ ${file.reference.js.jar}:\ ${file.reference.script-api.jar}:\ - ${file.reference.script-js.jar} + ${file.reference.script-js.jar}:\ + ${file.reference.smack.jar}:\ + ${file.reference.smackx.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/java/galago/src/galago/Sorts.java b/java/galago/src/galago/Sorts.java index 9eede68..e67e146 100644 --- a/java/galago/src/galago/Sorts.java +++ b/java/galago/src/galago/Sorts.java @@ -52,7 +52,7 @@ public class Sorts { for( int i=0; i 0 ) + if( documents.length() > 0 ) counts.add( positionCount ); header.add( options ); @@ -72,10 +72,17 @@ public class PositionListWriter implements NumberWordPosition.WordDocumentPositi } public void write( final DataOutputStream output ) throws IOException { - output.write( header.getBytes(), 0, header.length() ); - output.write( documents.getBytes(), 0, documents.length() ); - output.write( counts.getBytes(), 0, counts.length() ); - output.write( positions.getBytes(), 0, positions.length() ); + header.write(output); + header.clear(); + + documents.write(output); + documents.clear(); + + counts.write(output); + counts.clear(); + + positions.write(output); + positions.clear(); } public byte[] word() { @@ -90,9 +97,9 @@ public class PositionListWriter implements NumberWordPosition.WordDocumentPositi this.positionCount = 0; } - public void addDocument( long documentID ) { + public void addDocument( long documentID ) throws IOException { // add the last document's counts - if( documents.position > 0 ) + if( documents.length() > 0 ) counts.add( positionCount ); documents.add( documentID - lastDocument ); @@ -103,7 +110,7 @@ public class PositionListWriter implements NumberWordPosition.WordDocumentPositi documentCount++; } - public void addPosition( int position ) { + public void addPosition( int position ) throws IOException { positionCount++; totalPositionCount++; positions.add( position - lastPosition ); @@ -117,10 +124,10 @@ public class PositionListWriter implements NumberWordPosition.WordDocumentPositi private int totalPositionCount; public byte[] word; - public CompressedByteBuffer header; - public CompressedByteBuffer documents; - public CompressedByteBuffer counts; - public CompressedByteBuffer positions; + public BackedCompressedByteBuffer header; + public BackedCompressedByteBuffer documents; + public BackedCompressedByteBuffer counts; + public BackedCompressedByteBuffer positions; } long maximumDocumentCount = 0; @@ -159,7 +166,7 @@ public class PositionListWriter implements NumberWordPosition.WordDocumentPositi lastWord = wordBytes; } - public void processDocument( int document ) { + public void processDocument( int document ) throws IOException { invertedList.addDocument( document ); documentCount++; maximumDocumentNumber = Math.max( document, maximumDocumentNumber ); diff --git a/java/galago/src/galago/parse/DocumentStreamParser.java b/java/galago/src/galago/parse/DocumentStreamParser.java index 236df4c..d3c591d 100644 --- a/java/galago/src/galago/parse/DocumentStreamParser.java +++ b/java/galago/src/galago/parse/DocumentStreamParser.java @@ -11,9 +11,6 @@ package galago.parse; import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * diff --git a/java/galago/src/galago/parse/ExtentExtractor.java b/java/galago/src/galago/parse/ExtentExtractor.java index 0506c82..9da069b 100644 --- a/java/galago/src/galago/parse/ExtentExtractor.java +++ b/java/galago/src/galago/parse/ExtentExtractor.java @@ -8,7 +8,6 @@ package galago.parse; -import galago.Utility; import galago.tupleflow.InputClass; import galago.tupleflow.OutputClass; import galago.tupleflow.StandardStep; diff --git a/java/galago/src/galago/parse/UniversalParser.java b/java/galago/src/galago/parse/UniversalParser.java index e60330d..31ef1a4 100644 --- a/java/galago/src/galago/parse/UniversalParser.java +++ b/java/galago/src/galago/parse/UniversalParser.java @@ -14,7 +14,6 @@ import galago.tupleflow.StandardStep; import galago.tupleflow.execution.Verified; import galago.types.FileName; import java.io.IOException; -import java.util.logging.Level; import java.util.logging.Logger; /** diff --git a/java/galago/src/galago/retrieval/BinOrderedBinnedRetrieval.java b/java/galago/src/galago/retrieval/BinOrderedBinnedRetrieval.java index 3afab80..3aa2e3a 100644 --- a/java/galago/src/galago/retrieval/BinOrderedBinnedRetrieval.java +++ b/java/galago/src/galago/retrieval/BinOrderedBinnedRetrieval.java @@ -74,14 +74,6 @@ public class BinOrderedBinnedRetrieval extends Retrieval { return words; } - public static class NullProcessor implements Processor { - Class inputClass; - public NullProcessor( Class inputClass ) { this.inputClass = inputClass; } - public void process( T object ) {} - public void close() {} - public Class getInputClass() { return inputClass; } - } - public List transformQuery( BinOrderedBinnedIndex index, List qTerms ) throws IOException { ArrayList resultingTerms = new ArrayList(); diff --git a/java/galago/src/galago/tupleflow/FileOrderedReader.java b/java/galago/src/galago/tupleflow/FileOrderedReader.java index a6fe7fa..26cb36f 100644 --- a/java/galago/src/galago/tupleflow/FileOrderedReader.java +++ b/java/galago/src/galago/tupleflow/FileOrderedReader.java @@ -97,6 +97,10 @@ public class FileOrderedReader implements ReaderSource { orderedReader.run(); } + public Order getOrder() { + return order; + } + public TypeReader getOrderedReader() { return orderedReader; } diff --git a/java/galago/src/galago/tupleflow/NullProcessor.java b/java/galago/src/galago/tupleflow/NullProcessor.java index e779e29..ae3736f 100644 --- a/java/galago/src/galago/tupleflow/NullProcessor.java +++ b/java/galago/src/galago/tupleflow/NullProcessor.java @@ -8,13 +8,21 @@ package galago.tupleflow; +import galago.tupleflow.execution.ErrorHandler; +import galago.tupleflow.execution.Verification; + /** * * @author trevor */ + public class NullProcessor implements Processor { Class inputClass; + public NullProcessor() { + inputClass = null; + } + public NullProcessor( TupleFlowParameters parameters ) throws ClassNotFoundException { String className = parameters.getXML().get("class"); this.inputClass = (Class) Class.forName(className); @@ -23,5 +31,17 @@ public class NullProcessor implements Processor { public NullProcessor( Class inputClass ) { this.inputClass = inputClass; } public void process( T object ) {} public void close() {} - public Class getInputClass() { return inputClass; } + + public static String getInputClass( TupleFlowParameters parameters ) { + return parameters.getXML().get( "class", "" ); + } + + public static String[] getInputOrder( TupleFlowParameters parameters ) { + String[] orderSpec = parameters.getXML().get( "order", "" ).split( " " ); + return orderSpec; + } + + public static void verify( TupleFlowParameters parameters, ErrorHandler handler ) { + Verification.requireParameters( new String[] { "class" }, parameters.getXML(), handler ); + } } diff --git a/java/galago/src/galago/tupleflow/OrderedCombiner.java b/java/galago/src/galago/tupleflow/OrderedCombiner.java index b6bfd5a..3066535 100644 --- a/java/galago/src/galago/tupleflow/OrderedCombiner.java +++ b/java/galago/src/galago/tupleflow/OrderedCombiner.java @@ -92,6 +92,20 @@ public class OrderedCombiner implements ReaderSource { } return new OrderedCombiner(inputs, readers, order, processor, closeOnExit); + } + + @SuppressWarnings(value = "unchecked") + public static OrderedCombiner combineFromFiles(List filenames) throws IOException { + TypeReader[] inputs = new TypeReader[filenames.size()]; + FileOrderedReader[] readers = new FileOrderedReader[filenames.size()]; + assert filenames.size() > 0; + + for (int i = 0; i < filenames.size(); i++) { + readers[i] = new FileOrderedReader(filenames.get(i)); + inputs[i] = readers[i].getOrderedReader(); + } + + return new OrderedCombiner(inputs, readers, readers[0].getOrder(), null, true); } public static OrderedCombiner combineFromFiles(List filenames, Order order, Processor processor) throws IOException { diff --git a/java/galago/src/galago/tupleflow/Step.java b/java/galago/src/galago/tupleflow/Step.java index d73f032..0b85b91 100644 --- a/java/galago/src/galago/tupleflow/Step.java +++ b/java/galago/src/galago/tupleflow/Step.java @@ -8,8 +8,6 @@ package galago.tupleflow; -import org.xml.sax.ErrorHandler; - /** * This interface is empty. Its purpose is as a base interface for * any pipelinable object (Source or Processor). diff --git a/java/galago/src/galago/tupleflow/VByteInput.java b/java/galago/src/galago/tupleflow/VByteInput.java index f1e3790..5c2aab1 100644 --- a/java/galago/src/galago/tupleflow/VByteInput.java +++ b/java/galago/src/galago/tupleflow/VByteInput.java @@ -69,7 +69,7 @@ public class VByteInput implements DataInput { public int readInt() throws IOException { int result = 0; int b; - + for( int position = 0; true; position++ ) { b = input.readUnsignedByte(); -- 2.11.4.GIT