Search in sources :

Example 26 with Filter

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

the class CineastsRelationshipEntityTest method shouldSaveMultipleRatingsFromDifferentUsersForSameMovie.

@Test
public void shouldSaveMultipleRatingsFromDifferentUsersForSameMovie() {
    Movie movie = new Movie("Pulp Fiction", 1994);
    session.save(movie);
    User michal = new User();
    michal.setName("Michal");
    michal.setLogin("bachmania");
    Rating awesome = new Rating();
    awesome.setMovie(movie);
    awesome.setUser(michal);
    awesome.setStars(5);
    michal.setRatings(Collections.singleton(awesome));
    session.save(michal);
    // Check that Pulp Fiction has one rating from Michal
    Collection<Movie> films = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Pulp Fiction"));
    assertThat(films).hasSize(1);
    Movie film = films.iterator().next();
    assertThat(film).isNotNull();
    assertThat(film.getRatings()).hasSize(1);
    assertThat(film.getRatings().iterator().next().getUser().getName()).isEqualTo("Michal");
    // Add a rating from luanne for the same movie
    User luanne = new User();
    luanne.setName("luanne");
    luanne.setLogin("luanne");
    luanne.setPassword("luanne");
    Rating rating = new Rating();
    rating.setMovie(film);
    rating.setUser(luanne);
    rating.setStars(3);
    luanne.setRatings(Collections.singleton(rating));
    session.save(luanne);
    // Verify that pulp fiction has two ratings
    films = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Pulp Fiction"));
    film = films.iterator().next();
    // Fail, it has just one rating, luannes
    assertThat(film.getRatings()).hasSize(2);
    // Verify that luanne's rating is saved
    User foundLuanne = session.load(User.class, "luanne");
    assertThat(foundLuanne.getRatings()).hasSize(1);
    // Verify that Michals rating still exists
    Collection<User> users = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Michal"));
    User foundMichal = users.iterator().next();
    // Fail, Michals rating is gone
    assertThat(foundMichal.getRatings()).hasSize(1);
}
Also used : Movie(org.neo4j.ogm.domain.cineasts.annotated.Movie) User(org.neo4j.ogm.domain.cineasts.annotated.User) Filter(org.neo4j.ogm.cypher.Filter) Rating(org.neo4j.ogm.domain.cineasts.annotated.Rating) Test(org.junit.Test)

Example 27 with Filter

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

the class CineastsRelationshipEntityTest method shouldLoadRelationshipEntityWithSameStartEndNodeType.

// DATAGRAPH-616
@Test
public void shouldLoadRelationshipEntityWithSameStartEndNodeType() {
    Actor bruce = new Actor("Bruce");
    Actor jim = new Actor("Jim");
    Knows knows = new Knows();
    knows.setFirstActor(bruce);
    knows.setSecondActor(jim);
    knows.setSince(new Date());
    bruce.getKnows().add(knows);
    session.save(bruce);
    session.clear();
    Actor actor = TestUtils.firstOrNull(session.loadAll(Actor.class, new Filter("name", ComparisonOperator.EQUALS, "Bruce")));
    assertThat(actor).isNotNull();
    assertThat(actor.getKnows()).hasSize(1);
    assertThat(actor.getKnows().iterator().next().getFirstActor().getName()).isEqualTo("Bruce");
    assertThat(actor.getKnows().iterator().next().getSecondActor().getName()).isEqualTo("Jim");
}
Also used : Filter(org.neo4j.ogm.cypher.Filter) Actor(org.neo4j.ogm.domain.cineasts.annotated.Actor) Knows(org.neo4j.ogm.domain.cineasts.annotated.Knows) Date(java.util.Date) Test(org.junit.Test)

Example 28 with Filter

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

the class CineastsRelationshipEntityTest method shouldBeAbleToModifyRating.

// DATAGRAPH-714
@Test
public void shouldBeAbleToModifyRating() {
    Movie movie = new Movie("Harry Potter and the Philosophers Stone", 2003);
    User vince = new User();
    vince.setName("Vince");
    vince.setLogin("bickerv");
    Set<Rating> ratings = new HashSet<>();
    Rating awesome = new Rating();
    awesome.setComment("Awesome");
    awesome.setMovie(movie);
    awesome.setUser(vince);
    awesome.setStars(5);
    ratings.add(awesome);
    vince.setRatings(ratings);
    movie.setRatings(ratings);
    session.save(movie);
    Collection<Movie> movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
    movie = movies.iterator().next();
    assertThat(movie.getRatings()).hasSize(1);
    Rating rating = movie.getRatings().iterator().next();
    assertThat(rating.getUser().getName()).isEqualTo("Vince");
    assertThat(rating.getStars()).isEqualTo(5);
    // Modify the rating stars and save the rating directly
    rating.setStars(3);
    session.save(rating);
    session.clear();
    movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
    movie = movies.iterator().next();
    assertThat(movie.getRatings()).hasSize(1);
    rating = movie.getRatings().iterator().next();
    assertThat(rating.getUser().getName()).isEqualTo("Vince");
    assertThat(rating.getStars()).isEqualTo(3);
    vince = rating.getUser();
    // Modify the rating stars and save the user (start node)
    movie.getRatings().iterator().next().setStars(2);
    session.save(vince);
    session.clear();
    movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
    movie = movies.iterator().next();
    assertThat(movie.getRatings()).hasSize(1);
    rating = movie.getRatings().iterator().next();
    assertThat(rating.getUser().getName()).isEqualTo("Vince");
    assertThat(rating.getStars()).isEqualTo(2);
    // Modify the rating stars and save the movie (end node)
    movie.getRatings().iterator().next().setStars(1);
    session.save(movie);
    session.clear();
    movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
    movie = movies.iterator().next();
    assertThat(movie.getRatings()).hasSize(1);
    rating = movie.getRatings().iterator().next();
    assertThat(rating.getUser().getName()).isEqualTo("Vince");
    assertThat(rating.getStars()).isEqualTo(1);
}
Also used : Movie(org.neo4j.ogm.domain.cineasts.annotated.Movie) User(org.neo4j.ogm.domain.cineasts.annotated.User) Filter(org.neo4j.ogm.cypher.Filter) Rating(org.neo4j.ogm.domain.cineasts.annotated.Rating) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 29 with Filter

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

the class CineastsRelationshipEntityTest method shouldBeAbleToDeleteOneRating.

// DATAGRAPH-586
@Test
public void shouldBeAbleToDeleteOneRating() {
    Set<Rating> gobletRatings = new HashSet<>();
    Set<Rating> phoenixRatings = new HashSet<>();
    Movie goblet = new Movie("Harry Potter and the Goblet of Fire", 2006);
    session.save(goblet);
    Movie phoenix = new Movie("Harry Potter and the Order of the Phoenix", 2009);
    session.save(phoenix);
    User adam = new User();
    adam.setName("Adam");
    adam.setLogin("adamg");
    Rating good = new Rating();
    good.setUser(adam);
    good.setMovie(goblet);
    good.setStars(3);
    gobletRatings.add(good);
    goblet.setRatings(gobletRatings);
    Rating okay = new Rating();
    okay.setMovie(phoenix);
    okay.setUser(adam);
    okay.setStars(2);
    phoenixRatings.add(okay);
    phoenix.setRatings(phoenixRatings);
    Set<Rating> adamsRatings = new HashSet<>();
    adamsRatings.add(good);
    adamsRatings.add(okay);
    adam.setRatings(adamsRatings);
    session.save(adam);
    adam = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Adam")).iterator().next();
    assertThat(adam.getRatings()).hasSize(2);
    // delete one rating
    session.delete(okay);
    Collection<Rating> ratings = session.loadAll(Rating.class);
    assertThat(ratings).hasSize(1);
    phoenix = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Order of the Phoenix")).iterator().next();
    assertThat(phoenix.getRatings()).isNull();
    goblet = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Goblet of Fire")).iterator().next();
    assertThat(goblet.getRatings()).hasSize(1);
    adam = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Adam")).iterator().next();
    assertThat(adam.getRatings()).hasSize(1);
}
Also used : Movie(org.neo4j.ogm.domain.cineasts.annotated.Movie) User(org.neo4j.ogm.domain.cineasts.annotated.User) Filter(org.neo4j.ogm.cypher.Filter) Rating(org.neo4j.ogm.domain.cineasts.annotated.Rating) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 30 with Filter

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

the class CineastsRelationshipEntityTest method shouldNotLoseRelationshipEntitiesWhenALoadedEntityIsPersisted.

@Test
public void shouldNotLoseRelationshipEntitiesWhenALoadedEntityIsPersisted() {
    bootstrap("org/neo4j/ogm/cql/cineasts.cql");
    Movie topGear = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Top Gear")).iterator().next();
    // 2 ratings
    assertThat(topGear.getRatings()).hasSize(2);
    session.save(topGear);
    topGear = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Top Gear")).iterator().next();
    // Then there was one
    assertThat(topGear.getRatings()).hasSize(2);
    User michal = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Michal")).iterator().next();
    // The Top Gear Rating is gone
    assertThat(michal.getRatings()).hasSize(2);
}
Also used : Movie(org.neo4j.ogm.domain.cineasts.annotated.Movie) User(org.neo4j.ogm.domain.cineasts.annotated.User) Filter(org.neo4j.ogm.cypher.Filter) Test(org.junit.Test)

Aggregations

Filter (org.neo4j.ogm.cypher.Filter)155 Test (org.junit.Test)146 Filters (org.neo4j.ogm.cypher.Filters)78 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