Search in sources :

Example 1 with Filter

use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.

the class QueryCapabilityTest method nestedFiltersOnSameEntitiesButDifferentRelationsShouldWork.

// GH-851
@Test
public void nestedFiltersOnSameEntitiesButDifferentRelationsShouldWork() {
    Filters filters = new Filters();
    Filter filter = new Filter("code", ComparisonOperator.EQUALS, "LHR");
    filter.setOwnerEntityType(Flight.class);
    filter.setNestedPropertyType(Airport.class);
    filter.setNestedPropertyName("departure");
    filter.setRelationshipType("DEPARTS");
    filter.setRelationshipDirection(Relationship.OUTGOING);
    filters.and(filter);
    filter = new Filter("code", ComparisonOperator.EQUALS, "LAX");
    filter.setOwnerEntityType(Flight.class);
    filter.setNestedPropertyType(Airport.class);
    filter.setNestedPropertyName("arrival");
    filter.setRelationshipType("ARRIVES");
    filter.setRelationshipDirection(Relationship.OUTGOING);
    filters.and(filter);
    Collection<Flight> flights = session.loadAll(Flight.class, filters);
    assertThat(flights).hasSize(1).first().extracting(Flight::getName).isEqualTo("FL 001");
}
Also used : Filters(org.neo4j.ogm.cypher.Filters) Filter(org.neo4j.ogm.cypher.Filter) Flight(org.neo4j.ogm.domain.gh851.Flight) Test(org.junit.Test)

Example 2 with Filter

use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.

the class QueryCapabilityTest method bothLoadStrategiesShouldBeAbleToDealWithPaths.

@Test
public void bothLoadStrategiesShouldBeAbleToDealWithPaths() {
    for (LoadStrategy strategy : new LoadStrategy[] { LoadStrategy.PATH_LOAD_STRATEGY, LoadStrategy.SCHEMA_LOAD_STRATEGY }) {
        SessionFactory localSessionFactory = new SessionFactory(getDriver(), "org.neo4j.ogm.domain.gh851");
        localSessionFactory.setLoadStrategy(strategy);
        Session session = localSessionFactory.openSession();
        Filter f = new Filter("code", ComparisonOperator.EQUALS, "LAX");
        Collection<Airport> airports = session.loadAll(Airport.class, f);
        assertThat(airports).hasSize(1).first().extracting(Airport::getName).isEqualTo("Los Angeles");
        session.clear();
    // Keep the local session factory open, otherwise closing it will mess up the driver.
    }
}
Also used : SessionFactory(org.neo4j.ogm.session.SessionFactory) Filter(org.neo4j.ogm.cypher.Filter) LoadStrategy(org.neo4j.ogm.session.LoadStrategy) Airport(org.neo4j.ogm.domain.gh851.Airport) Neo4jSession(org.neo4j.ogm.session.Neo4jSession) Session(org.neo4j.ogm.session.Session) Test(org.junit.Test)

Example 3 with Filter

use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.

the class MusicIntegrationTest method shouldRetrieveEntityByPropertyWithZeroDepth.

/**
 * @see DATAGRAPH-629
 */
@Test
public void shouldRetrieveEntityByPropertyWithZeroDepth() {
    Studio emi = new Studio("EMI Studios, London");
    Artist theBeatles = new Artist("The Beatles");
    Album please = new Album("Please Please Me");
    Recording pleaseRecording = new Recording(please, emi, 1963);
    please.setRecording(pleaseRecording);
    theBeatles.getAlbums().add(please);
    please.setArtist(theBeatles);
    session.save(theBeatles);
    theBeatles = session.loadAll(Artist.class).iterator().next();
    assertThat(theBeatles.getName()).isEqualTo("The Beatles");
    assertThat(theBeatles.getAlbums()).hasSize(1);
    assertThat(theBeatles.getAlbums().iterator().next().getName()).isEqualTo("Please Please Me");
    assertThat(theBeatles.getAlbums().iterator().next().getRecording().getStudio().getName()).isEqualTo("EMI Studios, London");
    session.clear();
    please = session.loadAll(Album.class, new Filter("name", ComparisonOperator.EQUALS, "Please Please Me"), 0).iterator().next();
    assertThat(please.getName()).isEqualTo("Please Please Me");
    assertThat(please.getArtist()).isNull();
    assertThat(please.getRecording()).isNull();
}
Also used : Artist(org.neo4j.ogm.domain.music.Artist) Filter(org.neo4j.ogm.cypher.Filter) Album(org.neo4j.ogm.domain.music.Album) Recording(org.neo4j.ogm.domain.music.Recording) Studio(org.neo4j.ogm.domain.music.Studio) Test(org.junit.Test)

Example 4 with Filter

use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.

the class RestaurantIntegrationTest method shouldFilterByPropertyIn.

/**
 * @see DATAGRAPH-904
 */
@Test
public void shouldFilterByPropertyIn() {
    Restaurant sfo = new Restaurant("San Francisco International Airport (SFO)", 72.4);
    sfo.setLaunchDate(new Date(1000));
    session.save(sfo);
    Restaurant kuroda = new Restaurant("Kuroda", 80.5);
    kuroda.setLaunchDate(new Date(2000));
    session.save(kuroda);
    Filter filter = new Filter("name", ComparisonOperator.IN, new String[] { "Kuroda", "Foo", "Bar" });
    Collection<Restaurant> results = session.loadAll(Restaurant.class, new Filters().add(filter));
    assertThat(results).isNotNull();
    assertThat(results).hasSize(1);
    assertThat(results.iterator().next().getName()).isEqualTo("Kuroda");
}
Also used : Restaurant(org.neo4j.ogm.domain.restaurant.Restaurant) Filters(org.neo4j.ogm.cypher.Filters) Filter(org.neo4j.ogm.cypher.Filter) Date(java.util.Date) Test(org.junit.Test)

Example 5 with Filter

use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.

the class RestaurantIntegrationTest method shouldFilterByPropertyWithConverter.

/**
 * @see DATAGRAPH-904
 */
@Test
public void shouldFilterByPropertyWithConverter() {
    Restaurant kuroda = new Restaurant("Kuroda", 72.4);
    kuroda.setLaunchDate(new Date(1000));
    session.save(kuroda);
    Restaurant cyma = new Restaurant("Cyma", 80.5);
    cyma.setLaunchDate(new Date(2000));
    session.save(cyma);
    Filter launchDateFilter = new Filter("launchDate", ComparisonOperator.LESS_THAN, new Date(1001));
    Collection<Restaurant> results = session.loadAll(Restaurant.class, new Filters().add(launchDateFilter));
    assertThat(results).isNotNull();
    assertThat(results).hasSize(1);
    assertThat(results.iterator().next().getName()).isEqualTo("Kuroda");
    Filter anotherFilter = new Filter("launchDate", ComparisonOperator.EQUALS, new Date(999));
    results = session.loadAll(Restaurant.class, new Filters().add(anotherFilter));
    assertThat(results).isNotNull();
    assertThat(results).isEmpty();
}
Also used : Restaurant(org.neo4j.ogm.domain.restaurant.Restaurant) Filters(org.neo4j.ogm.cypher.Filters) Filter(org.neo4j.ogm.cypher.Filter) Date(java.util.Date) Test(org.junit.Test)

Aggregations

Filter (org.neo4j.ogm.cypher.Filter)154 Test (org.junit.Test)146 Filters (org.neo4j.ogm.cypher.Filters)77 User (org.neo4j.ogm.domain.cineasts.annotated.User)19 Rating (org.neo4j.ogm.domain.cineasts.annotated.Rating)18 Movie (org.neo4j.ogm.domain.cineasts.annotated.Movie)17 Restaurant (org.neo4j.ogm.domain.restaurant.Restaurant)12 Date (java.util.Date)10 Session (org.neo4j.ogm.session.Session)10 DistanceFromNativePoint (org.neo4j.ogm.cypher.function.DistanceFromNativePoint)8 SomethingSpatial (org.neo4j.ogm.persistence.types.nativetypes.SomethingSpatial)8 HashSet (java.util.HashSet)7 CypherQuery (org.neo4j.ogm.cypher.query.CypherQuery)7 GroupMember (org.neo4j.ogm.domain.gh824.GroupMember)7 ArrayList (java.util.ArrayList)4 Actor (org.neo4j.ogm.domain.cineasts.annotated.Actor)4 User (org.neo4j.ogm.domain.gh824.User)4 UserGroup (org.neo4j.ogm.domain.gh824.UserGroup)4 Studio (org.neo4j.ogm.domain.music.Studio)4 Collections (java.util.Collections)2