package er.neo4jadaptor.storage;
import java.util.Map;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.PropertyContainer;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.index.Index;
import org.neo4j.graphdb.index.IndexManager;
import org.neo4j.helpers.collection.MapUtil;
import com.webobjects.eoaccess.EOEntity;
import er.neo4jadaptor.storage.neo4j.RelationshipStore;
/**
* Provides lucene indexes for various entities.
*
* @author Jedrzej Sobanski
*
*/
public class IndexProvider {
private static final Map<String, String> INDEX_CONFIG = MapUtil.stringMap(
IndexManager.PROVIDER, "lucene",
"type", "exact"
);
public static final IndexProvider instance = new IndexProvider();
private IndexProvider() {
}
public Index<? extends PropertyContainer> getIndexForEntity(GraphDatabaseService db, EOEntity entity) {
if (RelationshipStore.shouldBeStoredAsRelationship(entity)) {
Index<Relationship> index = db.index().forRelationships("relationships", INDEX_CONFIG);
return index;
} else {
Index<Node> index = db.index().forNodes("nodes", INDEX_CONFIG);
return index;
}
}
}