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\\)");
}
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);
}
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"));
}
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());
}
}
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();
}
}
Aggregations