Search in sources :

Example 1 with Schema

use of org.neo4j.graphdb.schema.Schema in project neo4j by neo4j.

the class SchemaAcceptanceTest method shouldThrowConstraintViolationIfAskedToIndexPropertyThatIsAlreadyIndexed.

@Test
public void shouldThrowConstraintViolationIfAskedToIndexPropertyThatIsAlreadyIndexed() throws Exception {
    // GIVEN
    Schema schema;
    try (Transaction tx = db.beginTx()) {
        schema = db.schema();
        schema.indexFor(label).on(propertyKey).create();
        tx.success();
    }
    // WHEN
    ConstraintViolationException caught = null;
    try (Transaction tx = db.beginTx()) {
        schema.indexFor(label).on(propertyKey).create();
        tx.success();
    } catch (ConstraintViolationException e) {
        caught = e;
    }
    // THEN
    assertThat(caught, not(nullValue()));
}
Also used : Schema(org.neo4j.graphdb.schema.Schema) Test(org.junit.Test)

Example 2 with Schema

use of org.neo4j.graphdb.schema.Schema in project neo4j by neo4j.

the class LucenePartitionedIndexStressTesting method dropAllIndexes.

private void dropAllIndexes() {
    try (Transaction transaction = db.beginTx()) {
        Schema schema = db.schema();
        schema.getConstraints().forEach(ConstraintDefinition::drop);
        schema.getIndexes().forEach(IndexDefinition::drop);
        transaction.success();
    }
}
Also used : Transaction(org.neo4j.graphdb.Transaction) IndexDefinition(org.neo4j.graphdb.schema.IndexDefinition) Schema(org.neo4j.graphdb.schema.Schema) ConstraintDefinition(org.neo4j.graphdb.schema.ConstraintDefinition)

Example 3 with Schema

use of org.neo4j.graphdb.schema.Schema in project neo4j by neo4j.

the class LucenePartitionedIndexStressTesting method awaitIndexesOnline.

private void awaitIndexesOnline(GraphDatabaseService db) {
    try (Transaction ignored = db.beginTx()) {
        Schema schema = db.schema();
        schema.awaitIndexesOnline(WAIT_DURATION_MINUTES, TimeUnit.MINUTES);
    }
}
Also used : Transaction(org.neo4j.graphdb.Transaction) Schema(org.neo4j.graphdb.schema.Schema)

Example 4 with Schema

use of org.neo4j.graphdb.schema.Schema in project neo4j-documentation by neo4j.

the class EmbeddedNeo4jWithNewIndexing method main.

public static void main(final String[] args) throws IOException {
    System.out.println("Starting database ...");
    FileUtils.deleteRecursively(databaseDirectory);
    // START SNIPPET: startDb
    GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(databaseDirectory);
    // END SNIPPET: startDb
    {
        // START SNIPPET: createIndex
        IndexDefinition indexDefinition;
        try (Transaction tx = graphDb.beginTx()) {
            Schema schema = graphDb.schema();
            indexDefinition = schema.indexFor(Label.label("User")).on("username").create();
            tx.success();
        }
        // START SNIPPET: wait
        try (Transaction tx = graphDb.beginTx()) {
            Schema schema = graphDb.schema();
            schema.awaitIndexOnline(indexDefinition, 10, TimeUnit.SECONDS);
        }
        // START SNIPPET: progress
        try (Transaction tx = graphDb.beginTx()) {
            Schema schema = graphDb.schema();
            System.out.println(String.format("Percent complete: %1.0f%%", schema.getIndexPopulationProgress(indexDefinition).getCompletedPercentage()));
        }
    // END SNIPPET: progress
    }
    {
        // START SNIPPET: addUsers
        try (Transaction tx = graphDb.beginTx()) {
            Label label = Label.label("User");
            // Create some users
            for (int id = 0; id < 100; id++) {
                Node userNode = graphDb.createNode(label);
                userNode.setProperty("username", "user" + id + "@neo4j.org");
            }
            System.out.println("Users created");
            tx.success();
        }
    // END SNIPPET: addUsers
    }
    {
        // START SNIPPET: findUsers
        Label label = Label.label("User");
        int idToFind = 45;
        String nameToFind = "user" + idToFind + "@neo4j.org";
        try (Transaction tx = graphDb.beginTx()) {
            try (ResourceIterator<Node> users = graphDb.findNodes(label, "username", nameToFind)) {
                ArrayList<Node> userNodes = new ArrayList<>();
                while (users.hasNext()) {
                    userNodes.add(users.next());
                }
                for (Node node : userNodes) {
                    System.out.println("The username of user " + idToFind + " is " + node.getProperty("username"));
                }
            }
        }
    // END SNIPPET: findUsers
    }
    {
        // START SNIPPET: resourceIterator
        Label label = Label.label("User");
        int idToFind = 45;
        String nameToFind = "user" + idToFind + "@neo4j.org";
        try (Transaction tx = graphDb.beginTx();
            ResourceIterator<Node> users = graphDb.findNodes(label, "username", nameToFind)) {
            Node firstUserNode;
            if (users.hasNext()) {
                firstUserNode = users.next();
            }
            users.close();
        }
    // END SNIPPET: resourceIterator
    }
    {
        // START SNIPPET: updateUsers
        try (Transaction tx = graphDb.beginTx()) {
            Label label = Label.label("User");
            int idToFind = 45;
            String nameToFind = "user" + idToFind + "@neo4j.org";
            for (Node node : loop(graphDb.findNodes(label, "username", nameToFind))) {
                node.setProperty("username", "user" + (idToFind + 1) + "@neo4j.org");
            }
            tx.success();
        }
    // END SNIPPET: updateUsers
    }
    {
        // START SNIPPET: deleteUsers
        try (Transaction tx = graphDb.beginTx()) {
            Label label = Label.label("User");
            int idToFind = 46;
            String nameToFind = "user" + idToFind + "@neo4j.org";
            for (Node node : loop(graphDb.findNodes(label, "username", nameToFind))) {
                node.delete();
            }
            tx.success();
        }
    // END SNIPPET: deleteUsers
    }
    {
        // START SNIPPET: dropIndex
        try (Transaction tx = graphDb.beginTx()) {
            Label label = Label.label("User");
            for (IndexDefinition indexDefinition : graphDb.schema().getIndexes(label)) {
                // There is only one index
                indexDefinition.drop();
            }
            tx.success();
        }
    // END SNIPPET: dropIndex
    }
    System.out.println("Shutting down database ...");
    // START SNIPPET: shutdownDb
    graphDb.shutdown();
// END SNIPPET: shutdownDb
}
Also used : GraphDatabaseService(org.neo4j.graphdb.GraphDatabaseService) IndexDefinition(org.neo4j.graphdb.schema.IndexDefinition) Transaction(org.neo4j.graphdb.Transaction) GraphDatabaseFactory(org.neo4j.graphdb.factory.GraphDatabaseFactory) Schema(org.neo4j.graphdb.schema.Schema) Node(org.neo4j.graphdb.Node) Label(org.neo4j.graphdb.Label) ArrayList(java.util.ArrayList) ResourceIterator(org.neo4j.graphdb.ResourceIterator)

Example 5 with Schema

use of org.neo4j.graphdb.schema.Schema in project neo4j-documentation by neo4j.

the class BlockTypeTest method should_replace_filenames_in_queries.

@Test
public void should_replace_filenames_in_queries() throws Exception {
    assumeFalse(SystemUtils.IS_OS_WINDOWS);
    // given
    List<String> myQuery = Arrays.asList("[source, cypher]", "----", "LOAD CSV FROM \"my_file.csv\" AS line", "RETURN line;", "----");
    GraphDatabaseFacade graph = mock(GraphDatabaseFacade.class);
    Schema schema = mock(Schema.class);
    when(graph.schema()).thenReturn(schema);
    doNothing().when(schema).awaitIndexesOnline(anyLong(), any(TimeUnit.class));
    when(graph.beginTx()).thenReturn(mock(Transaction.class));
    Block block = new Block(myQuery, BlockType.CYPHER);
    org.neo4j.graphdb.Result result = mock(org.neo4j.graphdb.Result.class);
    ArgumentCaptor<String> fileQuery = ArgumentCaptor.forClass(String.class);
    ArgumentCaptor<String> httpQuery = ArgumentCaptor.forClass(String.class);
    when(graph.execute(fileQuery.capture(), eq(Collections.emptyMap()))).thenReturn(result);
    state = spy(new State(graph, null, new File("/dev/null"), "http://myurl"));
    doReturn("apa").when(state).prettify(httpQuery.capture());
    state.knownFiles.add("my_file.csv");
    // when
    block.process(state);
    // then
    assertThat(fileQuery.getValue(), containsString("file:/dev/null/my_file.csv"));
    assertThat(httpQuery.getValue(), containsString("http://myurl/my_file.csv"));
}
Also used : Schema(org.neo4j.graphdb.schema.Schema) Transaction(org.neo4j.graphdb.Transaction) TimeUnit(java.util.concurrent.TimeUnit) GraphDatabaseFacade(org.neo4j.kernel.impl.factory.GraphDatabaseFacade) File(java.io.File) Test(org.junit.Test)

Aggregations

Schema (org.neo4j.graphdb.schema.Schema)19 IndexDefinition (org.neo4j.graphdb.schema.IndexDefinition)10 Transaction (org.neo4j.graphdb.Transaction)9 ConstraintDefinition (org.neo4j.graphdb.schema.ConstraintDefinition)5 ArrayList (java.util.ArrayList)4 GraphDatabaseService (org.neo4j.graphdb.GraphDatabaseService)4 Label (org.neo4j.graphdb.Label)4 AssertSchemaResult (apoc.result.AssertSchemaResult)3 Test (org.junit.Test)3 Test (org.junit.jupiter.api.Test)3 Node (org.neo4j.graphdb.Node)3 KernelTransaction (org.neo4j.kernel.api.KernelTransaction)3 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 ResourceIterator (org.neo4j.graphdb.ResourceIterator)2 InternalTransaction (org.neo4j.kernel.impl.coreapi.InternalTransaction)2 ConstraintRelationshipInfo (apoc.result.ConstraintRelationshipInfo)1 IndexConstraintNodeInfo (apoc.result.IndexConstraintNodeInfo)1 VirtualNode (apoc.result.VirtualNode)1 File (java.io.File)1 java.util (java.util)1