Search in sources :

Example 81 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 82 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)

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