Search in sources :

Example 61 with Label

use of org.neo4j.graphdb.Label in project neo4j by neo4j.

the class PECListingIT method shouldHaveCorrectIndentationsInSchemaListing.

@Test
public void shouldHaveCorrectIndentationsInSchemaListing() throws Exception {
    // GIVEN
    Label label = label("Person");
    RelationshipType relType = RelationshipType.withName("KNOWS");
    // WHEN
    SchemaHelper.createUniquenessConstraint(db, label, "name");
    SchemaHelper.createNodePropertyExistenceConstraint(db, label, "name");
    SchemaHelper.createRelPropertyExistenceConstraint(db, relType, "since");
    SchemaHelper.awaitIndexes(db);
    // THEN
    executeCommand("schema", "Indexes", "  ON :Person\\(name\\) ONLINE \\(for uniqueness constraint\\)", "Constraints", "  ON \\(person:Person\\) ASSERT person.name IS UNIQUE", "  ON \\(person:Person\\) ASSERT exists\\(person.name\\)", "  ON \\(\\)-\\[knows:KNOWS\\]-\\(\\) ASSERT exists\\(knows.since\\)");
}
Also used : Label(org.neo4j.graphdb.Label) RelationshipType(org.neo4j.graphdb.RelationshipType) Test(org.junit.Test)

Example 62 with Label

use of org.neo4j.graphdb.Label in project elasticsearch-river-neo4j by sksamuel.

the class SimpleIndexingStrategy method build.

@Override
public IndexRequest build(String index, String type, Node node, long version) throws IOException {
    XContentBuilder src = XContentFactory.jsonBuilder().startObject();
    // Store version
    src.field("version", version);
    // Store node labels as array
    ArrayList<String> nodeLabels = new ArrayList<>();
    for (Label key : node.getLabels()) {
        nodeLabels.add(key.name());
    }
    if (nodeLabels.size() > 0) {
        src.array("labels", nodeLabels.toArray());
    }
    for (String key : node.getPropertyKeys()) {
        Object value = node.getProperty(key);
        if (value instanceof Object[]) {
            Object[] array = (Object[]) value;
            src.field(key, array);
        } else {
            src.field(key, value.toString());
        }
    }
    return new IndexRequest(index, type, String.valueOf(node.getId())).source(src);
}
Also used : ArrayList(java.util.ArrayList) Label(org.neo4j.graphdb.Label) IndexRequest(org.elasticsearch.action.index.IndexRequest) XContentBuilder(org.elasticsearch.common.xcontent.XContentBuilder)

Example 63 with Label

use of org.neo4j.graphdb.Label in project elasticsearch-river-neo4j by sksamuel.

the class SimpleIndexingStrategyTest method thatNodePropertiesAreUsedAsFieldValues.

@Test
public void thatNodePropertiesAreUsedAsFieldValues() throws IOException {
    long id = new Random().nextInt(50000) + 1;
    Node node = mock(Node.class);
    when(node.getId()).thenReturn(id);
    when(node.getPropertyKeys()).thenReturn(Arrays.asList("name", "location", "band"));
    when(node.getProperty("name")).thenReturn("chris martin");
    when(node.getProperty("location")).thenReturn("hampstead");
    when(node.getProperty("band")).thenReturn("coldplay");
    when(node.hasLabel(DynamicLabel.label("User"))).thenReturn(true);
    when(node.getLabels()).thenReturn(new ResourceIterable<Label>() {

        @Override
        public ResourceIterator<Label> iterator() {
            return new ResourceIterator<Label>() {

                private List<Label> labels = Arrays.asList(DynamicLabel.label("User"), DynamicLabel.label("Swedish"));

                private int position = 0;

                @Override
                public void close() {
                }

                @Override
                public boolean hasNext() {
                    boolean result = false;
                    if (position < labels.size()) {
                        result = true;
                    }
                    return result;
                }

                @Override
                public Label next() {
                    Label label = labels.get(position);
                    position++;
                    return label;
                }

                @Override
                public void remove() {
                }
            };
        }
    });
    IndexRequest req = s.build("neo4j-index", "node", node, 12);
    assertEquals("neo4j-index", req.index());
    assertEquals("node", req.type());
    assertEquals(12, req.sourceAsMap().get("version"));
    assertEquals(String.valueOf(id), req.id());
    assertEquals(new ArrayList<String>() {

        {
            add("User");
            add("Swedish");
        }
    }, req.sourceAsMap().get("labels"));
    assertEquals("coldplay", req.sourceAsMap().get("band"));
    assertEquals("hampstead", req.sourceAsMap().get("location"));
    assertEquals("chris martin", req.sourceAsMap().get("name"));
}
Also used : Node(org.neo4j.graphdb.Node) Label(org.neo4j.graphdb.Label) DynamicLabel(org.neo4j.graphdb.DynamicLabel) IndexRequest(org.elasticsearch.action.index.IndexRequest) Random(java.util.Random) ResourceIterator(org.neo4j.graphdb.ResourceIterator) Test(org.junit.Test)

Example 64 with Label

use of org.neo4j.graphdb.Label in project neo4j by neo4j.

the class BatchInsertTest method shouldNotAllowDuplicatedIndexes.

@Test
public void shouldNotAllowDuplicatedIndexes() throws Exception {
    // Given
    Label label = label("Person3-" + denseNodeThreshold);
    String property = "name";
    BatchInserter inserter = globalInserter;
    // When
    inserter.createDeferredSchemaIndex(label).on(property).create();
    try {
        inserter.createDeferredSchemaIndex(label).on(property).create();
        fail("Exception expected");
    } catch (ConstraintViolationException e) {
        // Then
        assertEquals("Index for given {label;property} already exists", e.getMessage());
    }
}
Also used : BatchInserter(org.neo4j.unsafe.batchinsert.BatchInserter) Label(org.neo4j.graphdb.Label) ConstraintViolationException(org.neo4j.graphdb.ConstraintViolationException) Test(org.junit.Test)

Example 65 with Label

use of org.neo4j.graphdb.Label in project neo4j by neo4j.

the class BatchInsertTest method shouldCreateUniquenessConstraint.

@Test
public void shouldCreateUniquenessConstraint() throws Exception {
    // Given
    Label label = label("Person");
    String propertyKey = "name";
    String duplicatedValue = "Tom";
    BatchInserter inserter = newBatchInserter();
    // When
    inserter.createDeferredConstraint(label).assertPropertyIsUnique(propertyKey).create();
    // Then
    GraphDatabaseService db = switchToEmbeddedGraphDatabaseService(inserter);
    try {
        try (Transaction tx = db.beginTx()) {
            List<ConstraintDefinition> constraints = Iterables.asList(db.schema().getConstraints());
            assertEquals(1, constraints.size());
            ConstraintDefinition constraint = constraints.get(0);
            assertEquals(label.name(), constraint.getLabel().name());
            assertEquals(propertyKey, single(constraint.getPropertyKeys()));
            db.createNode(label).setProperty(propertyKey, duplicatedValue);
            tx.success();
        }
        try (Transaction tx = db.beginTx()) {
            db.createNode(label).setProperty(propertyKey, duplicatedValue);
            tx.success();
        }
        fail("Uniqueness property constraint was violated, exception expected");
    } catch (ConstraintViolationException e) {
        assertEquals(format("Node(0) already exists with label `%s` and property `%s` = '%s'", label.name(), propertyKey, duplicatedValue), e.getMessage());
    } finally {
        db.shutdown();
    }
}
Also used : BatchInserter(org.neo4j.unsafe.batchinsert.BatchInserter) GraphDatabaseService(org.neo4j.graphdb.GraphDatabaseService) Transaction(org.neo4j.graphdb.Transaction) Label(org.neo4j.graphdb.Label) ConstraintViolationException(org.neo4j.graphdb.ConstraintViolationException) ConstraintDefinition(org.neo4j.graphdb.schema.ConstraintDefinition) Test(org.junit.Test)

Aggregations

Label (org.neo4j.graphdb.Label)82 Test (org.junit.Test)55 Node (org.neo4j.graphdb.Node)48 Transaction (org.neo4j.graphdb.Transaction)44 GraphDatabaseService (org.neo4j.graphdb.GraphDatabaseService)12 RelationshipType (org.neo4j.graphdb.RelationshipType)8 DependencyResolver (org.neo4j.graphdb.DependencyResolver)6 DynamicLabel (org.neo4j.graphdb.DynamicLabel)6 KernelTransaction (org.neo4j.kernel.api.KernelTransaction)6 Statement (org.neo4j.kernel.api.Statement)6 ArrayList (java.util.ArrayList)5 ConstraintViolationException (org.neo4j.graphdb.ConstraintViolationException)5 Relationship (org.neo4j.graphdb.Relationship)5 GraphDatabaseAPI (org.neo4j.kernel.internal.GraphDatabaseAPI)5 TestGraphDatabaseFactory (org.neo4j.test.TestGraphDatabaseFactory)5 File (java.io.File)4 HashSet (java.util.HashSet)4 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)4 Matchers.containsString (org.hamcrest.Matchers.containsString)4 TransactionFailureException (org.neo4j.graphdb.TransactionFailureException)4