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