Search in sources :

Example 1 with JsonProcessingException

use of org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException in project unipop by unipop-graph.

the class NestedEdgeSchema method addElement.

@Override
public BulkableAction<DocumentResult> addElement(Edge edge, boolean create) {
    // TODO: use the 'create' parameter to differentiate between add and update
    Vertex parentVertex = parentDirection.equals(Direction.OUT) ? edge.outVertex() : edge.inVertex();
    Document parentDoc = parentVertexSchema.toDocument(parentVertex);
    if (parentDoc == null)
        return null;
    Map<String, Object> edgeFields = getFields(edge);
    Map<String, Object> childFields = getVertexFields(edge, parentDirection.opposite());
    Map<String, Object> nestedFields = ConversionUtils.merge(Lists.newArrayList(edgeFields, childFields), this::mergeFields, false);
    if (nestedFields == null)
        return null;
    Set<String> idField = propertySchemas.stream().map(schema -> schema.toFields(Collections.singleton(T.id.getAccessor()))).findFirst().get();
    try {
        HashMap<String, Object> params = new HashMap<>();
        params.put("nestedDoc", nestedFields);
        params.put("path", path);
        params.put("edgeId", edge.id());
        params.put("idField", idField.iterator().next());
        HashMap<String, Object> docMap = new HashMap<>();
        HashMap<String, Object> script = new HashMap<>();
        script.put("params", params);
        script.put("inline", UPDATE_SCRIPT);
        script.put("lang", "groovy");
        docMap.put("scripted_upsert", true);
        docMap.put("script", script);
        String json = mapper.writeValueAsString(docMap);
        return new Update.Builder(json).index(parentDoc.getIndex()).type(parentDoc.getType()).id(parentDoc.getId()).build();
    } catch (JsonProcessingException e) {
        e.printStackTrace();
        return null;
    }
}
Also used : Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) NestedQueryBuilder(org.elasticsearch.index.query.NestedQueryBuilder) JSONObject(org.json.JSONObject) Document(org.unipop.elastic.document.Document) JsonProcessingException(org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException)

Aggregations

Vertex (org.apache.tinkerpop.gremlin.structure.Vertex)1 JsonProcessingException (org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException)1 NestedQueryBuilder (org.elasticsearch.index.query.NestedQueryBuilder)1 QueryBuilder (org.elasticsearch.index.query.QueryBuilder)1 JSONObject (org.json.JSONObject)1 Document (org.unipop.elastic.document.Document)1