package org.neo4j.shell.tools.imp; import org.neo4j.graphdb.PropertyContainer; import org.neo4j.graphdb.index.AutoIndexer; import org.neo4j.graphdb.index.IndexManager; import org.neo4j.shell.*; import org.neo4j.shell.kernel.apps.TransactionProvidingApp; /** * Created by mh on 04.07.13. */ public class AutoIndexApp extends TransactionProvidingApp { { addOptionDefinition( "t", new OptionDefinition( OptionValueType.MUST, "The type of index, either Node or Relationship" ) ); addOptionDefinition( "r", new OptionDefinition( OptionValueType.NONE, "Removes removes given properties from auto-indexing." ) ); } enum Type { Node, Relationship } @Override protected Continuation exec(AppCommandParser parser, Session session, Output out) throws Exception { Type type = Type.valueOf(parser.option("t", "Node")); boolean remove = parser.options().containsKey("r"); IndexManager index = getServer().getDb().index(); AutoIndexer<? extends PropertyContainer> autoIndexer = type==Type.Node ? index.getNodeAutoIndexer() : index.getRelationshipAutoIndexer(); autoIndexer.setEnabled(true); out.println((remove ? "Disabling" : "Enabling") + " auto-indexing of " + type + " properties: " + parser.arguments()); for (String argument : parser.arguments()) { if (remove) { autoIndexer.stopAutoIndexingProperty(argument); } else { autoIndexer.startAutoIndexingProperty(argument); } } return Continuation.INPUT_COMPLETE; } @Override public String getName() { return "auto-index"; } }