コード例 #1
0
  @Test
  @TraitRequirement(StoreTrait.PRE_AGGREGATION_FILTERING)
  public void testFilteringIdentifiers() throws OperationException {
    // Given
    final List<ElementSeed> seeds = Collections.singletonList((ElementSeed) new EntitySeed("A3"));

    final GetRelatedElements<ElementSeed, Element> getElementsWithoutFiltering =
        new GetRelatedElements.Builder<>().seeds(seeds).build();

    final GetRelatedElements<ElementSeed, Element> getElementsWithFiltering =
        new GetRelatedElements.Builder<>()
            .seeds(seeds)
            .view(
                new View.Builder()
                    .entity(TestGroups.ENTITY)
                    .edge(
                        TestGroups.EDGE,
                        new ViewElementDefinition.Builder()
                            .preAggregationFilter(
                                new ElementFilter.Builder()
                                    .select(IdentifierType.DESTINATION)
                                    .execute(new IsEqual("B3"))
                                    .build())
                            .build())
                    .build())
            .build();

    // When - without filtering
    final List<Element> resultsWithoutFiltering =
        Lists.newArrayList(graph.execute(getElementsWithoutFiltering, getUser()));

    // When - with filtering
    final List<Element> resultsWithFiltering =
        Lists.newArrayList(graph.execute(getElementsWithFiltering, getUser()));

    // Then - without filtering
    assertNotNull(resultsWithoutFiltering);
    assertEquals(5, resultsWithoutFiltering.size());
    assertThat(
        resultsWithoutFiltering,
        IsCollectionContaining.hasItems(
            getEdge("A3", "A3", false),
            getEdge("A3", "B3", false),
            getEdge("A3", "C3", false),
            getEdge("A3", "D3", false),
            getEntity("A3")));

    // Then - with filtering
    assertNotNull(resultsWithFiltering);
    assertEquals(2, resultsWithFiltering.size());
    assertThat(
        resultsWithFiltering,
        IsCollectionContaining.hasItems(getEdge("A3", "B3", false), getEntity("A3")));
  }
  private void verifyResults(final CloseableIterable<String> resultsItr) {
    final String[] expectedResults = {"2,3,1", "3,1,1", "3,4,1", "4,1,2", "4,2,1"};

    final List<String> results = Lists.newArrayList(resultsItr);
    assertEquals(expectedResults.length, results.size());
    assertThat(results, IsCollectionContaining.hasItems(expectedResults));
  }
  @Test
  public void shouldGetAllElementsWithFilterWithoutSummarisation() throws Exception {
    final Edge edge1 = getEdges().get(new EdgeSeed(SOURCE_1, DEST_1, false)).emptyClone();
    edge1.putProperty(TestPropertyNames.INT, 100);
    edge1.putProperty(TestPropertyNames.COUNT, 1L);

    final Edge edge2 = edge1.emptyClone();
    edge2.putProperty(TestPropertyNames.INT, 101);
    edge2.putProperty(TestPropertyNames.COUNT, 1L);

    graph.execute(
        new AddElements.Builder().elements(Arrays.asList((Element) edge1, edge2)).build(),
        getUser());

    final GetAllElements<Element> op =
        new GetAllElements.Builder<>()
            .view(
                new View.Builder()
                    .edge(
                        TestGroups.EDGE,
                        new ViewElementDefinition.Builder()
                            .preAggregationFilter(
                                new ElementFilter.Builder()
                                    .select(TestPropertyNames.INT)
                                    .execute(new IsIn(Arrays.asList((Object) 100, 101)))
                                    .build())
                            .build())
                    .build())
            .build();

    // When
    final CloseableIterable<? extends Element> results = graph.execute(op, getUser());

    // Then
    final List<Element> resultList = Lists.newArrayList(results);
    assertEquals(2, resultList.size());
    assertThat(resultList, IsCollectionContaining.hasItems((Element) edge1, edge2));
  }
コード例 #4
0
  @Test
  @TraitRequirement(StoreTrait.POST_AGGREGATION_FILTERING)
  public void testPostAggregationFilteringProperties() throws OperationException {
    // Given
    final List<ElementSeed> seeds =
        Arrays.asList(new EntitySeed("A3"), new EdgeSeed("A5", "B5", false));

    final GetRelatedElements<ElementSeed, Element> getElementsWithoutFiltering =
        new GetRelatedElements.Builder<>().seeds(seeds).build();

    final GetRelatedElements<ElementSeed, Element> getElementsWithFiltering =
        new GetRelatedElements.Builder<>()
            .seeds(seeds)
            .view(
                new View.Builder()
                    .entity(
                        TestGroups.ENTITY,
                        new ViewElementDefinition.Builder()
                            .postAggregationFilter(
                                new ElementFilter.Builder()
                                    .select(IdentifierType.VERTEX)
                                    .execute(new IsEqual("A5"))
                                    .build())
                            .build())
                    .edge(
                        TestGroups.EDGE,
                        new ViewElementDefinition.Builder()
                            .postAggregationFilter(
                                new ElementFilter.Builder()
                                    .select(TestPropertyNames.INT)
                                    .execute(new IsLessThan(2))
                                    .build())
                            .build())
                    .build())
            .build();

    // When - without filtering
    final List<Element> resultsWithoutFiltering =
        Lists.newArrayList(graph.execute(getElementsWithoutFiltering, getUser()));

    // When - with filtering
    final List<Element> resultsWithFiltering =
        Lists.newArrayList(graph.execute(getElementsWithFiltering, getUser()));

    // Then - without filtering
    assertNotNull(resultsWithoutFiltering);
    assertEquals(8, resultsWithoutFiltering.size());
    assertThat(
        resultsWithoutFiltering,
        IsCollectionContaining.hasItems(
            getEdge("A3", "A3", false),
            getEdge("A3", "B3", false),
            getEdge("A3", "C3", false),
            getEdge("A3", "D3", false),
            getEdge("A5", "B5", false),
            getEntity("A5"),
            getEntity("B5")));

    // Then - with filtering
    assertNotNull(resultsWithFiltering);
    assertEquals(6, resultsWithFiltering.size());
    assertThat(
        resultsWithFiltering,
        IsCollectionContaining.hasItems(
            getEdge("A3", "A3", false),
            getEdge("A3", "B3", false),
            getEdge("A5", "B5", false),
            getEdge("A3", "D3", false),
            getEdge("A3", "C3", false),
            getEntity("A5")));
  }