package org.openedit.data.lucene;
import java.util.Collection;
import org.apache.lucene.facet.taxonomy.TaxonomyWriter;
import org.apache.lucene.index.IndexWriter;
import org.openedit.Data;
import org.openedit.data.BaseData;
import org.openedit.data.XmlFileSearcher;
import com.openedit.OpenEditException;
import com.openedit.hittracker.HitTracker;
import com.openedit.hittracker.SearchQuery;
import com.openedit.users.User;
public class LuceneTransientSearcher extends XmlFileSearcher
{
public Data createNewData()
{
return new BaseData();
}
public void saveAllData(Collection inAll, User inUser)
{
updateIndex(inAll);
}
@Override
protected void reIndexAll(IndexWriter inWriter, final TaxonomyWriter inTaxonomyWriter)
{
}
public void deleteAll(User inUser)
{
reIndexAll();
}
public void saveData(Data data, User inUser)
{
if(data.getId() == null)
{
data.setId(nextId());
}
if( data.getSourcePath() == null)
{
String sourcepath = getSourcePathCreator().createSourcePath(data, data.getId() );
data.setSourcePath(sourcepath);
}
updateIndex(data);
}
public void delete(Data inData, User inUser)
{
// Remove from Index
deleteRecord(inData);
}
public Object searchByField(String inId, String inValue)
{
SearchQuery query = createSearchQuery();
query.addExact(inId, inValue);
HitTracker hits = search(query);
hits.setHitsPerPage(1);
Data first = (Data)hits.first();
if( first == null)
{
return null;
}
Data baseData = createNewData();
baseData.setProperties(first.getProperties());
baseData.setId(first.getId());
return baseData;
}
}