Search in sources :

Example 21 with Entity

use of io.openk9.entity.manager.cache.model.Entity in project openk9 by smclab.

the class EntityGraphRepositoryImpl method addEntities.

@Override
public Flux<Entity> addEntities(List<Entity> entities) {
    PatternElement[] nodes = IntStream.range(0, entities.size()).mapToObj(i -> {
        Entity entity = entities.get(i);
        return Cypher.node(entity.getType()).named(RANDOM_NAME[i]).withProperties(Constants.ENTITY_NAME_FIELD, literalOf(entity.getName()), Constants.ENTITY_TENANT_ID_FIELD, literalOf(entity.getTenantId()));
    }).toArray(PatternElement[]::new);
    Statement statement = Cypher.create(nodes).returning(Arrays.stream(nodes).map(patternElement -> ((Node) patternElement)).toArray(Node[]::new)).build();
    return Flux.from(_graphClient.write(statement)).concatMap(record -> _recordToToListEntity(Mono.just(record)));
}
Also used : IntStream(java.util.stream.IntStream) Arrays(java.util.Arrays) Logger(org.slf4j.Logger) Functions(org.neo4j.cypherdsl.core.Functions) LoggerFactory(org.slf4j.LoggerFactory) PatternElement(org.neo4j.cypherdsl.core.PatternElement) Mono(reactor.core.publisher.Mono) Entity(io.openk9.entity.manager.model.Entity) EntityGraphRepository(io.openk9.entity.manager.api.EntityGraphRepository) Record(io.openk9.relationship.graph.api.client.Record) GraphClient(io.openk9.relationship.graph.api.client.GraphClient) Flux(reactor.core.publisher.Flux) Component(org.osgi.service.component.annotations.Component) List(java.util.List) Value(io.openk9.relationship.graph.api.client.Value) Statement(org.neo4j.cypherdsl.core.Statement) Property(org.neo4j.cypherdsl.core.Property) Cypher(org.neo4j.cypherdsl.core.Cypher) Constants(io.openk9.entity.manager.api.Constants) Node(org.neo4j.cypherdsl.core.Node) Reference(org.osgi.service.component.annotations.Reference) Cypher.literalOf(org.neo4j.cypherdsl.core.Cypher.literalOf) Entity(io.openk9.entity.manager.model.Entity) Statement(org.neo4j.cypherdsl.core.Statement) PatternElement(org.neo4j.cypherdsl.core.PatternElement)

Example 22 with Entity

use of io.openk9.entity.manager.cache.model.Entity in project openk9 by smclab.

the class BaseNerEnrichProcessor method _getEntityOrCreate.

private Mono<JsonNode> _getEntityOrCreate(ObjectNode jsonNode) {
    return _entityManagerClient.getOrAddEntities(_jsonFactory.fromJsonNode(jsonNode, Request.class)).map(httpResponse -> {
        List<Response> responseList = httpResponse.getResponse();
        JsonNode entitiesJsonNode = jsonNode.get(entitiesField());
        ArrayNode entitiesArrayNode = entitiesJsonNode.toArrayNode();
        ArrayNode arrayNode = _jsonFactory.createArrayNode();
        for (JsonNode node : entitiesArrayNode) {
            Optional<Response> responseOptional = responseList.stream().filter(response -> node.get("tmpId").asLong() == response.getTmpId()).findFirst();
            if (responseOptional.isPresent()) {
                Entity entity = responseOptional.get().getEntity();
                ObjectNode result = _jsonFactory.createObjectNode();
                result.put("entityType", entity.getType());
                result.put("id", entity.getId());
                result.put("context", node.get("context"));
                arrayNode.add(result);
            }
        }
        return arrayNode;
    });
}
Also used : Response(io.openk9.entity.manager.model.payload.Response) EnrichItem(io.openk9.model.EnrichItem) PluginDriverDTO(io.openk9.plugin.driver.manager.model.PluginDriverDTO) Response(io.openk9.entity.manager.model.payload.Response) JsonNode(io.openk9.json.api.JsonNode) Mono(reactor.core.publisher.Mono) Entity(io.openk9.entity.manager.model.Entity) ArrayNode(io.openk9.json.api.ArrayNode) JsonFactory(io.openk9.json.api.JsonFactory) DatasourceContext(io.openk9.model.DatasourceContext) List(java.util.List) EntityManagerClient(io.openk9.entity.manager.client.api.EntityManagerClient) Map(java.util.Map) Optional(java.util.Optional) Request(io.openk9.entity.manager.model.payload.Request) ObjectNode(io.openk9.json.api.ObjectNode) HttpClient(io.openk9.http.client.HttpClient) Constants(io.openk9.core.api.constant.Constants) Entity(io.openk9.entity.manager.model.Entity) ObjectNode(io.openk9.json.api.ObjectNode) JsonNode(io.openk9.json.api.JsonNode) ArrayNode(io.openk9.json.api.ArrayNode)

Aggregations

ArrayList (java.util.ArrayList)11 List (java.util.List)11 Mono (reactor.core.publisher.Mono)10 Collectors (java.util.stream.Collectors)9 Node (org.neo4j.cypherdsl.core.Node)8 Statement (org.neo4j.cypherdsl.core.Statement)8 JsonFactory (io.openk9.json.api.JsonFactory)7 Map (java.util.Map)7 Cypher (org.neo4j.cypherdsl.core.Cypher)7 Cypher.literalOf (org.neo4j.cypherdsl.core.Cypher.literalOf)7 Functions (org.neo4j.cypherdsl.core.Functions)7 Activate (org.osgi.service.component.annotations.Activate)7 Component (org.osgi.service.component.annotations.Component)7 Reference (org.osgi.service.component.annotations.Reference)7 Entity (io.openk9.entity.manager.cache.model.Entity)6 Entity (io.openk9.entity.manager.model.Entity)6 EntityIndex (io.openk9.entity.manager.model.index.EntityIndex)6 Logger (org.slf4j.Logger)6 LoggerFactory (org.slf4j.LoggerFactory)6 EntityKey (io.openk9.entity.manager.cache.model.EntityKey)5