Search in sources :

Example 1 with GraphRowModel

use of org.neo4j.ogm.model.GraphRowModel in project neo4j-ogm by neo4j.

the class JsonGraphRowResponseTest method shouldParseDataInFilterGraphResponseCorrectly.

@Test
public void shouldParseDataInFilterGraphResponseCorrectly() throws IOException {
    when(entity.getContent()).thenReturn(filterQueryGraphRowResponse());
    try (Response<GraphRowListModel> rsp = new GraphRowsModelResponse(response)) {
        GraphRowListModel graphRowListModel = rsp.next();
        assertThat(graphRowListModel).isNotNull();
        List<GraphRowModel> graphRowModels = graphRowListModel.model();
        assertThat(graphRowModels).hasSize(8);
        GraphRowModel model = graphRowModels.get(0);
        GraphModel graph = model.getGraph();
        assertThat(graph.getNodes().iterator().next().getId()).isEqualTo(Long.valueOf(26));
        assertThat(graph.getRelationships()).isEmpty();
        Object[] rows = model.getRow();
        assertThat(rows.length).isEqualTo(2);
        Map row1 = (Map) ((List) rows[0]).get(0);
        assertThat(row1.get("name")).isEqualTo("GraphAware");
        assertThat(rows[1]).isEqualTo(26L);
    }
}
Also used : GraphRowModel(org.neo4j.ogm.model.GraphRowModel) GraphModel(org.neo4j.ogm.model.GraphModel) GraphRowListModel(org.neo4j.ogm.model.GraphRowListModel) Map(java.util.Map) Test(org.junit.Test)

Example 2 with GraphRowModel

use of org.neo4j.ogm.model.GraphRowModel in project neo4j-ogm by neo4j.

the class GraphRowListModelMapper method map.

public <T> Iterable<T> map(Class<T> type, Response<GraphRowListModel> response) {
    Set<Long> idsOfResultEntities = new LinkedHashSet<>();
    Response<GraphModel> graphResponse = new Response<GraphModel>() {

        GraphRowListModel currentIteratedModel;

        int currentIndex = 0;

        @Override
        public GraphModel next() {
            if (currentIteratedModel == null) {
                currentIteratedModel = response.next();
                if (currentIteratedModel == null) {
                    return null;
                }
                currentIndex = 0;
            }
            List<GraphRowModel> listOfRowModels = currentIteratedModel.model();
            if (listOfRowModels.size() <= currentIndex) {
                currentIteratedModel = null;
                return next();
            }
            GraphRowModel graphRowModel = listOfRowModels.get(currentIndex++);
            Set<Long> idsInCurrentRow = Arrays.stream(graphRowModel.getRow()).filter(Number.class::isInstance).map(Number.class::cast).map(Number::longValue).collect(toSet());
            idsOfResultEntities.addAll(idsInCurrentRow);
            return graphRowModel.getGraph();
        }

        @Override
        public void close() {
            response.close();
        }

        @Override
        public String[] columns() {
            return response.columns();
        }
    };
    // although it looks like that the `idsOfResultEntities` will stay empty, they won't, trust us.
    BiFunction<GraphModel, Long, Boolean> includeModelObject = (graphModel, nativeId) -> idsOfResultEntities.contains(nativeId);
    return delegate.map(type, graphResponse, includeModelObject);
}
Also used : LinkedHashSet(java.util.LinkedHashSet) EntityInstantiator(org.neo4j.ogm.session.EntityInstantiator) Arrays(java.util.Arrays) List(java.util.List) GraphRowModel(org.neo4j.ogm.model.GraphRowModel) MetaData(org.neo4j.ogm.metadata.MetaData) BiFunction(java.util.function.BiFunction) Set(java.util.Set) Response(org.neo4j.ogm.response.Response) GraphModel(org.neo4j.ogm.model.GraphModel) GraphRowListModel(org.neo4j.ogm.model.GraphRowListModel) Collectors(java.util.stream.Collectors) LinkedHashSet(java.util.LinkedHashSet) GraphRowModel(org.neo4j.ogm.model.GraphRowModel) Response(org.neo4j.ogm.response.Response) GraphModel(org.neo4j.ogm.model.GraphModel) GraphRowListModel(org.neo4j.ogm.model.GraphRowListModel)

Aggregations

GraphModel (org.neo4j.ogm.model.GraphModel)2 GraphRowListModel (org.neo4j.ogm.model.GraphRowListModel)2 GraphRowModel (org.neo4j.ogm.model.GraphRowModel)2 Arrays (java.util.Arrays)1 LinkedHashSet (java.util.LinkedHashSet)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 BiFunction (java.util.function.BiFunction)1 Collectors (java.util.stream.Collectors)1 Test (org.junit.Test)1 MetaData (org.neo4j.ogm.metadata.MetaData)1 Response (org.neo4j.ogm.response.Response)1 EntityInstantiator (org.neo4j.ogm.session.EntityInstantiator)1