/**
* This software is licensed to you under the Apache License, Version 2.0 (the
* "Apache License").
*
* LinkedIn's contributions are made under the Apache License. If you contribute
* to the Software, the contributions will be deemed to have been made under the
* Apache License, unless you expressly indicate otherwise. Please do not make any
* contributions that would be inconsistent with the Apache License.
*
* You may obtain a copy of the Apache License at http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, this software
* distributed under the Apache License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache
* License for the specific language governing permissions and limitations for the
* software governed under the Apache License.
*
* © 2012 LinkedIn Corp. All Rights Reserved.
*/
package com.senseidb.search.node.inmemory;
import java.util.Collections;
import java.util.List;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.util.Version;
import proj.zoie.api.IndexReaderFactory;
import proj.zoie.api.ZoieIndexReader;
import com.browseengine.bobo.api.BoboIndexReader;
import com.senseidb.indexing.SenseiIndexPruner;
import com.senseidb.search.node.SenseiCore;
import com.senseidb.search.node.SenseiIndexReaderDecorator;
import com.senseidb.search.node.impl.DefaultJsonQueryBuilderFactory;
public class MockSenseiCore extends SenseiCore {
private final ThreadLocal<MockIndexReaderFactory<ZoieIndexReader<BoboIndexReader>>> mockIndexReaderFactory = new ThreadLocal<MockIndexReaderFactory<ZoieIndexReader<BoboIndexReader>>>();
private final int[] partitions;
private static MockIndexReaderFactory<ZoieIndexReader<BoboIndexReader>> emptyIndexFactory = new MockIndexReaderFactory<ZoieIndexReader<BoboIndexReader>>(Collections.EMPTY_LIST);
public MockSenseiCore(int[] partitions, SenseiIndexReaderDecorator senseiIndexReaderDecorator) {
super(0, new int[] { 0 }, null, null, new DefaultJsonQueryBuilderFactory(new QueryParser(Version.LUCENE_35, "contents",
new StandardAnalyzer(Version.LUCENE_35))), senseiIndexReaderDecorator);
this.partitions = partitions;
setIndexPruner(new SenseiIndexPruner.DefaultSenseiIndexPruner());
}
@Override
public IndexReaderFactory<ZoieIndexReader<BoboIndexReader>> getIndexReaderFactory(int partition) {
if (partition == partitions[0])
return mockIndexReaderFactory.get();
else {
return emptyIndexFactory;
}
}
public void setIndexReaderFactory(IndexReaderFactory<ZoieIndexReader<BoboIndexReader>> indexReaderFactory) {
mockIndexReaderFactory.set((MockIndexReaderFactory<ZoieIndexReader<BoboIndexReader>>)indexReaderFactory);
}
@Override
public int[] getPartitions() {
return partitions;
}
}