From 04b50511aa3c18cedd45c79fc23078bc69e7d57d Mon Sep 17 00:00:00 2001 From: Roger Kowalewski Date: Fri, 16 Aug 2013 20:04:18 +0200 Subject: [PATCH] create a main application to persist test data on local storage --- .gitignore | 1 + .../comsysto/neo4j/showcase/main/Main.java | 28 ++++++++ .../neo4j/showcase/main/Neo4jPersister.java | 64 +++++++++++++++++++ .../showcase/model}/ClickedRelationship.java | 2 +- .../showcase/model}/IdentifiableEntity.java | 2 +- .../showcase/model}/Product.java | 2 +- .../model}/RecommendRelationship.java | 2 +- .../showcase/model}/RelationshipTypes.java | 2 +- .../showcase/model}/User.java | 2 +- .../repository}/ProductRepository.java | 3 +- .../showcase/repository}/UserRepository.java | 3 +- .../main/related-to-via-test-context.xml | 21 ++++++ .../SpringDataNeo4jProductUserTest.java | 19 ++++-- .../showcase/related-to-via-test-context.xml | 6 +- 14 files changed, 139 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/comsysto/neo4j/showcase/main/Main.java create mode 100644 src/main/java/com/comsysto/neo4j/showcase/main/Neo4jPersister.java rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/model}/ClickedRelationship.java (97%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/model}/IdentifiableEntity.java (91%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/model}/Product.java (98%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/model}/RecommendRelationship.java (97%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/model}/RelationshipTypes.java (79%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/model}/User.java (98%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/repository}/ProductRepository.java (93%) rename src/main/java/com/comsysto/{springDataNeo4j/showcase => neo4j/showcase/repository}/UserRepository.java (70%) create mode 100644 src/main/resources/com/comsysto/neo4j/showcase/main/related-to-via-test-context.xml rename src/test/java/com/comsysto/{springDataNeo4j => neo4j}/showcase/SpringDataNeo4jProductUserTest.java (90%) rename src/test/resources/com/comsysto/{springDataNeo4j => neo4j}/showcase/related-to-via-test-context.xml (72%) diff --git a/.gitignore b/.gitignore index e66dbc4..73a0854 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ # Mac .DS_Store +.shell_history # Maven log/ diff --git a/src/main/java/com/comsysto/neo4j/showcase/main/Main.java b/src/main/java/com/comsysto/neo4j/showcase/main/Main.java new file mode 100644 index 0000000..ce701a5 --- /dev/null +++ b/src/main/java/com/comsysto/neo4j/showcase/main/Main.java @@ -0,0 +1,28 @@ +package com.comsysto.neo4j.showcase.main; + +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.transaction.jta.JtaTransactionManager; + +import javax.transaction.*; + +/** + * @author: rkowalewski + */ +public class Main { + + private static final String CLASSPATH_LOCATION = "classpath:com/comsysto/neo4j/showcase/main/related-to-via-test-context.xml"; + + public static void main(String[] args) throws SystemException, NotSupportedException, HeuristicRollbackException, HeuristicMixedException, RollbackException { + + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(CLASSPATH_LOCATION); + + JtaTransactionManager tx = (JtaTransactionManager) context.getBean("neo4jTransactionManager"); + Neo4jPersister neo4jPersister = (Neo4jPersister) context.getBean("neo4jPersister"); + + tx.getTransactionManager().begin(); + + neo4jPersister.createTestData(); + + tx.getTransactionManager().commit(); + } +} diff --git a/src/main/java/com/comsysto/neo4j/showcase/main/Neo4jPersister.java b/src/main/java/com/comsysto/neo4j/showcase/main/Neo4jPersister.java new file mode 100644 index 0000000..4d0cee4 --- /dev/null +++ b/src/main/java/com/comsysto/neo4j/showcase/main/Neo4jPersister.java @@ -0,0 +1,64 @@ +package com.comsysto.neo4j.showcase.main; + +import com.comsysto.neo4j.showcase.model.Product; +import com.comsysto.neo4j.showcase.repository.ProductRepository; +import com.comsysto.neo4j.showcase.model.User; +import com.comsysto.neo4j.showcase.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author: rkowalewski + */ +@Component +@Transactional(propagation = Propagation.REQUIRED) +public class Neo4jPersister { + + @Autowired + public ProductRepository productRepository; + @Autowired + public UserRepository userRepository; + + private void userClickedProduct(User user, Product product) { + + user.addClickedProduct(product); + + userRepository.save(user); + productRepository.save(product); + } + + private Product createProduct(String id, String name) { + return productRepository.save(new Product(id, name)); + } + + private User createUser(String id, String name) { + return userRepository.save(new User(id, name)); + } + + public void createTestData() { + User jordan = createUser("MJ", "Monika Jordan"); + User pippen = createUser("SP", "Sandra Pippen"); + User miller = createUser("JM", "John Miller"); + + Product pizzaMargarita = createProduct("Pizza_1", "Pizza Margarita"); + Product pizzaFungi = createProduct("Pizza_2", "Pizza Fungi"); + Product pizzaSalami = createProduct("Pizza_3", "Pizza Salami"); + Product pizzaVegitarian = createProduct("Pizza_4", "Pizza Vegitarian"); + Product pizzaRustica = createProduct("Pizza_5", "Pizza Rustica"); + + userClickedProduct(jordan, pizzaMargarita); + userClickedProduct(jordan, pizzaFungi); + userClickedProduct(jordan, pizzaSalami); + + userClickedProduct(pippen, pizzaMargarita); + userClickedProduct(pippen, pizzaVegitarian); + userClickedProduct(pippen, pizzaRustica); + userClickedProduct(pippen, pizzaMargarita); + userClickedProduct(pippen, pizzaVegitarian); + + userClickedProduct(miller, pizzaFungi); + } + +} diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/ClickedRelationship.java b/src/main/java/com/comsysto/neo4j/showcase/model/ClickedRelationship.java similarity index 97% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/ClickedRelationship.java rename to src/main/java/com/comsysto/neo4j/showcase/model/ClickedRelationship.java index 55c1165..69e41da 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/ClickedRelationship.java +++ b/src/main/java/com/comsysto/neo4j/showcase/model/ClickedRelationship.java @@ -1,4 +1,4 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.model; import org.springframework.data.neo4j.annotation.*; diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/IdentifiableEntity.java b/src/main/java/com/comsysto/neo4j/showcase/model/IdentifiableEntity.java similarity index 91% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/IdentifiableEntity.java rename to src/main/java/com/comsysto/neo4j/showcase/model/IdentifiableEntity.java index 2f9f422..fbe845a 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/IdentifiableEntity.java +++ b/src/main/java/com/comsysto/neo4j/showcase/model/IdentifiableEntity.java @@ -1,4 +1,4 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.model; import org.springframework.data.neo4j.annotation.GraphId; diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/Product.java b/src/main/java/com/comsysto/neo4j/showcase/model/Product.java similarity index 98% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/Product.java rename to src/main/java/com/comsysto/neo4j/showcase/model/Product.java index ef5cac1..3036e36 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/Product.java +++ b/src/main/java/com/comsysto/neo4j/showcase/model/Product.java @@ -1,4 +1,4 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.model; import org.springframework.data.neo4j.annotation.Indexed; import org.springframework.data.neo4j.annotation.NodeEntity; diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/RecommendRelationship.java b/src/main/java/com/comsysto/neo4j/showcase/model/RecommendRelationship.java similarity index 97% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/RecommendRelationship.java rename to src/main/java/com/comsysto/neo4j/showcase/model/RecommendRelationship.java index b73bd9a..d5729d5 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/RecommendRelationship.java +++ b/src/main/java/com/comsysto/neo4j/showcase/model/RecommendRelationship.java @@ -1,4 +1,4 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.model; import org.springframework.data.neo4j.annotation.*; diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/RelationshipTypes.java b/src/main/java/com/comsysto/neo4j/showcase/model/RelationshipTypes.java similarity index 79% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/RelationshipTypes.java rename to src/main/java/com/comsysto/neo4j/showcase/model/RelationshipTypes.java index 36f9ecc..8767e9a 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/RelationshipTypes.java +++ b/src/main/java/com/comsysto/neo4j/showcase/model/RelationshipTypes.java @@ -1,4 +1,4 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.model; /** * @author: rkowalewski diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/User.java b/src/main/java/com/comsysto/neo4j/showcase/model/User.java similarity index 98% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/User.java rename to src/main/java/com/comsysto/neo4j/showcase/model/User.java index 3a42302..0d8e4cc 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/User.java +++ b/src/main/java/com/comsysto/neo4j/showcase/model/User.java @@ -1,4 +1,4 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.model; import org.springframework.data.neo4j.annotation.Indexed; import org.springframework.data.neo4j.annotation.NodeEntity; diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/ProductRepository.java b/src/main/java/com/comsysto/neo4j/showcase/repository/ProductRepository.java similarity index 93% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/ProductRepository.java rename to src/main/java/com/comsysto/neo4j/showcase/repository/ProductRepository.java index 7e8b703..26d12d7 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/ProductRepository.java +++ b/src/main/java/com/comsysto/neo4j/showcase/repository/ProductRepository.java @@ -1,5 +1,6 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.repository; +import com.comsysto.neo4j.showcase.model.Product; import org.springframework.data.neo4j.annotation.Query; import org.springframework.data.neo4j.repository.GraphRepository; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/comsysto/springDataNeo4j/showcase/UserRepository.java b/src/main/java/com/comsysto/neo4j/showcase/repository/UserRepository.java similarity index 70% rename from src/main/java/com/comsysto/springDataNeo4j/showcase/UserRepository.java rename to src/main/java/com/comsysto/neo4j/showcase/repository/UserRepository.java index c3150e7..20f9c6c 100644 --- a/src/main/java/com/comsysto/springDataNeo4j/showcase/UserRepository.java +++ b/src/main/java/com/comsysto/neo4j/showcase/repository/UserRepository.java @@ -1,5 +1,6 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase.repository; +import com.comsysto.neo4j.showcase.model.User; import org.springframework.data.neo4j.repository.GraphRepository; diff --git a/src/main/resources/com/comsysto/neo4j/showcase/main/related-to-via-test-context.xml b/src/main/resources/com/comsysto/neo4j/showcase/main/related-to-via-test-context.xml new file mode 100644 index 0000000..7ac8be1 --- /dev/null +++ b/src/main/resources/com/comsysto/neo4j/showcase/main/related-to-via-test-context.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/com/comsysto/springDataNeo4j/showcase/SpringDataNeo4jProductUserTest.java b/src/test/java/com/comsysto/neo4j/showcase/SpringDataNeo4jProductUserTest.java similarity index 90% rename from src/test/java/com/comsysto/springDataNeo4j/showcase/SpringDataNeo4jProductUserTest.java rename to src/test/java/com/comsysto/neo4j/showcase/SpringDataNeo4jProductUserTest.java index c27fd8a..78d2ec2 100644 --- a/src/test/java/com/comsysto/springDataNeo4j/showcase/SpringDataNeo4jProductUserTest.java +++ b/src/test/java/com/comsysto/neo4j/showcase/SpringDataNeo4jProductUserTest.java @@ -1,5 +1,9 @@ -package com.comsysto.springDataNeo4j.showcase; +package com.comsysto.neo4j.showcase; +import com.comsysto.neo4j.showcase.model.Product; +import com.comsysto.neo4j.showcase.model.User; +import com.comsysto.neo4j.showcase.repository.ProductRepository; +import com.comsysto.neo4j.showcase.repository.UserRepository; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -7,6 +11,7 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.support.node.Neo4jHelper; +import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; @@ -14,12 +19,12 @@ import java.util.List; import java.util.Set; -import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = {"classpath:com/comsysto/springDataNeo4j/showcase/related-to-via-test-context.xml"}) +@ContextConfiguration(locations = {"classpath:com/comsysto/neo4j/showcase/related-to-via-test-context.xml"}) @Transactional public class SpringDataNeo4jProductUserTest { @@ -29,8 +34,8 @@ public class SpringDataNeo4jProductUserTest { @Autowired private UserRepository userRepository; -// @Autowired -// GraphDatabaseService graphDatabaseService; + @Autowired + GraphDatabaseService graphDatabaseService; User jordan, pippen, miller; Product pizzaMargarita, pizzaFungi, pizzaSalami, pizzaVegitarian, pizzaRustica; @@ -138,8 +143,8 @@ private void userClickedProduct(User user, Product product) { productRepository.save(product); } -// @After + @After public void cleanDB() { -// Neo4jHelper.cleanDb(graphDatabaseService); + Neo4jHelper.cleanDb(graphDatabaseService); } } diff --git a/src/test/resources/com/comsysto/springDataNeo4j/showcase/related-to-via-test-context.xml b/src/test/resources/com/comsysto/neo4j/showcase/related-to-via-test-context.xml similarity index 72% rename from src/test/resources/com/comsysto/springDataNeo4j/showcase/related-to-via-test-context.xml rename to src/test/resources/com/comsysto/neo4j/showcase/related-to-via-test-context.xml index 44f1cce..b179bd4 100644 --- a/src/test/resources/com/comsysto/springDataNeo4j/showcase/related-to-via-test-context.xml +++ b/src/test/resources/com/comsysto/neo4j/showcase/related-to-via-test-context.xml @@ -11,10 +11,10 @@ - + - + - + \ No newline at end of file