/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springmodules.lucene.index.factory;
import java.io.IOException;
import java.util.Collection;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.index.TermFreqVector;
import org.apache.lucene.index.TermPositions;
import org.apache.lucene.index.IndexReader.FieldOption;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.store.Directory;
import org.springmodules.lucene.search.factory.LuceneSearcher;
import org.springmodules.lucene.search.factory.SimpleLuceneSearcher;
/**
* Simple implementation of the {@link LuceneIndexReader} interface
* in order to wrap an instance of IndexReader and delegate method
* calls to it.
*
* @author Thierry Templier
* @see org.apache.lucene.index.IndexReader
*/
public class SimpleLuceneIndexReader implements LuceneIndexReader {
private IndexReader indexReader;
/**
* Create a new SimpleLuceneIndexReader.
*
* @param indexReader an instance of IndexReader to wrap
*/
public SimpleLuceneIndexReader(IndexReader indexReader) {
this.indexReader = indexReader;
}
/**
* @see LuceneIndexReader#directory()
*/
public Directory directory() {
return indexReader.directory();
}
/**
* @see LuceneIndexReader#docFreq(Term)
*/
public int docFreq(Term term) throws IOException {
return indexReader.docFreq(term);
}
/**
* @see LuceneIndexReader#document(int)
*/
public Document document(int n) throws IOException {
return indexReader.document(n);
}
/**
* @see LuceneIndexReader#equals(Object)
*/
public boolean equals(Object obj) {
return indexReader.equals(obj);
}
/**
* @see LuceneIndexReader#getFieldNames(FieldOption)
*/
public Collection getFieldNames(FieldOption fldOption) {
return indexReader.getFieldNames(fldOption);
}
/**
* @see LuceneIndexReader#getTermFreqVector(int, String)
*/
public TermFreqVector getTermFreqVector(int docNumber, String field) throws IOException {
return indexReader.getTermFreqVector(docNumber, field);
}
/**
* @see LuceneIndexReader#getTermFreqVectors(int)
*/
public TermFreqVector[] getTermFreqVectors(int docNumber) throws IOException {
return indexReader.getTermFreqVectors(docNumber);
}
/**
* @see LuceneIndexReader#getVersion()
*/
public long getVersion() {
return indexReader.getVersion();
}
/**
* @see LuceneIndexReader#hasDeletions()
*/
public boolean hasDeletions() {
return indexReader.hasDeletions();
}
/**
* @see LuceneIndexReader#hashCode()
*/
public int hashCode() {
return indexReader.hashCode();
}
/**
* @see LuceneIndexReader#hasNorms(String)
*/
public boolean hasNorms(String field) throws IOException {
return indexReader.hasNorms(field);
}
/**
* @see LuceneIndexReader#isCurrent()
*/
public boolean isCurrent() throws IOException {
return indexReader.isCurrent();
}
/**
* @see LuceneIndexReader#isDeleted(int)
*/
public boolean isDeleted(int n) {
return indexReader.isDeleted(n);
}
/**
* @see LuceneIndexReader#maxDoc()
*/
public int maxDoc() {
return indexReader.maxDoc();
}
/**
* @see LuceneIndexReader#norms(String, byte[], int)
*/
public void norms(String field, byte[] bytes, int offset) throws IOException {
indexReader.norms(field, bytes, offset);
}
/**
* @see LuceneIndexReader#norms(String)
*/
public byte[] norms(String field) throws IOException {
return indexReader.norms(field);
}
/**
* @see LuceneIndexReader#numDocs()
*/
public int numDocs() {
return indexReader.numDocs();
}
/**
* @see LuceneIndexReader#setNorm(int, String, float)
*/
public void setNorm(int doc, String field, float value) throws IOException {
indexReader.setNorm(doc, field, value);
}
/**
* @see LuceneIndexReader#termDocs()
*/
public TermDocs termDocs() throws IOException {
return indexReader.termDocs();
}
/**
* @see LuceneIndexReader#termDocs()
*/
public TermDocs termDocs(Term term) throws IOException {
return indexReader.termDocs(term);
}
/**
* @see LuceneIndexReader#termPositions()
*/
public TermPositions termPositions() throws IOException {
return indexReader.termPositions();
}
/**
* @see LuceneIndexReader#termPositions(Term)
*/
public TermPositions termPositions(Term term) throws IOException {
return indexReader.termPositions(term);
}
/**
* @see LuceneIndexReader#terms()
*/
public TermEnum terms() throws IOException {
return indexReader.terms();
}
/**
* @see LuceneIndexReader#terms(Term)
*/
public TermEnum terms(Term term) throws IOException {
return indexReader.terms(term);
}
/**
* @see LuceneIndexReader#close()
*/
public void close() throws IOException {
indexReader.close();
}
/**
* @see LuceneIndexReader#createSearcher()
*/
public LuceneSearcher createSearcher() {
//TODO: to be implemented
//throw new IllegalAccessException("Not implemented!");
Searcher nativeSearcher = new IndexSearcher(indexReader);
return new SimpleLuceneSearcher(nativeSearcher);
}
/**
* @see LuceneIndexReader#deleteDocument(int)
*/
public void deleteDocument(int docNum) throws IOException {
indexReader.deleteDocument(docNum);
}
/**
* @see LuceneIndexReader#deleteDocuments(Term)
*/
public int deleteDocuments(Term term) throws IOException {
return indexReader.deleteDocuments(term);
}
/**
* @see LuceneIndexReader#setNorm(int, String, byte)
*/
public void setNorm(int doc, String field, byte value) throws IOException {
indexReader.setNorm(doc, field, value);
}
/**
* @see LuceneIndexReader#undeleteAll()
*/
public void undeleteAll() throws IOException {
indexReader.undeleteAll();
}
/**
* @see LuceneIndexReader#createNativeSearcher()
*/
public Searcher createNativeSearcher() {
return new IndexSearcher(indexReader);
}
}