From b0b3a20749525083669e6219c7a5534a4576898b Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Wed, 4 May 2016 22:55:34 +0530 Subject: [PATCH 01/12] Adding neo4j project skeleton --- spring-data-neo4j/README.md | 15 ++++ spring-data-neo4j/pom.xml | 69 ++++++++++++++++++ .../src/main/resources/logback.xml | 20 +++++ spring-data-neo4j/src/main/resources/test.png | Bin 0 -> 855 bytes 4 files changed, 104 insertions(+) create mode 100644 spring-data-neo4j/README.md create mode 100644 spring-data-neo4j/pom.xml create mode 100644 spring-data-neo4j/src/main/resources/logback.xml create mode 100644 spring-data-neo4j/src/main/resources/test.png diff --git a/spring-data-neo4j/README.md b/spring-data-neo4j/README.md new file mode 100644 index 0000000000..89eae99f05 --- /dev/null +++ b/spring-data-neo4j/README.md @@ -0,0 +1,15 @@ +## Spring Data Redis + +### Relevant Articles: +- [Introduction to Spring Data Redis](http://www.baeldung.com/spring-data-redis-tutorial) + +### Build the Project with Tests Running +``` +mvn clean install +``` + +### Run Tests Directly +``` +mvn test +``` + diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml new file mode 100644 index 0000000000..5d04e0c3b4 --- /dev/null +++ b/spring-data-neo4j/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + com.baeldung + spring-data-neo4j + 1.0 + jar + + + UTF-8 + 4.2.5.RELEASE + 4.1.1.RELEASE + 0.8.0 + + + + + org.springframework.data + spring-data-neo4j + ${spring-data-neo4j} + + + + cglib + cglib-nodep + 2.2 + + + + log4j + log4j + 1.2.16 + + + + org.springframework + spring-core + ${spring.version} + + + + org.springframework + spring-context + ${spring.version} + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-test + ${spring.version} + test + + + + com.lordofthejars + nosqlunit-redis + ${nosqlunit.version} + + + + diff --git a/spring-data-neo4j/src/main/resources/logback.xml b/spring-data-neo4j/src/main/resources/logback.xml new file mode 100644 index 0000000000..215eeede64 --- /dev/null +++ b/spring-data-neo4j/src/main/resources/logback.xml @@ -0,0 +1,20 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-data-neo4j/src/main/resources/test.png b/spring-data-neo4j/src/main/resources/test.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b5e8027635ff4f0a0b10c0a9a6aa7a014e6086 GIT binary patch literal 855 zcmex=6kE^cmKJ|O{KK0!WiZUHd? zL17V5QBfX#aS1UI2_X?t5k_Vf7B*H^PBu0!em)*P5fKr7L0%pn0bT(feo-D?UVdI4 zpg0dNAHM*Q$HT+J$HNcg@q#%Zh5rvQ2y!sUFvu`73NkPWGBOJ?{y)MX0rV0OKpYGv zIoQ})S%5M+0t`%y%uFn-%&bsZMkb)c1=$oC*g1rh3>^~-jRG5mMVuBM1ge%|WME=O zF^8Fjk%^U!0Vt;gv=3+$3p2tNMkYaKCBqLwfr*X6ijMzpG4L=04G?4&WUyx___R78 z`bEZ3n*%y$c1p?=OzsY{vOIcDRID^@mH5k5n_VmCLN*tlQtc~BqmaI3acZm^A1dHBrChNRU-KfIG`3a9F1Z+JCT zaBkFRt*1+W!zihZ}s%F&cxn?h~EIRD%9;ni-#KyOjOZ3l7 z_6Ks(XSKVYPbdvPm!tpIJj%Ot(S2`WC0AaXj1Ds{Yc~e@JYj`ND^=I^G)#%-Q1qX7 z;Q8}@p=SNS>z3K2PrXivv`$ Date: Mon, 9 May 2016 00:29:00 +0530 Subject: [PATCH 02/12] Adding example project --- .../spring/data/neo4j/BookServiceTest.java | 40 ++++++++++++ .../config/LibraryNeo4jConfiguration.java | 32 ++++++++++ .../spring/data/neo4j/model/Book.java | 54 ++++++++++++++++ .../data/neo4j/repostory/BookRepository.java | 22 +++++++ .../data/neo4j/service/BookService.java | 62 +++++++++++++++++++ 5 files changed, 210 insertions(+) create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java new file mode 100644 index 0000000000..100465838e --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java @@ -0,0 +1,40 @@ +package com.baeldung.spring.data.neo4j; + +import com.baeldung.spring.data.neo4j.config.LibraryNeo4jConfiguration; +import com.baeldung.spring.data.neo4j.model.Book; +import com.baeldung.spring.data.neo4j.model.Person; +import com.baeldung.spring.data.neo4j.service.BookService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = LibraryNeo4jConfiguration.class) +public class BookServiceTest { + + private static final Log LOGGER = LogFactory.getLog(BookServiceTest.class); + + @Autowired + private BookService bookService; + + @Test + public void testSaveBook() { + final Person author1 = new Person(); + author1.setName("Mark Twain"); + author1.setBorn(1835); + final Book book = new Book(); + book.setTitle("The Adventures of Tom Sawyer"); + book.setReleased(1876); + book.setPerson(author1); + + bookService.save(book); + final Book savedBook = bookService.findBookById(book.getId()); + assertEquals(book.getTitle(), savedBook.getTitle()); + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java new file mode 100644 index 0000000000..c497c944d1 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.data.neo4j.config; + + +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.data.neo4j.config.Neo4jConfiguration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.data.neo4j.server.Neo4jServer; +import org.springframework.data.neo4j.server.RemoteServer; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@Configuration +@ComponentScan("com.baeldung.spring.data.neo4j") +@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") +public class LibraryNeo4jConfiguration extends Neo4jConfiguration { + + public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://localhost:7474"; + + @Override + public Neo4jServer neo4jServer() { + return new RemoteServer(URL,"neo4j","password"); + } + + @Override + public SessionFactory getSessionFactory() { + return new SessionFactory("com.baeldung.spring.data.neo4j.model"); + } +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java new file mode 100644 index 0000000000..2c643a4b7c --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java @@ -0,0 +1,54 @@ +package com.baeldung.spring.data.neo4j.model; + +import org.neo4j.graphdb.Direction; +import org.neo4j.ogm.annotation.*; + +import java.util.Collection; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +@NodeEntity +public class Book { + + private static final AtomicLong TS = new AtomicLong(); + + @GraphId + private Long id; + private String title; + private int released; + + @Relationship(type="AUTHORED_BY", direction = Relationship.INCOMING) + private Person person; + + public Book() { + this.id = TS.getAndIncrement(); + } + + public Long getId() { + return id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getReleased() { + return released; + } + + public void setReleased(int released) { + this.released = released; + } + + public Person getPerson() { + return person; + } + + public void setPerson(Person person) { + this.person = person; + } +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java new file mode 100644 index 0000000000..5c980b0381 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.data.neo4j.repostory; + +import com.baeldung.spring.data.neo4j.model.Book; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.GraphRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@Repository +public interface BookRepository extends GraphRepository { + Book findByTitle(@Param("title") String title); + + @Query("MATCH (m:Book) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") + Collection findByTitleContaining(@Param("title") String title); + + @Query("MATCH (m:Book)<-[:ACTED_IN]-(a:Person) RETURN m.title as Book, collect(a.name) as cast LIMIT {limit}") + List> graph(@Param("limit") int limit); +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java new file mode 100644 index 0000000000..52323f689b --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java @@ -0,0 +1,62 @@ +package com.baeldung.spring.data.neo4j.service; + + +import com.baeldung.spring.data.neo4j.model.Book; +import com.baeldung.spring.data.neo4j.repostory.BookRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class BookService { + + @Autowired + private BookRepository bookRepository; + + private Map toD3Format(final Iterator> result) { + List> nodes = new ArrayList>(); + List> rels= new ArrayList>(); + int i=0; + while (result.hasNext()) { + Map row = result.next(); + nodes.add(map("title",row.get("book"),"label","book")); + int target=i; + i++; + for (Object name : (Collection) row.get("cast")) { + Map actor = map("title", name,"label","actor"); + int source = nodes.indexOf(actor); + if (source == -1) { + nodes.add(actor); + source = i++; + } + rels.add(map("source",source,"target",target)); + } + } + return map("nodes", nodes, "links", rels); + } + + private Map map(final String key1, final Object value1, final String key2, final Object value2) { + Map result = new HashMap(2); + result.put(key1,value1); + result.put(key2,value2); + return result; + } + + public Map graph(final int limit) { + Iterator> result = bookRepository.graph(limit).iterator(); + return toD3Format(result); + } + + public Book save(final Book book){ + return bookRepository.save(book); + } + + public Book findBookById(final Long id){ + return bookRepository.findOne(id); + } + + public void deleteAllInGraph(){ + bookRepository.deleteAll(); + } +} \ No newline at end of file From 87496539c705356922c0f102a8de31cdcf0492f0 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Mon, 9 May 2016 00:31:00 +0530 Subject: [PATCH 03/12] Adding example project --- .../java/com/baeldung/spring/data/neo4j/BookServiceTest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spring-data-neo4j/src/{main => test}/java/com/baeldung/spring/data/neo4j/BookServiceTest.java (100%) diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java similarity index 100% rename from spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java rename to spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java From 78bfd55b9b95f5b1008c9484f58655924787c4a6 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Mon, 9 May 2016 00:33:59 +0530 Subject: [PATCH 04/12] Adding example project --- spring-data-neo4j/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-data-neo4j/README.md b/spring-data-neo4j/README.md index 89eae99f05..e62c69f8b9 100644 --- a/spring-data-neo4j/README.md +++ b/spring-data-neo4j/README.md @@ -1,7 +1,7 @@ -## Spring Data Redis +## Spring Data Neo4j ### Relevant Articles: -- [Introduction to Spring Data Redis](http://www.baeldung.com/spring-data-redis-tutorial) +- [Introduction to Spring Data Neo4j](http://www.baeldung.com/spring-data-neo4j-tutorial) ### Build the Project with Tests Running ``` From a317e91d375e9d09aebef69a0c6afad95a3f46ea Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Mon, 9 May 2016 00:34:59 +0530 Subject: [PATCH 05/12] Adding example project --- spring-data-neo4j/pom.xml | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 5d04e0c3b4..72e17250db 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -10,7 +10,7 @@ UTF-8 4.2.5.RELEASE - 4.1.1.RELEASE + 4.0.0.RELEASE 0.8.0 @@ -18,19 +18,7 @@ org.springframework.data spring-data-neo4j - ${spring-data-neo4j} - - - - cglib - cglib-nodep - 2.2 - - - - log4j - log4j - 1.2.16 + ${spring-data-neo4j.version} @@ -45,24 +33,29 @@ ${spring.version} + + com.voodoodyne.jackson.jsog + jackson-jsog + 1.1 + compile + + + + log4j + log4j + 1.2.16 + + junit junit 4.12 - test org.springframework spring-test ${spring.version} - test - - - - com.lordofthejars - nosqlunit-redis - ${nosqlunit.version} From 6f95540287139c5754f6d4f5c02065dc3e8f1937 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Fri, 13 May 2016 18:57:52 +0530 Subject: [PATCH 06/12] Adding Book service interface --- .../data/neo4j/service/BookService.java | 64 +++---------------- .../data/neo4j/service/BookServiceImpl.java | 62 ++++++++++++++++++ .../spring/data/neo4j/BookServiceTest.java | 5 +- 3 files changed, 74 insertions(+), 57 deletions(-) create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java index 52323f689b..f8983dfd16 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java @@ -1,62 +1,18 @@ package com.baeldung.spring.data.neo4j.service; - import com.baeldung.spring.data.neo4j.model.Book; -import com.baeldung.spring.data.neo4j.repostory.BookRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.*; +import java.util.Map; -@Service -public class BookService { +/** + * Created by SDN on 5/13/2016. + */ +public interface BookService { + Map graph(int limit); - @Autowired - private BookRepository bookRepository; + Book save(Book book); - private Map toD3Format(final Iterator> result) { - List> nodes = new ArrayList>(); - List> rels= new ArrayList>(); - int i=0; - while (result.hasNext()) { - Map row = result.next(); - nodes.add(map("title",row.get("book"),"label","book")); - int target=i; - i++; - for (Object name : (Collection) row.get("cast")) { - Map actor = map("title", name,"label","actor"); - int source = nodes.indexOf(actor); - if (source == -1) { - nodes.add(actor); - source = i++; - } - rels.add(map("source",source,"target",target)); - } - } - return map("nodes", nodes, "links", rels); - } + Book findBookById(Long id); - private Map map(final String key1, final Object value1, final String key2, final Object value2) { - Map result = new HashMap(2); - result.put(key1,value1); - result.put(key2,value2); - return result; - } - - public Map graph(final int limit) { - Iterator> result = bookRepository.graph(limit).iterator(); - return toD3Format(result); - } - - public Book save(final Book book){ - return bookRepository.save(book); - } - - public Book findBookById(final Long id){ - return bookRepository.findOne(id); - } - - public void deleteAllInGraph(){ - bookRepository.deleteAll(); - } -} \ No newline at end of file + void deleteAllInGraph(); +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java new file mode 100644 index 0000000000..cd50f8b740 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java @@ -0,0 +1,62 @@ +package com.baeldung.spring.data.neo4j.service; + + +import com.baeldung.spring.data.neo4j.model.Book; +import com.baeldung.spring.data.neo4j.repostory.BookRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class BookServiceImpl implements BookService { + + @Autowired + private BookRepository bookRepository; + + private Map toD3Format(final Iterator> result) { + List> nodes = new ArrayList>(); + List> rels= new ArrayList>(); + int i=0; + while (result.hasNext()) { + Map row = result.next(); + nodes.add(map("title",row.get("book"),"label","book")); + int target=i; + i++; + for (Object name : (Collection) row.get("cast")) { + Map actor = map("title", name,"label","actor"); + int source = nodes.indexOf(actor); + if (source == -1) { + nodes.add(actor); + source = i++; + } + rels.add(map("source",source,"target",target)); + } + } + return map("nodes", nodes, "links", rels); + } + + private Map map(final String key1, final Object value1, final String key2, final Object value2) { + Map result = new HashMap(2); + result.put(key1,value1); + result.put(key2,value2); + return result; + } + + public Map graph(final int limit) { + Iterator> result = bookRepository.graph(limit).iterator(); + return toD3Format(result); + } + + public Book save(final Book book){ + return bookRepository.save(book); + } + + public Book findBookById(final Long id){ + return bookRepository.findOne(id); + } + + public void deleteAllInGraph(){ + bookRepository.deleteAll(); + } +} \ No newline at end of file diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java index 100465838e..9a791f87da 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java @@ -21,7 +21,7 @@ public class BookServiceTest { private static final Log LOGGER = LogFactory.getLog(BookServiceTest.class); @Autowired - private BookService bookService; + private BookService bookServiceImpl; @Test public void testSaveBook() { @@ -33,8 +33,7 @@ public class BookServiceTest { book.setReleased(1876); book.setPerson(author1); - bookService.save(book); - final Book savedBook = bookService.findBookById(book.getId()); + final Book savedBook = bookServiceImpl.save(book); assertEquals(book.getTitle(), savedBook.getTitle()); } } From 6e6b4612f8dd914484118cde4fad6f12c879fbc4 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Fri, 13 May 2016 19:58:19 +0530 Subject: [PATCH 07/12] Adding test cases --- .../spring/data/neo4j/model/Person.java | 52 +++++++++++++++++++ .../data/neo4j/repostory/BookRepository.java | 6 --- .../data/neo4j/service/BookService.java | 8 +-- .../data/neo4j/service/BookServiceImpl.java | 44 ++++------------ .../spring/data/neo4j/BookServiceTest.java | 50 ++++++++++++++++-- 5 files changed, 111 insertions(+), 49 deletions(-) create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java new file mode 100644 index 0000000000..53444c8f6c --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.data.neo4j.model; + +import org.neo4j.ogm.annotation.*; + +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +@NodeEntity +public class Person { + + private static final AtomicLong TS = new AtomicLong(); + + @GraphId + private Long id; + private String name; + private int born; + + @Relationship(type = "AUTHORED_BY") + private List books; + + public Person() { + this.id = TS.incrementAndGet(); + } + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getBorn() { + return born; + } + + public void setBorn(int born) { + this.born = born; + } + + public List getBooks() { + return books; + } + + public void setBooks(List books) { + this.books = books; + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java index 5c980b0381..c76d2862fc 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java @@ -12,11 +12,5 @@ import java.util.Map; @Repository public interface BookRepository extends GraphRepository { - Book findByTitle(@Param("title") String title); - @Query("MATCH (m:Book) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") - Collection findByTitleContaining(@Param("title") String title); - - @Query("MATCH (m:Book)<-[:ACTED_IN]-(a:Person) RETURN m.title as Book, collect(a.name) as cast LIMIT {limit}") - List> graph(@Param("limit") int limit); } \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java index f8983dfd16..daa988c92d 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java @@ -4,14 +4,14 @@ import com.baeldung.spring.data.neo4j.model.Book; import java.util.Map; -/** - * Created by SDN on 5/13/2016. - */ public interface BookService { - Map graph(int limit); Book save(Book book); + void delete(long bookId); + + long bookCount(); + Book findBookById(Long id); void deleteAllInGraph(); diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java index cd50f8b740..0c07e4acd9 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java @@ -14,49 +14,25 @@ public class BookServiceImpl implements BookService { @Autowired private BookRepository bookRepository; - private Map toD3Format(final Iterator> result) { - List> nodes = new ArrayList>(); - List> rels= new ArrayList>(); - int i=0; - while (result.hasNext()) { - Map row = result.next(); - nodes.add(map("title",row.get("book"),"label","book")); - int target=i; - i++; - for (Object name : (Collection) row.get("cast")) { - Map actor = map("title", name,"label","actor"); - int source = nodes.indexOf(actor); - if (source == -1) { - nodes.add(actor); - source = i++; - } - rels.add(map("source",source,"target",target)); - } - } - return map("nodes", nodes, "links", rels); - } - - private Map map(final String key1, final Object value1, final String key2, final Object value2) { - Map result = new HashMap(2); - result.put(key1,value1); - result.put(key2,value2); - return result; - } - - public Map graph(final int limit) { - Iterator> result = bookRepository.graph(limit).iterator(); - return toD3Format(result); - } - public Book save(final Book book){ return bookRepository.save(book); } + public long bookCount(){ + return bookRepository.count(); + } + public Book findBookById(final Long id){ return bookRepository.findOne(id); } + public void delete(final long bookId){ + bookRepository.delete(bookId); + } + public void deleteAllInGraph(){ bookRepository.deleteAll(); } + + } \ No newline at end of file diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java index 9a791f87da..17c75a1921 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java @@ -4,8 +4,6 @@ import com.baeldung.spring.data.neo4j.config.LibraryNeo4jConfiguration; import com.baeldung.spring.data.neo4j.model.Book; import com.baeldung.spring.data.neo4j.model.Person; import com.baeldung.spring.data.neo4j.service.BookService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -13,18 +11,17 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = LibraryNeo4jConfiguration.class) public class BookServiceTest { - private static final Log LOGGER = LogFactory.getLog(BookServiceTest.class); - @Autowired private BookService bookServiceImpl; @Test - public void testSaveBook() { + public void testSavingBook() { final Person author1 = new Person(); author1.setName("Mark Twain"); author1.setBorn(1835); @@ -36,4 +33,47 @@ public class BookServiceTest { final Book savedBook = bookServiceImpl.save(book); assertEquals(book.getTitle(), savedBook.getTitle()); } + + @Test + public void testFindingTheSavedBook() { + final Person author1 = new Person(); + author1.setName("Edgar Allan Poe"); + author1.setBorn(1809); + final Book book = new Book(); + book.setTitle("The Cask of Amontillado"); + book.setReleased(1846); + book.setPerson(author1); + + bookServiceImpl.save(book); + final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); + assertEquals(book.getTitle(), retrievedBook.getTitle()); + } + + @Test + public void testCountTheSavedBooks() { + long bookCount = bookServiceImpl.bookCount(); + assertEquals(bookCount, 2); + } + @Test + public void testDeletingASavedBook() { + final Person author1 = new Person(); + author1.setName("Rider Haggard"); + author1.setBorn(1856); + final Book book = new Book(); + book.setTitle("King Solomon's Mines"); + book.setReleased(1885); + book.setPerson(author1); + + final Book savedBook = bookServiceImpl.save(book); + bookServiceImpl.delete(savedBook.getId()); + final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); + assertNull(retrievedBook); + } + + @Test + public void testDeleteAllSavedBook() { + bookServiceImpl.deleteAllInGraph(); + final long bookCount = bookServiceImpl.bookCount(); + assertEquals(bookCount, 0); + } } From 718c04ceebe6525e1b569879ea8e943edb23a919 Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 14:09:00 +0530 Subject: [PATCH 08/12] updating test cases --- spring-data-neo4j/pom.xml | 109 ++++++++++++--- .../config/LibraryNeo4jConfiguration.java | 32 ----- .../MovieDatabaseNeo4jConfiguration.java | 38 +++++ .../MovieDatabaseNeo4jTestConfiguration.java | 34 +++++ .../spring/data/neo4j/domain/Movie.java | 63 +++++++++ .../spring/data/neo4j/domain/Person.java | 50 +++++++ .../spring/data/neo4j/domain/Role.java | 50 +++++++ .../spring/data/neo4j/model/Book.java | 54 -------- .../spring/data/neo4j/model/Person.java | 52 ------- .../data/neo4j/repostory/BookRepository.java | 16 --- .../data/neo4j/repostory/MovieRepository.java | 25 ++++ .../neo4j/repostory/PersonRepository.java | 11 ++ .../data/neo4j/service/BookService.java | 18 --- .../data/neo4j/service/BookServiceImpl.java | 38 ----- .../data/neo4j/services/MovieService.java | 50 +++++++ .../spring/data/neo4j/BookServiceTest.java | 79 ----------- .../data/neo4j/MovieRepositoryTest.java | 131 ++++++++++++++++++ 17 files changed, 543 insertions(+), 307 deletions(-) delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java delete mode 100644 spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java create mode 100644 spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 72e17250db..320b6ce019 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -8,12 +8,20 @@ jar + 1.8 UTF-8 - 4.2.5.RELEASE - 4.0.0.RELEASE - 0.8.0 + UTF-8 + 3.0.1 + 4.1.1.RELEASE + Hopper-SR1 + + org.springframework.boot + spring-boot-starter-parent + 1.3.0.RELEASE + + org.springframework.data @@ -22,15 +30,8 @@ - org.springframework - spring-core - ${spring.version} - - - - org.springframework - spring-context - ${spring.version} + org.springframework.boot + spring-boot-starter-data-rest @@ -40,23 +41,95 @@ compile + + + - log4j - log4j - 1.2.16 + org.springframework.boot + spring-boot-starter-test + test + + org.springframework.data + spring-data-neo4j + ${spring-data-neo4j.version} + test-jar + + + + org.neo4j + neo4j-kernel + ${neo4j.version} + test-jar + + + + org.neo4j.app + neo4j-server + ${neo4j.version} + test-jar + + + + org.neo4j + neo4j-ogm-test + 2.0.2 + test + + + + org.neo4j.test + neo4j-harness + ${neo4j.version} + test + + + junit + junit + 4.12 + junit junit 4.12 - org.springframework spring-test - ${spring.version} + 4.2.3.RELEASE + - + + + + + maven-compiler-plugin + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-milestones + http://repo.spring.io/libs-snapshot + + true + + + + + + spring-milestones + http://repo.spring.io/libs-snapshot + + true + + + diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java deleted file mode 100644 index c497c944d1..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.spring.data.neo4j.config; - - -import org.neo4j.ogm.session.SessionFactory; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.data.neo4j.config.Neo4jConfiguration; -import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; -import org.springframework.data.neo4j.server.Neo4jServer; -import org.springframework.data.neo4j.server.RemoteServer; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.transaction.annotation.EnableTransactionManagement; - - -@Configuration -@ComponentScan("com.baeldung.spring.data.neo4j") -@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") -public class LibraryNeo4jConfiguration extends Neo4jConfiguration { - - public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://localhost:7474"; - - @Override - public Neo4jServer neo4jServer() { - return new RemoteServer(URL,"neo4j","password"); - } - - @Override - public SessionFactory getSessionFactory() { - return new SessionFactory("com.baeldung.spring.data.neo4j.model"); - } -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java new file mode 100644 index 0000000000..6e57eb1f36 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java @@ -0,0 +1,38 @@ +package com.baeldung.spring.data.neo4j.config; + +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.neo4j.config.Neo4jConfiguration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@EnableTransactionManagement +@EnableScheduling +@EnableAutoConfiguration +@ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) +@Configuration +@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") +public class MovieDatabaseNeo4jConfiguration extends Neo4jConfiguration { + + public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://neo4j:movies@localhost:7474"; + + @Bean + public org.neo4j.ogm.config.Configuration getConfiguration() { + org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); + config + .driverConfiguration() + .setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver") + .setURI(URL); + return config; + } + + @Override + public SessionFactory getSessionFactory() { + return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain"); + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java new file mode 100644 index 0000000000..2b6394184d --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java @@ -0,0 +1,34 @@ +package com.baeldung.spring.data.neo4j.config; + +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.data.neo4j.config.Neo4jConfiguration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.data.neo4j.server.Neo4jServer; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@EnableTransactionManagement +@ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) +@Configuration +@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") +@Profile({"embedded", "test"}) +public class MovieDatabaseNeo4jTestConfiguration extends Neo4jConfiguration { + + @Bean + public org.neo4j.ogm.config.Configuration getConfiguration() { + org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); + config + .driverConfiguration() + .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); + return config; + } + + @Override + public SessionFactory getSessionFactory() { + return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain"); + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java new file mode 100644 index 0000000000..8d68b69c05 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java @@ -0,0 +1,63 @@ +package com.baeldung.spring.data.neo4j.domain; + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.voodoodyne.jackson.jsog.JSOGGenerator; +import org.neo4j.ogm.annotation.GraphId; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Relationship; + +import java.util.Collection; +import java.util.List; + +@JsonIdentityInfo(generator=JSOGGenerator.class) + +@NodeEntity +public class Movie { + @GraphId + Long id; + + private String title; + + private int released; + private String tagline; + + @Relationship(type="ACTED_IN", direction = Relationship.INCOMING) private List roles; + +// end::movie[] + + public Movie() { } + + public String getTitle() { + return title; + } + + public int getReleased() { + return released; + } + + public String getTagline() { + return tagline; + } + + public Collection getRoles() { + return roles; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setReleased(int released) { + this.released = released; + } + + public void setTagline(String tagline) { + this.tagline = tagline; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java new file mode 100644 index 0000000000..d96dc07530 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java @@ -0,0 +1,50 @@ +package com.baeldung.spring.data.neo4j.domain; + + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.voodoodyne.jackson.jsog.JSOGGenerator; +import org.neo4j.ogm.annotation.GraphId; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Relationship; + +import java.util.List; + +@JsonIdentityInfo(generator=JSOGGenerator.class) +@NodeEntity +public class Person { + @GraphId + Long id; + + private String name; + private int born; + + @Relationship(type = "ACTED_IN") + private List movies; + + public Person() { } + + public String getName() { + return name; + } + + public int getBorn() { + return born; + } + + public List getMovies() { + return movies; + } + + public void setName(String name) { + this.name = name; + } + + public void setBorn(int born) { + this.born = born; + } + + public void setMovies(List movies) { + this.movies = movies; + } + +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java new file mode 100644 index 0000000000..20512a10ad --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java @@ -0,0 +1,50 @@ +package com.baeldung.spring.data.neo4j.domain; + + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.voodoodyne.jackson.jsog.JSOGGenerator; +import org.neo4j.ogm.annotation.EndNode; +import org.neo4j.ogm.annotation.GraphId; +import org.neo4j.ogm.annotation.RelationshipEntity; +import org.neo4j.ogm.annotation.StartNode; + +import java.util.Collection; + +@JsonIdentityInfo(generator=JSOGGenerator.class) +@RelationshipEntity(type = "ACTED_IN") +public class Role { + @GraphId + Long id; + private Collection roles; + @StartNode + private Person person; + @EndNode + private Movie movie; + + public Role() { + } + + public Collection getRoles() { + return roles; + } + + public Person getPerson() { + return person; + } + + public Movie getMovie() { + return movie; + } + + public void setRoles(Collection roles) { + this.roles = roles; + } + + public void setPerson(Person person) { + this.person = person; + } + + public void setMovie(Movie movie) { + this.movie = movie; + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java deleted file mode 100644 index 2c643a4b7c..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.spring.data.neo4j.model; - -import org.neo4j.graphdb.Direction; -import org.neo4j.ogm.annotation.*; - -import java.util.Collection; -import java.util.List; -import java.util.concurrent.atomic.AtomicLong; - -@NodeEntity -public class Book { - - private static final AtomicLong TS = new AtomicLong(); - - @GraphId - private Long id; - private String title; - private int released; - - @Relationship(type="AUTHORED_BY", direction = Relationship.INCOMING) - private Person person; - - public Book() { - this.id = TS.getAndIncrement(); - } - - public Long getId() { - return id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getReleased() { - return released; - } - - public void setReleased(int released) { - this.released = released; - } - - public Person getPerson() { - return person; - } - - public void setPerson(Person person) { - this.person = person; - } -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java deleted file mode 100644 index 53444c8f6c..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.baeldung.spring.data.neo4j.model; - -import org.neo4j.ogm.annotation.*; - -import java.util.List; -import java.util.concurrent.atomic.AtomicLong; - -@NodeEntity -public class Person { - - private static final AtomicLong TS = new AtomicLong(); - - @GraphId - private Long id; - private String name; - private int born; - - @Relationship(type = "AUTHORED_BY") - private List books; - - public Person() { - this.id = TS.incrementAndGet(); - } - - public Long getId() { - return id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getBorn() { - return born; - } - - public void setBorn(int born) { - this.born = born; - } - - public List getBooks() { - return books; - } - - public void setBooks(List books) { - this.books = books; - } -} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java deleted file mode 100644 index c76d2862fc..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.spring.data.neo4j.repostory; - -import com.baeldung.spring.data.neo4j.model.Book; -import org.springframework.data.neo4j.annotation.Query; -import org.springframework.data.neo4j.repository.GraphRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -@Repository -public interface BookRepository extends GraphRepository { - -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java new file mode 100644 index 0000000000..3c5953eff3 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.data.neo4j.repostory; + +import com.baeldung.spring.data.neo4j.domain.Movie; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.GraphRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + + +@RepositoryRestResource(collectionResourceRel = "movies", path = "movies") +public interface MovieRepository extends GraphRepository { + Movie findByTitle(@Param("title") String title); + + @Query("MATCH (m:Movie) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") + Collection findByTitleContaining(@Param("title") String title); + + @Query("MATCH (m:Movie)<-[:ACTED_IN]-(a:Person) RETURN m.title as movie, collect(a.name) as cast LIMIT {limit}") + List> graph(@Param("limit") int limit); +} + + diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java new file mode 100644 index 0000000000..4c287f99a4 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java @@ -0,0 +1,11 @@ +package com.baeldung.spring.data.neo4j.repostory; + +import com.baeldung.spring.data.neo4j.domain.Person; +import org.springframework.data.neo4j.repository.GraphRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface PersonRepository extends GraphRepository { + +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java deleted file mode 100644 index daa988c92d..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.spring.data.neo4j.service; - -import com.baeldung.spring.data.neo4j.model.Book; - -import java.util.Map; - -public interface BookService { - - Book save(Book book); - - void delete(long bookId); - - long bookCount(); - - Book findBookById(Long id); - - void deleteAllInGraph(); -} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java deleted file mode 100644 index 0c07e4acd9..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.spring.data.neo4j.service; - - -import com.baeldung.spring.data.neo4j.model.Book; -import com.baeldung.spring.data.neo4j.repostory.BookRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; - -@Service -public class BookServiceImpl implements BookService { - - @Autowired - private BookRepository bookRepository; - - public Book save(final Book book){ - return bookRepository.save(book); - } - - public long bookCount(){ - return bookRepository.count(); - } - - public Book findBookById(final Long id){ - return bookRepository.findOne(id); - } - - public void delete(final long bookId){ - bookRepository.delete(bookId); - } - - public void deleteAllInGraph(){ - bookRepository.deleteAll(); - } - - -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java new file mode 100644 index 0000000000..532cc79091 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java @@ -0,0 +1,50 @@ +package com.baeldung.spring.data.neo4j.services; + +import com.baeldung.spring.data.neo4j.repostory.MovieRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Service +@Transactional +public class MovieService { + + @Autowired + MovieRepository movieRepository; + + private Map toD3Format(Iterator> result) { + List> nodes = new ArrayList>(); + List> rels= new ArrayList>(); + int i=0; + while (result.hasNext()) { + Map row = result.next(); + nodes.add(map("title",row.get("movie"),"label","movie")); + int target=i; + i++; + for (Object name : (Collection) row.get("cast")) { + Map actor = map("title", name,"label","actor"); + int source = nodes.indexOf(actor); + if (source == -1) { + nodes.add(actor); + source = i++; + } + rels.add(map("source",source,"target",target)); + } + } + return map("nodes", nodes, "links", rels); + } + + private Map map(String key1, Object value1, String key2, Object value2) { + Map result = new HashMap(2); + result.put(key1,value1); + result.put(key2,value2); + return result; + } + + public Map graph(int limit) { + Iterator> result = movieRepository.graph(limit).iterator(); + return toD3Format(result); + } +} diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java deleted file mode 100644 index 17c75a1921..0000000000 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.baeldung.spring.data.neo4j; - -import com.baeldung.spring.data.neo4j.config.LibraryNeo4jConfiguration; -import com.baeldung.spring.data.neo4j.model.Book; -import com.baeldung.spring.data.neo4j.model.Person; -import com.baeldung.spring.data.neo4j.service.BookService; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = LibraryNeo4jConfiguration.class) -public class BookServiceTest { - - @Autowired - private BookService bookServiceImpl; - - @Test - public void testSavingBook() { - final Person author1 = new Person(); - author1.setName("Mark Twain"); - author1.setBorn(1835); - final Book book = new Book(); - book.setTitle("The Adventures of Tom Sawyer"); - book.setReleased(1876); - book.setPerson(author1); - - final Book savedBook = bookServiceImpl.save(book); - assertEquals(book.getTitle(), savedBook.getTitle()); - } - - @Test - public void testFindingTheSavedBook() { - final Person author1 = new Person(); - author1.setName("Edgar Allan Poe"); - author1.setBorn(1809); - final Book book = new Book(); - book.setTitle("The Cask of Amontillado"); - book.setReleased(1846); - book.setPerson(author1); - - bookServiceImpl.save(book); - final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); - assertEquals(book.getTitle(), retrievedBook.getTitle()); - } - - @Test - public void testCountTheSavedBooks() { - long bookCount = bookServiceImpl.bookCount(); - assertEquals(bookCount, 2); - } - @Test - public void testDeletingASavedBook() { - final Person author1 = new Person(); - author1.setName("Rider Haggard"); - author1.setBorn(1856); - final Book book = new Book(); - book.setTitle("King Solomon's Mines"); - book.setReleased(1885); - book.setPerson(author1); - - final Book savedBook = bookServiceImpl.save(book); - bookServiceImpl.delete(savedBook.getId()); - final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); - assertNull(retrievedBook); - } - - @Test - public void testDeleteAllSavedBook() { - bookServiceImpl.deleteAllInGraph(); - final long bookCount = bookServiceImpl.bookCount(); - assertEquals(bookCount, 0); - } -} diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java new file mode 100644 index 0000000000..4f09284b6a --- /dev/null +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -0,0 +1,131 @@ +package com.baeldung.spring.data.neo4j; + +import com.baeldung.spring.data.neo4j.config.MovieDatabaseNeo4jTestConfiguration; +import com.baeldung.spring.data.neo4j.domain.Movie; +import com.baeldung.spring.data.neo4j.domain.Person; +import com.baeldung.spring.data.neo4j.domain.Role; +import com.baeldung.spring.data.neo4j.repostory.MovieRepository; +import com.baeldung.spring.data.neo4j.repostory.PersonRepository; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.util.*; + +import static junit.framework.TestCase.assertNull; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class) +@ActiveProfiles(profiles = "test") +public class MovieRepositoryTest { + + @Autowired + private MovieRepository instance; + + @Autowired + private PersonRepository personRepository; + + public MovieRepositoryTest() { + } + + @Before + public void initializeDatabase() { + System.out.println("seeding embedded database"); + Movie matrix = new Movie(); + matrix.setTitle("The Italian Job"); + matrix.setReleased(1999); + instance.save(matrix); + + Person mark = new Person(); + mark.setName("Mark Wahlberg"); + personRepository.save(mark); + + Role neo = new Role(); + neo.setMovie(matrix); + neo.setPerson(mark); + Collection roleNames = new HashSet(); + roleNames.add("Charlie Croker"); + neo.setRoles(roleNames); + List roles = new ArrayList(); + roles.add(neo); + matrix.setRoles(roles); + instance.save(matrix); + } + + @Test + @DirtiesContext + public void testFindByTitle() { + System.out.println("findByTitle"); + String title = "The Italian Job"; + Movie result = instance.findByTitle(title); + assertNotNull(result); + assertEquals(1999, result.getReleased()); + } + + @Test + @DirtiesContext + public void testCount() { + System.out.println("count"); + long result = instance.count(); + assertNotNull(result); + assertEquals(1, result); + } + + @Test + @DirtiesContext + public void testFindAll() { + System.out.println("findAll"); + Collection result = (Collection) instance.findAll(); + assertNotNull(result); + assertEquals(1, result.size()); + } + + @Test + @DirtiesContext + public void testFindByTitleContaining() { + System.out.println("findByTitleContaining"); + String title = "Italian"; + Collection result = instance.findByTitleContaining(title); + assertNotNull(result); + assertEquals(1,result.size()); + } + + @Test + @DirtiesContext + public void testGraph() { + System.out.println("graph"); + List> graph = instance.graph(5); + assertEquals(1,graph.size()); + Map map = graph.get(0); + assertEquals(2,map.size()); + String[] cast = (String[])map.get("cast"); + String movie = (String)map.get("movie"); + assertEquals("The Italian Job",movie); + assertEquals("Mark Wahlberg", cast[0]); + } + + @Test + @DirtiesContext + public void testDeleteMovie() { + System.out.println("deleteMovie"); + instance.delete( + instance.findByTitle("The Italian Job")); + assertNull(instance.findByTitle("The Italian Job")); + } + + @Test + @DirtiesContext + public void testDeleteAll() { + System.out.println("deleteAll"); + instance.deleteAll(); + Collection result = (Collection) instance.findAll(); + assertEquals(0,result.size()); + } +} From 1a3e005442fc76b9b1428eb21fd94a8bc4af81fe Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 23:17:24 +0530 Subject: [PATCH 09/12] updating test cases --- spring-data-neo4j/pom.xml | 42 ------------------- .../MovieDatabaseNeo4jConfiguration.java | 2 - .../data/neo4j/repostory/MovieRepository.java | 2 - .../data/neo4j/MovieRepositoryTest.java | 12 +++--- 4 files changed, 7 insertions(+), 51 deletions(-) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 320b6ce019..a5a2e9220a 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -13,15 +13,8 @@ UTF-8 3.0.1 4.1.1.RELEASE - Hopper-SR1 - - org.springframework.boot - spring-boot-starter-parent - 1.3.0.RELEASE - - org.springframework.data @@ -29,11 +22,6 @@ ${spring-data-neo4j.version} - - org.springframework.boot - spring-boot-starter-data-rest - - com.voodoodyne.jackson.jsog jackson-jsog @@ -41,9 +29,6 @@ compile - - - org.springframework.boot spring-boot-starter-test @@ -89,11 +74,6 @@ junit 4.12 - - junit - junit - 4.12 - org.springframework spring-test @@ -107,29 +87,7 @@ maven-compiler-plugin - - org.springframework.boot - spring-boot-maven-plugin - - - - spring-milestones - http://repo.spring.io/libs-snapshot - - true - - - - - - spring-milestones - http://repo.spring.io/libs-snapshot - - true - - - diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java index 6e57eb1f36..003e72971a 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java @@ -1,7 +1,6 @@ package com.baeldung.spring.data.neo4j.config; import org.neo4j.ogm.session.SessionFactory; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -13,7 +12,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement @EnableScheduling -@EnableAutoConfiguration @ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) @Configuration @EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java index 3c5953eff3..90833d7c70 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java @@ -4,14 +4,12 @@ import com.baeldung.spring.data.neo4j.domain.Movie; import org.springframework.data.neo4j.annotation.Query; import org.springframework.data.neo4j.repository.GraphRepository; import org.springframework.data.repository.query.Param; -import org.springframework.data.rest.core.annotation.RepositoryRestResource; import java.util.Collection; import java.util.List; import java.util.Map; -@RepositoryRestResource(collectionResourceRel = "movies", path = "movies") public interface MovieRepository extends GraphRepository { Movie findByTitle(@Param("title") String title); diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java index 4f09284b6a..53ef380dbd 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -82,7 +82,8 @@ public class MovieRepositoryTest { @DirtiesContext public void testFindAll() { System.out.println("findAll"); - Collection result = (Collection) instance.findAll(); + Collection result = + (Collection) instance.findAll(); assertNotNull(result); assertEquals(1, result.size()); } @@ -92,7 +93,8 @@ public class MovieRepositoryTest { public void testFindByTitleContaining() { System.out.println("findByTitleContaining"); String title = "Italian"; - Collection result = instance.findByTitleContaining(title); + Collection result = + instance.findByTitleContaining(title); assertNotNull(result); assertEquals(1,result.size()); } @@ -115,8 +117,7 @@ public class MovieRepositoryTest { @DirtiesContext public void testDeleteMovie() { System.out.println("deleteMovie"); - instance.delete( - instance.findByTitle("The Italian Job")); + instance.delete(instance.findByTitle("The Italian Job")); assertNull(instance.findByTitle("The Italian Job")); } @@ -125,7 +126,8 @@ public class MovieRepositoryTest { public void testDeleteAll() { System.out.println("deleteAll"); instance.deleteAll(); - Collection result = (Collection) instance.findAll(); + Collection result = + (Collection) instance.findAll(); assertEquals(0,result.size()); } } From 548365130aa9d1230eb2c21e2915857c40a2cd9f Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 23:38:40 +0530 Subject: [PATCH 10/12] updating test cases --- .../data/neo4j/config/MovieDatabaseNeo4jConfiguration.java | 2 -- .../baeldung/spring/data/neo4j/repostory/MovieRepository.java | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java index 003e72971a..ac9a7260be 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java @@ -10,8 +10,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; -@EnableTransactionManagement -@EnableScheduling @ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) @Configuration @EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java index 90833d7c70..850d2336ba 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java @@ -4,12 +4,13 @@ import com.baeldung.spring.data.neo4j.domain.Movie; import org.springframework.data.neo4j.annotation.Query; import org.springframework.data.neo4j.repository.GraphRepository; import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; import java.util.Collection; import java.util.List; import java.util.Map; - +@Repository public interface MovieRepository extends GraphRepository { Movie findByTitle(@Param("title") String title); From 31b3e0fa167dc56af6b6144361db3d03382ee5d5 Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 23:48:45 +0530 Subject: [PATCH 11/12] updating test cases --- .../spring/data/neo4j/domain/Movie.java | 2 - .../data/neo4j/MovieRepositoryTest.java | 66 +++++++++---------- 2 files changed, 33 insertions(+), 35 deletions(-) diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java index 8d68b69c05..e48dfaf276 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java @@ -23,8 +23,6 @@ public class Movie { @Relationship(type="ACTED_IN", direction = Relationship.INCOMING) private List roles; -// end::movie[] - public Movie() { } public String getTitle() { diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java index 53ef380dbd..92d27d2a1e 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -25,38 +25,38 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class) @ActiveProfiles(profiles = "test") public class MovieRepositoryTest { - + @Autowired private MovieRepository instance; @Autowired private PersonRepository personRepository; - + public MovieRepositoryTest() { } - - @Before + + @Before public void initializeDatabase() { - System.out.println("seeding embedded database"); - Movie matrix = new Movie(); - matrix.setTitle("The Italian Job"); - matrix.setReleased(1999); - instance.save(matrix); - - Person mark = new Person(); - mark.setName("Mark Wahlberg"); - personRepository.save(mark); - - Role neo = new Role(); - neo.setMovie(matrix); - neo.setPerson(mark); - Collection roleNames = new HashSet(); - roleNames.add("Charlie Croker"); - neo.setRoles(roleNames); - List roles = new ArrayList(); - roles.add(neo); - matrix.setRoles(roles); - instance.save(matrix); + System.out.println("seeding embedded database"); + Movie italianJob = new Movie(); + italianJob.setTitle("The Italian Job"); + italianJob.setReleased(1999); + instance.save(italianJob); + + Person mark = new Person(); + mark.setName("Mark Wahlberg"); + personRepository.save(mark); + + Role charlie = new Role(); + charlie.setMovie(italianJob); + charlie.setPerson(mark); + Collection roleNames = new HashSet(); + roleNames.add("Charlie Croker"); + charlie.setRoles(roleNames); + List roles = new ArrayList(); + roles.add(charlie); + italianJob.setRoles(roles); + instance.save(italianJob); } @Test @@ -96,20 +96,20 @@ public class MovieRepositoryTest { Collection result = instance.findByTitleContaining(title); assertNotNull(result); - assertEquals(1,result.size()); + assertEquals(1, result.size()); } @Test @DirtiesContext public void testGraph() { System.out.println("graph"); - List> graph = instance.graph(5); - assertEquals(1,graph.size()); - Map map = graph.get(0); - assertEquals(2,map.size()); - String[] cast = (String[])map.get("cast"); - String movie = (String)map.get("movie"); - assertEquals("The Italian Job",movie); + List> graph = instance.graph(5); + assertEquals(1, graph.size()); + Map map = graph.get(0); + assertEquals(2, map.size()); + String[] cast = (String[]) map.get("cast"); + String movie = (String) map.get("movie"); + assertEquals("The Italian Job", movie); assertEquals("Mark Wahlberg", cast[0]); } @@ -128,6 +128,6 @@ public class MovieRepositoryTest { instance.deleteAll(); Collection result = (Collection) instance.findAll(); - assertEquals(0,result.size()); + assertEquals(0, result.size()); } } From d4c2d508a407e4011e1fa87937fa71287c2acff9 Mon Sep 17 00:00:00 2001 From: Sameera Date: Wed, 29 Jun 2016 00:31:38 +0530 Subject: [PATCH 12/12] updating test cases --- .../data/neo4j/MovieRepositoryTest.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java index 92d27d2a1e..8061b3c2a7 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -27,7 +27,7 @@ import static org.junit.Assert.assertNotNull; public class MovieRepositoryTest { @Autowired - private MovieRepository instance; + private MovieRepository movieRepository; @Autowired private PersonRepository personRepository; @@ -41,7 +41,7 @@ public class MovieRepositoryTest { Movie italianJob = new Movie(); italianJob.setTitle("The Italian Job"); italianJob.setReleased(1999); - instance.save(italianJob); + movieRepository.save(italianJob); Person mark = new Person(); mark.setName("Mark Wahlberg"); @@ -56,7 +56,7 @@ public class MovieRepositoryTest { List roles = new ArrayList(); roles.add(charlie); italianJob.setRoles(roles); - instance.save(italianJob); + movieRepository.save(italianJob); } @Test @@ -64,7 +64,7 @@ public class MovieRepositoryTest { public void testFindByTitle() { System.out.println("findByTitle"); String title = "The Italian Job"; - Movie result = instance.findByTitle(title); + Movie result = movieRepository.findByTitle(title); assertNotNull(result); assertEquals(1999, result.getReleased()); } @@ -73,9 +73,9 @@ public class MovieRepositoryTest { @DirtiesContext public void testCount() { System.out.println("count"); - long result = instance.count(); - assertNotNull(result); - assertEquals(1, result); + long movieCount = movieRepository.count(); + assertNotNull(movieCount); + assertEquals(1, movieCount); } @Test @@ -83,7 +83,7 @@ public class MovieRepositoryTest { public void testFindAll() { System.out.println("findAll"); Collection result = - (Collection) instance.findAll(); + (Collection) movieRepository.findAll(); assertNotNull(result); assertEquals(1, result.size()); } @@ -94,7 +94,7 @@ public class MovieRepositoryTest { System.out.println("findByTitleContaining"); String title = "Italian"; Collection result = - instance.findByTitleContaining(title); + movieRepository.findByTitleContaining(title); assertNotNull(result); assertEquals(1, result.size()); } @@ -103,7 +103,7 @@ public class MovieRepositoryTest { @DirtiesContext public void testGraph() { System.out.println("graph"); - List> graph = instance.graph(5); + List> graph = movieRepository.graph(5); assertEquals(1, graph.size()); Map map = graph.get(0); assertEquals(2, map.size()); @@ -117,17 +117,17 @@ public class MovieRepositoryTest { @DirtiesContext public void testDeleteMovie() { System.out.println("deleteMovie"); - instance.delete(instance.findByTitle("The Italian Job")); - assertNull(instance.findByTitle("The Italian Job")); + movieRepository.delete(movieRepository.findByTitle("The Italian Job")); + assertNull(movieRepository.findByTitle("The Italian Job")); } @Test @DirtiesContext public void testDeleteAll() { System.out.println("deleteAll"); - instance.deleteAll(); + movieRepository.deleteAll(); Collection result = - (Collection) instance.findAll(); + (Collection) movieRepository.findAll(); assertEquals(0, result.size()); } }