/* * To change this template, choose Tools | Templates and open the template in * the editor. */ package com.wordpress.salaboy.procedures.tracking; import com.wordpress.salaboy.context.tracking.ContextTrackingProvider; import com.wordpress.salaboy.context.tracking.ContextTrackingService; import com.wordpress.salaboy.grid.*; import com.wordpress.salaboy.model.*; import com.wordpress.salaboy.model.persistence.PersistenceService; import com.wordpress.salaboy.model.persistence.PersistenceServiceProvider; import java.io.File; import java.io.IOException; import org.hornetq.api.core.HornetQException; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; import org.neo4j.cypher.ExecutionEngine; import org.neo4j.cypher.ExecutionResult; import org.neo4j.cypher.commands.Query; import org.neo4j.cypher.javacompat.CypherParser; import org.neo4j.graphdb.Node; import scala.collection.Iterator; /** * * @author salaboy */ public class GenericEmergencyProcedureWithTrackingTest extends GridBaseTest { private PersistenceService persistenceService; private ContextTrackingService trackingService; public GenericEmergencyProcedureWithTrackingTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() throws Exception { deleteRecursively(new File(ContextTrackingProvider.defaultDB)); deleteRecursively(new File("/data")); persistenceService = PersistenceServiceProvider.getPersistenceService(); trackingService = ContextTrackingProvider.getTrackingService(); } @After public void tearDown() throws Exception { PersistenceServiceProvider.clear(); ContextTrackingProvider.clear(); } @Test public void generic1Test() throws HornetQException, InterruptedException, IOException, ClassNotFoundException { System.out.println("Running Tests! "); Emergency e = new Emergency(); Call call = new Call(); persistenceService.storeCall(call); persistenceService.storeEmergency(e); assertEquals(1, persistenceService.getAllEmergencies().size()); trackingService.attachEmergency(call.getId(), e.getId()); assertEquals(0, persistenceService.getAllVehicles().size()); assertEquals(0, persistenceService.getAllProcedures().size()); Procedure procedure = new Procedure("MyProcedure"); persistenceService.storeProcedure(procedure); assertEquals(1, persistenceService.getAllProcedures().size()); procedure.setProcessInstanceId(12L); persistenceService.storeProcedure(procedure); assertEquals(1, persistenceService.getAllProcedures().size()); trackingService.attachProcedure(e.getId(), procedure.getId()); CypherParser parser = new CypherParser(); ExecutionEngine engine = new ExecutionEngine(trackingService.getGraphDb()); Query query = parser.parse("start n=(emergencies, 'emergencyId:*') return n"); ExecutionResult result = engine.execute(query); Iterator<Node> n_column = result.columnAs("n"); System.out.println("results: " + result); while (n_column.hasNext()) { Node currentNode = n_column.next(); for (String key : currentNode.getPropertyKeys()) { System.out.println("Property (" + key + "): " + currentNode.getProperty(key)); } } assertEquals(1, result.size()); query = parser.parse("start n=(procedures, 'procedureId:*') return n"); result = engine.execute(query); n_column = result.columnAs("n"); System.out.println("results: " + result); while (n_column.hasNext()) { Node currentNode = n_column.next(); for (String key : currentNode.getPropertyKeys()) { System.out.println("Property (" + key + "): " + currentNode.getProperty(key)); } } assertEquals(1, result.size()); } @Test public void generic2Test() throws HornetQException, InterruptedException, IOException, ClassNotFoundException { System.out.println("Running Tests! "); Emergency e = new Emergency(); Call call = new Call(); persistenceService.storeCall(call); persistenceService.storeEmergency(e); assertEquals(1, persistenceService.getAllEmergencies().size()); trackingService.attachEmergency(call.getId(), e.getId()); assertEquals(0, persistenceService.getAllVehicles().size()); assertEquals(0, persistenceService.getAllProcedures().size()); Procedure procedure = new Procedure("MyProcedure"); persistenceService.storeProcedure(procedure); assertEquals(1, persistenceService.getAllProcedures().size()); procedure.setProcessInstanceId(12L); persistenceService.storeProcedure(procedure); assertEquals(1, persistenceService.getAllProcedures().size()); trackingService.attachProcedure(e.getId(), procedure.getId()); CypherParser parser = new CypherParser(); ExecutionEngine engine = new ExecutionEngine(trackingService.getGraphDb()); Query query = parser.parse("start n=(emergencies, 'emergencyId:*') return n"); ExecutionResult result = engine.execute(query); Iterator<Node> n_column = result.columnAs("n"); System.out.println("results: " + result); while (n_column.hasNext()) { Node currentNode = n_column.next(); for (String key : currentNode.getPropertyKeys()) { System.out.println("Property (" + key + "): " + currentNode.getProperty(key)); } } assertEquals(1, result.size()); query = parser.parse("start n=(procedures, 'procedureId:*') return n"); result = engine.execute(query); n_column = result.columnAs("n"); System.out.println("results: " + result); while (n_column.hasNext()) { Node currentNode = n_column.next(); for (String key : currentNode.getPropertyKeys()) { System.out.println("Property (" + key + "): " + currentNode.getProperty(key)); } } assertEquals(1, result.size()); } private static void deleteRecursively(File file) { if (!file.exists()) { return; } if (file.isDirectory()) { for (File child : file.listFiles()) { deleteRecursively(child); } } if (!file.delete()) { throw new RuntimeException( "Couldn't empty database. Offending file:" + file); } } }