@@ -13,9 +13,9 @@ import org.drools.runtime.process.WorkflowProcessInstance;
import java.util.Map;
import com.wordpress.salaboy.messaging.*;
import com.wordpress.salaboy.model.messages.*;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;


import com.wordpress.salaboy.model.serviceclient.*;
import com.wordpress.salaboy.context.tracking.*;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider.*;


query "getPatient"
@@ -39,13 +39,15 @@ rule "Rank Hospital Speciality that matches EmergencyType"
when
$processInstance: WorkflowProcessInstance()
$emergency: Emergency($type: type.name)
$selectedHospital: Hospital() from accumulate ($hospital: Hospital() from DistributedPeristenceServerService.getInstance().getAllHospitals(),
$selectedHospital: Hospital() from accumulate ($hospital: Hospital()
from PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, null).getAllHospitals(),
hospitalDistanceCalculator(new HospitalDistanceCalculationData($hospital, $emergency))

)


then

String callId = ((Call)$processInstance.getVariable("call")).getId();
//Send Hospital Selected Message
MessageFactory.sendMessage(new HospitalSelectedMessage(callId, $selectedHospital));
@@ -14,16 +14,17 @@ import org.drools.runtime.process.WorkflowProcessInstance;
import java.util.Map;
import com.wordpress.salaboy.messaging.*;
import com.wordpress.salaboy.model.messages.*;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;

import com.wordpress.salaboy.context.tracking.*;
import com.wordpress.salaboy.model.serviceclient.*;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider.*;

rule "Calculate Water Refill Location"
ruleflow-group "closest-water-selection"
when
$processInstance: WorkflowProcessInstance()
$emergency: Emergency($type: type.name)
$event: FireTruckOutOfWaterEvent()
$selectedLocation: FirefightersDepartment() from accumulate ($fd: FirefightersDepartment() from DistributedPeristenceServerService.getInstance().getAllFirefighterDepartments(),
$selectedLocation: FirefightersDepartment() from accumulate ($fd: FirefightersDepartment() from PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, null).getAllFirefighterDepartments(),
firefighterDeparmtmentDistanceCalculator(new FirefightersDepartmentDistanceCalculationData($fd, $emergency))
)
then

Large diffs are not rendered by default.

@@ -4,6 +4,8 @@
*/
package com.wordpress.salaboy.procedures;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -28,6 +30,9 @@
import com.wordpress.salaboy.model.Call;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.Location;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import com.wordpress.salaboy.services.HumanTaskServerService;
import com.wordpress.salaboy.services.ProceduresMGMTService;
import java.io.ByteArrayInputStream;
@@ -56,6 +61,8 @@ public class AdHocProcedureTest extends GridBaseTest {
private TaskClient client;
private Emergency emergency = null;
private Call call = null;
private PersistenceService persistenceService;
private ContextTrackingService trackingService;
public AdHocProcedureTest() {
}

@@ -89,7 +96,13 @@ public void setUp() throws Exception {


client = HumanTaskServerService.getInstance().initTaskClient();


Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType)conf.getParameters().get("ContextTrackingImplementation"));
}

@After
@@ -107,19 +120,19 @@ public void tearDown() throws Exception {

@Test
public void defaultAdHocSimpleTest() throws InterruptedException, ClassNotFoundException, IOException {
String emergencyId = ContextTrackingServiceImpl.getInstance().newEmergencyId();
String emergencyId = trackingService.newEmergencyId();
emergency = new Emergency();
emergency.setId(emergencyId);
call = new Call(1, 2, new Date());

String callId = ContextTrackingServiceImpl.getInstance().newCallId();
String callId = trackingService.newCallId();
call.setId(callId);
emergency.setCall(call);
emergency.setLocation(new Location(1, 2));
emergency.setType(Emergency.EmergencyType.HEART_ATTACK);
emergency.setNroOfPeople(1);

ContextTrackingServiceImpl.getInstance().attachEmergency(callId, emergencyId);
trackingService.attachEmergency(callId, emergencyId);

Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("call", call);
@@ -140,11 +153,11 @@ public void defaultAdHocSimpleTest() throws InterruptedException, ClassNotFoundE

@Test
public void defaultAdHocPlusTrackingTest() throws InterruptedException, ClassNotFoundException, IOException {
String emergencyId = ContextTrackingServiceImpl.getInstance().newEmergencyId();
String emergencyId = trackingService.newEmergencyId();
emergency = new Emergency();
emergency.setId(emergencyId);
call = new Call(1, 2, new Date());
String callId = ContextTrackingServiceImpl.getInstance().newCallId();
String callId = trackingService.newCallId();
call.setId(callId);
emergency.setCall(call);
emergency.setLocation(new Location(1, 2));
@@ -156,7 +169,7 @@ public void defaultAdHocPlusTrackingTest() throws InterruptedException, ClassNot
parameters.put("emergency", emergency);
parameters.put("procedureName", "DumbProcedure");

ContextTrackingServiceImpl.getInstance().attachEmergency(callId, emergencyId);
trackingService.attachEmergency(callId, emergencyId);
ProceduresMGMTService.getInstance().newRequestedProcedure(emergency.getId(), "AdHocProcedure", parameters);

Thread.sleep(5000);
@@ -195,8 +208,8 @@ private void doOperatorTask() throws ClassNotFoundException, IOException {

//I shoudl call the tracking component here and register the new emerency
Emergency emergency = new Emergency();
String emergencyId = ContextTrackingServiceImpl.getInstance().newEmergencyId();
emergency.setId(emergencyId);
// String emergencyId = ContextTrackingServiceImpl.getInstance().newEmergencyId();
// emergency.setId(emergencyId);
emergency.setCall(retrivedCall);
emergency.setLocation(new Location(1, 2));
emergency.setType(Emergency.EmergencyType.HEART_ATTACK);

Large diffs are not rendered by default.

@@ -1,6 +1,6 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.wordpress.salaboy.procedures;

@@ -20,6 +20,8 @@
import com.wordpress.salaboy.api.HumanTaskService;
import com.wordpress.salaboy.api.HumanTaskServiceFactory;
import com.wordpress.salaboy.conf.HumanTaskServiceConfiguration;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import com.wordpress.salaboy.grid.GridBaseTest;
import com.wordpress.salaboy.messaging.MessageConsumerWorker;
@@ -35,21 +37,28 @@
import com.wordpress.salaboy.model.messages.FireTruckOutOfWaterMessage;
import com.wordpress.salaboy.model.messages.ProcedureCompletedMessage;
import com.wordpress.salaboy.model.messages.VehicleHitsEmergencyMessage;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.model.serviceclient.DistributedMapPeristenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import com.wordpress.salaboy.services.HumanTaskServerService;
import com.wordpress.salaboy.services.ProceduresMGMTService;
import com.wordpress.salaboy.smarttasks.jbpm5wrapper.conf.JBPM5HornetQHumanTaskClientConfiguration;
import java.io.IOException;
import java.util.ArrayList;
import org.junit.Ignore;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.junit.Test;

/**
*
*
* @author esteban
*/
public class DefaultFireProcedureTest extends GridBaseTest {

private HumanTaskService humanTaskServiceClient;
private PersistenceService persistenceService;
private ContextTrackingService trackingService;

public DefaultFireProcedureTest() {
}
@@ -73,30 +82,35 @@ public static void tearDownClass() throws Exception {

@Before
public void setUp() throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

String emergencyId = ContextTrackingServiceImpl.getInstance().newEmergencyId();
trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
String emergencyId = trackingService.newEmergencyId();
emergency = new Emergency();
emergency.setId(emergencyId);

String fireTruckId = ContextTrackingServiceImpl.getInstance().newVehicleId();
String fireTruckId = trackingService.newVehicleId();
fireTruck = new FireTruck("FireTruck 1");
fireTruck.setId(fireTruckId);

call = new Call(1, 2, new Date());

String callId = ContextTrackingServiceImpl.getInstance().newCallId();
call.setId(callId);
// String callId = ContextTrackingServiceImpl.getInstance().newCallId();
// call.setId(callId);
emergency.setCall(call);
emergency.setLocation(new Location(1, 2));
emergency.setType(Emergency.EmergencyType.FIRE);
emergency.setNroOfPeople(1);

firefightersDepartment = new FirefightersDepartment("Firefighter Department 1", 12, 1);

DistributedPeristenceServerService.getInstance().storeFirefightersDepartment(firefightersDepartment);
DistributedPeristenceServerService.getInstance().storeEmergency(
persistenceService.storeFirefightersDepartment(firefightersDepartment);
persistenceService.storeEmergency(
emergency);
DistributedPeristenceServerService.getInstance().storeVehicle(fireTruck);
persistenceService.storeVehicle(fireTruck);
MessageServerSingleton.getInstance().start();

this.coreServicesMap = new HashMap();
@@ -182,7 +196,7 @@ public void defaultFireSimpleTest() throws Exception {
Thread.sleep(5000);

//The emergency has ended
Assert.assertEquals(1,proceduresEndedCount);
Assert.assertEquals(1, proceduresEndedCount);

}

@@ -291,7 +305,7 @@ public void fireTruckOutOfWaterx2Test() throws Exception {
Assert.assertTrue(firefighterTasks.isEmpty());

//The process didn't finish yet
Assert.assertEquals(0,proceduresEndedCount);
Assert.assertEquals(0, proceduresEndedCount);

// Ok, no more fire!
ProceduresMGMTService.getInstance().notifyProcedures(
@@ -300,7 +314,7 @@ public void fireTruckOutOfWaterx2Test() throws Exception {
Thread.sleep(5000);

//The emergency has ended
Assert.assertEquals(1,proceduresEndedCount);
Assert.assertEquals(1, proceduresEndedCount);

}

@@ -309,9 +323,12 @@ private void startProcess(Call call, Emergency emergency, Vehicle fireTruck) thr
parameters.put("call", call);
parameters.put("emergency", emergency);
parameters.put("vehicle", fireTruck);

ProceduresMGMTService.getInstance().newRequestedProcedure(emergency.getId(),
"DefaultFireProcedure", parameters);
try {
ProceduresMGMTService.getInstance().newRequestedProcedure(emergency.getId(),
"DefaultFireProcedure", parameters);
} catch (IOException ex) {
Logger.getLogger(DefaultFireProcedureTest.class.getName()).log(Level.SEVERE, null, ex);
}
Thread.sleep(2000);
}

@@ -1,15 +1,14 @@

package com.wordpress.salaboy.procedures;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.drools.grid.SocketService;
import org.junit.AfterClass;
import org.junit.BeforeClass;

import com.wordpress.salaboy.grid.GridBaseTest;
import com.wordpress.salaboy.messaging.MessageConsumerWorker;
@@ -23,14 +22,14 @@
import com.wordpress.salaboy.model.messages.ProcedureCompletedMessage;
import com.wordpress.salaboy.model.messages.VehicleHitsEmergencyMessage;
import com.wordpress.salaboy.model.messages.VehicleHitsHospitalMessage;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import com.wordpress.salaboy.services.HumanTaskServerService;
import com.wordpress.salaboy.services.ProceduresMGMTService;
import org.junit.Assert;
import org.junit.Test;



/**
*
* @author salaboy
@@ -41,35 +40,43 @@ public abstract class DefaultHeartAttackProcedureBaseTest extends GridBaseTest {
private Call call = null;
private MessageConsumerWorker procedureEndedWorker;
private int proceduresEndedCount;
protected PersistenceService persistenceService;
protected ContextTrackingService trackingService;

public DefaultHeartAttackProcedureBaseTest() {
}

protected void setUp() throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
HumanTaskServerService.getInstance().initTaskServer();
emergency = new Emergency();
String emergencyId = ContextTrackingServiceImpl.getInstance().newEmergencyId();
String emergencyId = trackingService.newEmergencyId();
emergency.setId(emergencyId);
call = new Call(1, 2, new Date());
String callId = ContextTrackingServiceImpl.getInstance().newCallId();
String callId = trackingService.newCallId();
call.setId(callId);
emergency.setCall(call);
emergency.setLocation(new Location(1, 2));
emergency.setType(Emergency.EmergencyType.HEART_ATTACK);
emergency.setNroOfPeople(1);

ContextTrackingServiceImpl.getInstance().attachEmergency(callId, emergencyId);
trackingService.attachEmergency(callId, emergencyId);

DistributedPeristenceServerService.getInstance().storeHospital(new Hospital("My Hospital", 12, 1));
DistributedPeristenceServerService.getInstance().storeEmergency(emergency);
DistributedPeristenceServerService.getInstance().storeVehicle(new Ambulance("My Ambulance Test"));
persistenceService.storeHospital(new Hospital("My Hospital", 12, 1));
persistenceService.storeEmergency(emergency);
persistenceService.storeVehicle(new Ambulance("My Ambulance Test"));

MessageServerSingleton.getInstance().start();


this.coreServicesMap = new HashMap();
createRemoteNode();

//Procedure Ended Worker
procedureEndedWorker = new MessageConsumerWorker("ProcedureEndedCoreServer", new MessageConsumerWorkerHandler<ProcedureCompletedMessage>() {

@@ -132,7 +139,7 @@ public void defaultHeartAttackSimpleTest() throws Exception {

//The emergency has ended
Assert.assertEquals(1, proceduresEndedCount);

}

protected abstract String doGarageTask(Emergency emergency) throws Exception;
@@ -1,6 +1,7 @@

package com.wordpress.salaboy.procedures;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -17,6 +18,8 @@
import com.wordpress.salaboy.model.Ambulance;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.Vehicle;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import com.wordpress.salaboy.services.HumanTaskServerService;


@@ -62,6 +65,13 @@ public void tearDown() throws Exception {

@Override
protected String doGarageTask(Emergency emergency) throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));

BlockingTaskSummaryResponseHandler handler = new BlockingTaskSummaryResponseHandler();
client.getTasksAssignedAsPotentialOwner("garage_emergency_service", "en-UK", handler);
List<TaskSummary> sums = handler.getResults();
@@ -93,7 +103,7 @@ protected String doGarageTask(Emergency emergency) throws Exception {
Map<String, Object> info = new HashMap<String, Object>();
List<Vehicle> vehicles = new ArrayList<Vehicle>();
Ambulance ambulance = new Ambulance("My Ambulance", new Date());
String ambulanceId = ContextTrackingServiceImpl.getInstance().newVehicleId();
String ambulanceId = trackingService.newVehicleId();
ambulance.setId(ambulanceId);
vehicles.add(ambulance);

@@ -4,31 +4,30 @@
*/
package com.wordpress.salaboy.procedures;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.Assert;

import org.example.ws_ht.api.TAttachment;
import org.example.ws_ht.api.TAttachmentInfo;
import org.example.ws_ht.api.TTask;
import org.example.ws_ht.api.TTaskAbstract;
import org.junit.After;
import org.junit.Before;

import com.wordpress.salaboy.api.HumanTaskService;
import com.wordpress.salaboy.api.HumanTaskServiceFactory;
import com.wordpress.salaboy.conf.HumanTaskServiceConfiguration;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import com.wordpress.salaboy.model.Ambulance;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.Vehicle;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import com.wordpress.salaboy.smarttasks.jbpm5wrapper.conf.JBPM5HornetQHumanTaskClientConfiguration;
import java.util.*;
import junit.framework.Assert;
import org.example.ws_ht.api.TAttachment;
import org.example.ws_ht.api.TAttachmentInfo;
import org.example.ws_ht.api.TTask;
import org.example.ws_ht.api.TTaskAbstract;
import org.junit.After;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;

/**
*
@@ -49,6 +48,12 @@ public void setUp() throws Exception {
taskClientConf.addHumanTaskClientConfiguration("jBPM5-HT-Client", new JBPM5HornetQHumanTaskClientConfiguration("127.0.0.1", 5446));
humanTaskServiceClient = HumanTaskServiceFactory.newHumanTaskService(taskClientConf);
humanTaskServiceClient.initializeService();
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
}

@After
@@ -88,7 +93,7 @@ protected String doGarageTask(Emergency emergency) throws Exception {
Map<String, Object> info = new HashMap<String, Object>();
List<Vehicle> vehicles = new ArrayList<Vehicle>();
Ambulance ambulance = new Ambulance("My Ambulance", new Date());
String ambulanceId = ContextTrackingServiceImpl.getInstance().newVehicleId();
String ambulanceId = trackingService.newVehicleId();
ambulance.setId(ambulanceId);
vehicles.add(ambulance);
//ContextTrackingServiceImpl.getInstance().attachVehicle(, ambulanceId);
@@ -0,0 +1,335 @@
/*
* 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.ContextTrackingProvider.ContextTrackingServiceType;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.grid.*;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import com.wordpress.salaboy.messaging.*;
import com.wordpress.salaboy.model.*;
import com.wordpress.salaboy.model.serviceclient.DistributedMapPeristenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import org.jbpm.task.AccessType;
import org.jbpm.task.service.ContentData;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import org.jbpm.task.Content;
import org.jbpm.task.Task;
import java.util.Map;
import java.util.List;
import org.jbpm.task.query.TaskSummary;
import java.util.HashMap;
import org.hornetq.api.core.HornetQException;
import org.jbpm.process.workitem.wsht.BlockingGetTaskResponseHandler;
import org.jbpm.task.AsyncTaskService;
import org.jbpm.task.service.responsehandlers.BlockingGetContentResponseHandler;
import org.jbpm.task.service.responsehandlers.BlockingTaskOperationResponseHandler;
import org.jbpm.task.service.responsehandlers.BlockingTaskSummaryResponseHandler;
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 MessageConsumer consumer;
private AsyncTaskService client;
private MessageConsumerWorker asynchProcedureStartWorker;
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 {



// HumanTaskServerService.getInstance().initTaskServer();
//
// MessageServerSingleton.getInstance().start();
//
// consumer = MessageFactory.createMessageConsumer("IncomingCall");
//
//
// this.coreServicesMap = new HashMap();
//
//
// createRemoteNode();
//
//
// client = HumanTaskServerService.getInstance().initTaskClient();
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType)conf.getParameters().get("ContextTrackingImplementation"));

for (Vehicle vehicle : CityEntities.vehicles) {
persistenceService.storeVehicle(vehicle);
System.out.println("Initializing Vehicle into the Cache & Graph - >" + vehicle.toString());
}

CypherParser parser = new CypherParser();

ExecutionEngine engine = new ExecutionEngine(ContextTrackingProvider.getTrackingService(ContextTrackingServiceType.IN_MEMORY).getGraphDb());

Query query = parser.parse("start n=(vehicles, 'vehicleId:*') 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(CityEntities.vehicles.size(), result.size());


// for (Hospital hospital : CityEntities.hospitals) {
// System.out.println("Initializing Hospital into the Cache - >" + hospital.toString());
// DistributedPeristenceServerService.getInstance().storeHospital(hospital);
// }




}

@After
public void tearDown() throws Exception {

// HumanTaskServerService.getInstance().stopTaskServer();
//
// MessageServerSingleton.getInstance().stop();
// if(remoteN1 != null){
// remoteN1.dispose();
// }
// if(grid1 != null){
// grid1.get(SocketService.class).close();
// }


}




@Test
public void genericEmergencyProcedureTest() throws HornetQException, InterruptedException, IOException, ClassNotFoundException{
System.out.println("Running Tests! ");
// asynchProcedureStartWorker = new MessageConsumerWorker("asyncProcedureStartCoreServer", new MessageConsumerWorkerHandler<AsyncProcedureStartMessage>() {
//
// @Override
// public void handleMessage(AsyncProcedureStartMessage message) {
// System.out.println(">>>>>>>>>>>Creating a new Procedure = "+message.getProcedureName());
// ProceduresMGMTService.getInstance().newRequestedProcedure(message.getEmergencyId(), message.getProcedureName(), message.getParameters());
// }
// });
//
// asynchProcedureStartWorker.start();
//
//
// MessageProducer producer = MessageFactory.createMessageProducer();
// Call initialCall = new Call(1,2,new Date());
// String callId = ContextTrackingServiceImpl.getInstance().newCallId();
// initialCall.setId(callId);
// producer.sendMessage(initialCall);
// producer.stop();
//
// Call call = (Call) consumer.receiveMessage();
// assertNotNull(call);
//
// GenericEmergencyProcedureImpl.getInstance().newPhoneCall(call);
//
// Thread.sleep(1000);
//
// doOperatorTask();
//
// Thread.sleep(1000);
//
// doControlTask();
//
// Thread.sleep(3000);
// //I should have one task here, that has been created by the specific procedure started
// doGarageTask();
//
// Thread.sleep(3000);
// // I can asume that all the procedures are ended, we need to delegate this to the external component
// AllProceduresEndedEvent allProceduresEndedEvent = new AllProceduresEndedEvent(null, new ArrayList<String>());
// GenericEmergencyProcedureImpl.getInstance().allProceduresEnededNotification(allProceduresEndedEvent);
// // We should see the report in the console
// Thread.sleep(10000);
//
}

private void doOperatorTask() throws ClassNotFoundException, IOException {
BlockingTaskSummaryResponseHandler handler = new BlockingTaskSummaryResponseHandler();
client.getTasksAssignedAsPotentialOwner("operator", "en-UK", handler);
List<TaskSummary> sums = handler.getResults();
assertNotNull(sums);
assertEquals(1, sums.size());

BlockingTaskOperationResponseHandler startTaskOperationHandler = new BlockingTaskOperationResponseHandler();
client.start(sums.get(0).getId(), "operator", startTaskOperationHandler);

BlockingGetTaskResponseHandler getTaskHandler = new BlockingGetTaskResponseHandler();
client.getTask(sums.get(0).getId(), getTaskHandler);
Task operatorTask = getTaskHandler.getTask();

BlockingGetContentResponseHandler getContentHandler = new BlockingGetContentResponseHandler();
client.getContent(operatorTask.getTaskData().getDocumentContentId(), getContentHandler);
Content content = getContentHandler.getContent();

assertNotNull(content);

ByteArrayInputStream bais = new ByteArrayInputStream(content.getContent());
ObjectInputStream ois = new ObjectInputStream(bais);
Map<String, Object> deserializedContent = (Map<String, Object>)ois.readObject();
Call restoredCall = (Call) deserializedContent.get("call");


//I shoudl call the tracking component here and register the new emerency
Emergency emergency = new Emergency();
String emergencyId = trackingService.newEmergencyId();
emergency.setId(emergencyId);
emergency.setCall(restoredCall);
trackingService.attachEmergency(restoredCall.getId(), emergencyId);
emergency.setLocation(new Location(1,2));
emergency.setType(Emergency.EmergencyType.HEART_ATTACK);
emergency.setNroOfPeople(1);


Map<String, Object> info = new HashMap<String, Object>();
info.put("emergency", emergency);


ContentData result = new ContentData();
result.setAccessType(AccessType.Inline);
result.setType("java.util.Map");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(info);
out.close();
result.setContent(bos.toByteArray());

BlockingTaskOperationResponseHandler completeTaskOperationHandler = new BlockingTaskOperationResponseHandler();
client.complete(sums.get(0).getId(), "operator", result, completeTaskOperationHandler);



}

private void doControlTask() throws IOException, ClassNotFoundException {
BlockingTaskSummaryResponseHandler handler = new BlockingTaskSummaryResponseHandler();
client.getTasksAssignedAsPotentialOwner("control", "en-UK", handler);
List<TaskSummary> sums = handler.getResults();
assertNotNull(sums);
assertEquals(1, sums.size());

BlockingTaskOperationResponseHandler startTaskOperationHandler = new BlockingTaskOperationResponseHandler();
client.start(sums.get(0).getId(), "control", startTaskOperationHandler);

BlockingGetTaskResponseHandler getTaskHandler = new BlockingGetTaskResponseHandler();
client.getTask(sums.get(0).getId(), getTaskHandler);
Task controlTask = getTaskHandler.getTask();

BlockingGetContentResponseHandler getContentHandler = new BlockingGetContentResponseHandler();
client.getContent(controlTask.getTaskData().getDocumentContentId(), getContentHandler);
Content content = getContentHandler.getContent();

assertNotNull(content);

ByteArrayInputStream bais = new ByteArrayInputStream(content.getContent());
ObjectInputStream ois = new ObjectInputStream(bais);
Map<String, Object> deserializedContent = (Map<String, Object>)ois.readObject();
Emergency retrivedEmergency = (Emergency) deserializedContent.get("emergency");
assertNotNull(retrivedEmergency);
ActivePatients retrivedActivePatients = (ActivePatients) deserializedContent.get("activePatients");
assertNotNull(retrivedActivePatients);
assertEquals(1, retrivedActivePatients.size());
SuggestedProcedures retrivedSuggestedProcedures = (SuggestedProcedures) deserializedContent.get("suggestedProcedures");
assertNotNull(retrivedSuggestedProcedures);
assertEquals("[DefaultHeartAttackProcedure: ]", retrivedSuggestedProcedures.getSuggestedProceduresString());



Map<String,Object> info = new HashMap<String, Object>();
SelectedProcedures selectedProcedures = new SelectedProcedures(
retrivedEmergency.getId());
// List<String> selectedProceduresList = new ArrayList<String>();
// selectedProceduresList.add("DefaultHeartAttackProcedure");
selectedProcedures.addSelectedProcedureName("DefaultHeartAttackProcedure");
info.put("selectedProcedures", selectedProcedures);


ContentData result = new ContentData();
result.setAccessType(AccessType.Inline);
result.setType("java.util.Map");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(info);
out.close();
result.setContent(bos.toByteArray());

BlockingTaskOperationResponseHandler completeTaskOperationHandler = new BlockingTaskOperationResponseHandler();
client.complete(sums.get(0).getId(), "control", result, completeTaskOperationHandler);



}

private void doGarageTask() {
BlockingTaskSummaryResponseHandler handler = new BlockingTaskSummaryResponseHandler();
client.getTasksAssignedAsPotentialOwner("garage_emergency_service", "en-UK", handler);
List<TaskSummary> sums = handler.getResults();
assertNotNull(sums);
assertEquals(1, sums.size());

BlockingTaskOperationResponseHandler startTaskOperationHandler = new BlockingTaskOperationResponseHandler();
client.start(sums.get(0).getId(), "garage_emergency_service", startTaskOperationHandler);


}


}
@@ -1,4 +1,4 @@
<?xml version="1.1" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>

<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<SyntheticProperties>
@@ -70,7 +70,7 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="454" max="32767" attributes="1"/>
<Component id="jScrollPane1" alignment="0" max="32767" attributes="1"/>
<Component id="jPanel3" alignment="1" max="32767" attributes="1"/>
</Group>
</DimensionLayout>
@@ -80,7 +80,7 @@
<Component id="jScrollPane1" min="-2" pref="155" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jPanel3" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="25" max="32767" attributes="0"/>
<EmptySpace pref="27" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -100,8 +100,8 @@
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodePre" type="java.lang.String" value="System.out.println(&quot;&gt;&gt;&gt;&gt; Opening the DASHBOARD&quot;);&#xa;DistributedPeristenceServerService.getInstance();"/>
<AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value="Collection&lt;Emergency&gt; emergencies = (Collection&lt;Emergency&gt;) DistributedPeristenceServerService.getInstance().getAllEmergencies();&#xa;System.out.println(&quot;&gt;&gt;&gt;&gt; Emergencies Count in the DASHBOARD:&quot;+emergencies.size());&#xa; Object[][] emergenciesArray = new Object[emergencies.size()][4];&#xa;Iterator&lt;Emergency&gt; it = emergencies.iterator();&#xa; int i = 0;&#xa; while(it.hasNext()){&#xa; Emergency emergency = it.next();&#xa; emergenciesArray[i][0] = emergency.getId();&#xa; emergenciesArray[i][1] = emergency.getCall().getId();&#xa; emergenciesArray[i][2] = emergency.getType().toString();&#xa; emergenciesArray[i][3] = emergency.getNroOfPeople();&#xa; i++;&#xa; }"/>
<AuxValue name="JavaCodeGenerator_CreateCodePre" type="java.lang.String" value="System.out.println(&quot;&gt;&gt;&gt;&gt; Opening the DASHBOARD&quot;);&#xa;"/>
<AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value="Collection&lt;Emergency&gt; emergencies = (Collection&lt;Emergency&gt;) persistenceService.getAllEmergencies();&#xa;System.out.println(&quot;&gt;&gt;&gt;&gt; Emergencies Count in the DASHBOARD:&quot;+emergencies.size());&#xa; Object[][] emergenciesArray = new Object[emergencies.size()][4];&#xa;Iterator&lt;Emergency&gt; it = emergencies.iterator();&#xa; int i = 0;&#xa; while(it.hasNext()){&#xa; Emergency emergency = it.next();&#xa; emergenciesArray[i][0] = emergency.getId();&#xa; emergenciesArray[i][1] = emergency.getCall().getId();&#xa; emergenciesArray[i][2] = emergency.getType().toString();&#xa; emergenciesArray[i][3] = emergency.getNroOfPeople();&#xa; i++;&#xa; }"/>
</AuxValues>
</Component>
</SubComponents>
@@ -122,7 +122,7 @@
<Component id="refreshjButton" min="-2" pref="108" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="liveReportjButton" min="-2" pref="225" max="-2" attributes="0"/>
<EmptySpace pref="109" max="32767" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -201,8 +201,8 @@
<Group type="102" alignment="0" attributes="0">
<Component id="jScrollPane2" min="-2" pref="141" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jPanel6" min="-2" pref="66" max="-2" attributes="0"/>
<EmptySpace pref="30" max="32767" attributes="0"/>
<Component id="jPanel6" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="32" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -225,7 +225,7 @@
<Component id="jButton1" min="-2" pref="109" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jButton2" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="155" max="32767" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -236,7 +236,7 @@
<Component id="jButton2" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
<EmptySpace pref="9" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -10,25 +10,34 @@
*/
package com.wordpress.salaboy.emergencyservice.dashboard;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.Hospital;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import org.hornetq.api.core.HornetQException;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author salaboy
*/
public class EmergenciesDashboard extends javax.swing.JFrame {
private final PersistenceService persistenceService;
private final ContextTrackingService trackingService;

/** Creates new form EmergenciesDashboard */
public EmergenciesDashboard() {
public EmergenciesDashboard() throws IOException {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
initComponents();
}

@@ -46,7 +55,6 @@ private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
System.out.println(">>>> Opening the DASHBOARD");
DistributedPeristenceServerService.getInstance();
emergenciesjTable = new javax.swing.JTable();
jPanel3 = new javax.swing.JPanel();
refreshjButton = new javax.swing.JButton();
@@ -61,7 +69,7 @@ private void initComponents() {

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Emergencies", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));

Collection<Emergency> emergencies = (Collection<Emergency>) DistributedPeristenceServerService.getInstance().getAllEmergencies();
Collection<Emergency> emergencies = (Collection<Emergency>) persistenceService.getAllEmergencies();
System.out.println(">>>> Emergencies Count in the DASHBOARD:"+emergencies.size());
Object[][] emergenciesArray = new Object[emergencies.size()][4];
Iterator<Emergency> it = emergencies.iterator();
@@ -106,7 +114,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.add(refreshjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 108, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(liveReportjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 225, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(109, Short.MAX_VALUE))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
@@ -119,7 +127,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 454, Short.MAX_VALUE)
.add(jScrollPane1)
.add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
@@ -128,7 +136,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 155, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jPanel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(25, Short.MAX_VALUE))
.addContainerGap(27, Short.MAX_VALUE))
);

org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
@@ -166,15 +174,15 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 109, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(jButton2)
.addContainerGap(155, Short.MAX_VALUE))
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel6Layout.createSequentialGroup()
.add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jButton2)
.add(jButton1))
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(9, Short.MAX_VALUE))
);

hospitalsjTable.setModel(new javax.swing.table.DefaultTableModel(
@@ -202,8 +210,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.add(jPanel5Layout.createSequentialGroup()
.add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 141, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jPanel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 66, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(30, Short.MAX_VALUE))
.add(jPanel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(32, Short.MAX_VALUE))
);

org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4);
@@ -229,7 +237,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(jTabbedPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 319, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);

pack();
@@ -250,7 +258,7 @@ private void liveReportjButtonActionPerformed(java.awt.event.ActionEvent evt) {/

private void refreshjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshjButtonActionPerformed
// TODO add your handling code here:
Collection<Emergency> emergencies = (Collection<Emergency>) DistributedPeristenceServerService.getInstance().getAllEmergencies();
Collection<Emergency> emergencies = (Collection<Emergency>) persistenceService.getAllEmergencies();
Object[][] emergenciesArray = new Object[emergencies.size()][4];
Iterator<Emergency> it = emergencies.iterator();
int i = 0;
@@ -272,9 +280,9 @@ private void refreshjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GE

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
Object [][] vehicles = new Object[DistributedPeristenceServerService.getInstance().getAllHospitals().size()][2];
Object [][] vehicles = new Object[persistenceService.getAllHospitals().size()][2];
int i = 0;
for(Hospital hospital : DistributedPeristenceServerService.getInstance().getAllHospitals()){
for(Hospital hospital : persistenceService.getAllHospitals()){
vehicles[i][0] = hospital.getId();
vehicles[i][1] = hospital.getName();
i++;
@@ -293,8 +301,11 @@ public static void main(String args[]) {

@Override
public void run() {

new EmergenciesDashboard().setVisible(true);
try {
new EmergenciesDashboard().setVisible(true);
} catch (IOException ex) {
Logger.getLogger(EmergenciesDashboard.class.getName()).log(Level.SEVERE, null, ex);
}

}
});
@@ -322,7 +333,11 @@ private void openLiveReportPanel(final List<String> selectedEmergencies) {
//
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LiveEmergencyReport(selectedEmergencies.get(0)).setVisible(true);
try {
new LiveEmergencyReport(selectedEmergencies.get(0)).setVisible(true);
} catch (IOException ex) {
Logger.getLogger(EmergenciesDashboard.class.getName()).log(Level.SEVERE, null, ex);
}

}
});
@@ -10,9 +10,19 @@
*/
package com.wordpress.salaboy.emergencyservice.dashboard;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.emergencyservice.monitor.EmergencyMonitorPanel;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;

import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
@@ -22,11 +32,19 @@ public class LiveEmergencyReport extends javax.swing.JFrame {
private String emergencyId;
private Emergency emergency;
private EmergencyMonitorPanel monitor;
private final PersistenceService persistenceService;
private final ContextTrackingService trackingService;
/** Creates new form LiveEmergencyReport */
public LiveEmergencyReport(String emergencyId) {
public LiveEmergencyReport(String emergencyId) throws IOException {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
this.emergencyId = emergencyId;

this.emergency = DistributedPeristenceServerService.getInstance().loadEmergency(emergencyId);
this.emergency = persistenceService.loadEmergency(emergencyId);

initComponents();
configure();
@@ -91,7 +109,11 @@ private void initComponents() {
// End of variables declaration//GEN-END:variables

private void configure() {
monitor = new EmergencyMonitorPanel(emergency.getCall().getId());
try {
monitor = new EmergencyMonitorPanel(emergency.getCall().getId());
} catch (IOException ex) {
Logger.getLogger(LiveEmergencyReport.class.getName()).log(Level.SEVERE, null, ex);
}

jTabbedMonitorPane.add(monitor);

@@ -211,7 +211,7 @@
<Property name="rows" type="int" value="5"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="auditLogjTextArea.setText(DistributedPeristenceServerService.getInstance().loadReport(this.callId).getReportString());"/>
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="auditLogjTextArea.setText(persistenceService.loadReport(this.callId).getReportString());"/>
</AuxValues>
</Component>
</SubComponents>
@@ -10,6 +10,8 @@
*/
package com.wordpress.salaboy.emergencyservice.monitor;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.messaging.MessageConsumerWorker;
import com.wordpress.salaboy.messaging.MessageConsumerWorkerHandler;
import com.wordpress.salaboy.messaging.MessageFactory;
@@ -19,10 +21,14 @@
import com.wordpress.salaboy.model.messages.VehicleHitsHospitalMessage;
import com.wordpress.salaboy.model.messages.patient.PatientMonitorAlertMessage;
import com.wordpress.salaboy.emergencyservice.util.AlertsIconListRenderer;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -52,11 +58,19 @@ public class EmergencyMonitorPanel extends javax.swing.JPanel {
private List<String> alerts = new ArrayList<String>();
private Map<String, Boolean> vehicleHitEmergency = new HashMap<String, Boolean>();
private Map<String, Boolean> vehicleHitHospital = new HashMap<String, Boolean>();
private final PersistenceService persistenceService;
private final ContextTrackingService trackingService;

/** Creates new form EmergencyMonitorPanel */
public EmergencyMonitorPanel(String callId) {
public EmergencyMonitorPanel(String callId) throws IOException {
this.callId = callId;

Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
initComponents();

loadMapImage();
@@ -160,7 +174,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
auditLogjTextArea.setColumns(20);
auditLogjTextArea.setRows(5);
jScrollPane1.setViewportView(auditLogjTextArea);
auditLogjTextArea.setText(DistributedPeristenceServerService.getInstance().loadReport(this.callId).getReportString());
auditLogjTextArea.setText(persistenceService.loadReport(this.callId).getReportString());

jButton1.setText("Refresh");
jButton1.addActionListener(new java.awt.event.ActionListener() {
@@ -217,7 +231,7 @@ private void btnClear1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed

auditLogjTextArea.setText(DistributedPeristenceServerService.getInstance().loadReport(this.callId).getReportString());
auditLogjTextArea.setText(persistenceService.loadReport(this.callId).getReportString());

}//GEN-LAST:event_jButton1ActionPerformed

@@ -0,0 +1,42 @@
/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.wordpress.salaboy.context.tracking;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.neo4j.kernel.EmbeddedGraphDatabase;
import org.neo4j.test.ImpermanentGraphDatabase;

/**
*
* @author salaboy
*/
public class ContextTrackingProvider {
private static Map<ContextTrackingServiceType, ContextTrackingService> instances = new HashMap<ContextTrackingServiceType, ContextTrackingService>();
public enum ContextTrackingServiceType {EMBEDDED, IN_MEMORY, REST};
public static String defaultDB = "db/graph";

public static ContextTrackingService getTrackingService(ContextTrackingServiceType type) throws IOException{
if(instances.get(type) == null){
switch(type){
case IN_MEMORY:
instances.put(type, new ContextTrackingServiceImpl(new ImpermanentGraphDatabase()));
break;
case EMBEDDED:
instances.put(type, new ContextTrackingServiceImpl(new EmbeddedGraphDatabase(defaultDB)) );
break;
case REST:
throw new UnsupportedOperationException("Not Implemented YET!");


}

}
return instances.get(type);
}


}
@@ -32,14 +32,14 @@ public class ContextTrackingServiceImpl implements ContextTrackingService {
private Index<Node> channelsIndex;
private Index<Node> buildingsIndex;
public static String defaultDB = "db/graph";
private static ContextTrackingServiceImpl instance;

public static ContextTrackingService getInstance() {
if (instance == null) {
instance = new ContextTrackingServiceImpl(new EmbeddedGraphDatabase(defaultDB));
}
return instance;
}
//private static ContextTrackingServiceImpl instance;

// public static ContextTrackingService getInstance() {
// if (instance == null) {
// instance = new ContextTrackingServiceImpl(new EmbeddedGraphDatabase(defaultDB));
// }
// return instance;
// }

public GraphDatabaseService getGraphDb() {
return graphDb;
@@ -4,8 +4,6 @@
*/
package com.wordpress.salaboy.messaging;

import com.wordpress.salaboy.model.messages.EmergencyInterchangeMessage;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import java.lang.reflect.ParameterizedType;

/**
@@ -22,6 +22,9 @@ public class CityEntities {
add(initializeHeartAttackAmbulance());
add(initializeFireAmbulance());
add(initializeCarCrashAmbulance());
add(initializeBigFireTruck());
add(initializeMediumFireTruck());
add(initializeSmallFireTruck());
}};


@@ -189,6 +192,29 @@ private static Ambulance initializeCarCrashAmbulance() {
return carCrashAmbulance;
}

private static FireTruck initializeBigFireTruck() {

FireTruck bigFireTruck = new FireTruck("Big Fire Truck");
bigFireTruck.setTankSize(10);
bigFireTruck.setTankLevel(10);
return bigFireTruck;
}

private static FireTruck initializeMediumFireTruck() {

FireTruck mediumFireTruck = new FireTruck("Medium Fire Truck");
mediumFireTruck.setTankSize(5);
mediumFireTruck.setTankLevel(5);
return mediumFireTruck;
}
private static FireTruck initializeSmallFireTruck() {

FireTruck smallFireTruck = new FireTruck("Small Fire Truck");
smallFireTruck.setTankSize(2);
smallFireTruck.setTankLevel(2);
return smallFireTruck;
}

public static Ambulance getAmbulanceById(EmergencyType type, String id) {

for (Ambulance ambulancenow : CityEntities.ambulances.get(type)) {
@@ -14,7 +14,9 @@ public class FireTruck implements Vehicle {
private Date emergencyReachedTime;
private float positionX;
private float positionY;

private int tankSize;
private int tankLevel;

public FireTruck() {
}

@@ -28,6 +30,14 @@ public FireTruck(String name) {
this.name = name;
}

public FireTruck(String name, int tankSize, int tankLevel) {
this.name = name;
this.tankSize = tankSize;
this.tankLevel = tankLevel;
}



public void setId(String id) {
this.id = id;
}
@@ -77,8 +87,35 @@ public void setPositionY(float positionY) {
this.positionY = positionY;
}

public int getTankSize() {
return tankSize;
}

public void setTankSize(int tankSize) {
this.tankSize = tankSize;
}

public int getTankLevel() {
return tankLevel;
}

public void setTankLevel(int tankLevel) {
this.tankLevel = tankLevel;
}

public Date getEmergencyReachedTime() {
return emergencyReachedTime;
}

public void setEmergencyReachedTime(Date emergencyReachedTime) {
this.emergencyReachedTime = emergencyReachedTime;
}

@Override
public String toString() {
return "FireTruck{" + "id=" + id + ", name=" + name + '}';
return "FireTruck{" + "id=" + id + ", name=" + name + ", departureTime=" + departureTime + ", emergencyReachedTime=" + emergencyReachedTime + ", positionX=" + positionX + ", positionY=" + positionY + ", tankSize=" + tankSize + ", tankLevel=" + tankLevel + '}';
}



}
@@ -4,7 +4,9 @@
*/
package com.wordpress.salaboy.model.serviceclient;

import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider.ContextTrackingServiceType;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.model.Call;
import com.wordpress.salaboy.model.Procedure;
import com.wordpress.salaboy.model.ServiceChannel;
@@ -13,8 +15,6 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.infinispan.Cache;
import org.infinispan.config.Configuration;
@@ -33,32 +33,38 @@
*
* @author salaboy
*/
public class DistributedPeristenceServerService implements EmergencyEntitiesPersistenceService {
public class DistributedMapPeristenceService implements PersistenceService {

private static DistributedPeristenceServerService instance;
// private static DistributedPeristenceServerService instance;
private DefaultCacheManager cacheManager;
private String nodeName;

public static DistributedPeristenceServerService getInstance() {
if (instance == null) {
try {
instance = new DistributedPeristenceServerService();
} catch (IOException ex) {
Logger.getLogger(DistributedPeristenceServerService.class.getName()).log(Level.SEVERE, null, ex);
}
}
return instance;
}

private DistributedPeristenceServerService() throws IOException {

private ContextTrackingService contextTracking;

// public static DistributedPeristenceServerService getInstance() {
// if (instance == null) {
// try {
// instance = new DistributedPeristenceServerService();
// } catch (IOException ex) {
// Logger.getLogger(DistributedPeristenceServerService.class.getName()).log(Level.SEVERE, null, ex);
// }
// }
// return instance;
// }

public DistributedMapPeristenceService(PersistenceServiceConfiguration conf) throws IOException {


GlobalConfiguration globalConf = GlobalConfiguration.getClusteredDefault();
Configuration cfg = new Configuration();

//cfg.setCacheMode(Configuration.CacheMode.REPL_SYNC);
cfg.setCacheMode(Configuration.CacheMode.DIST_SYNC);
cfg.setNumOwners(3);
cacheManager = new DefaultCacheManager(globalConf, cfg);
//@TODO: BASED on conf get the correspondant one
contextTracking = ContextTrackingProvider.getTrackingService((ContextTrackingServiceType)conf.getParameters().get("ContextTrackingImplementation"));



}

@@ -70,7 +76,7 @@ public EmbeddedCacheManager getCacheManager() {
@Override
public void storeEmergency(Emergency emergency) {
if (emergency.getId() == null || emergency.getId().equals("")) {
emergency.setId(ContextTrackingServiceImpl.getInstance().newEmergencyId());
emergency.setId(contextTracking.newEmergencyId());
}
if (this.getCache().get("emergencies") == null) {
getCache().put("emergencies", new HashMap<Long, Emergency>());
@@ -83,7 +89,7 @@ public void storeEmergency(Emergency emergency) {
@Override
public void storeVehicle(Vehicle vehicle) {
if (vehicle.getId() == null || vehicle.getId().equals("")) {
vehicle.setId(ContextTrackingServiceImpl.getInstance().newVehicleId());
vehicle.setId(contextTracking.newVehicleId());
}
if (this.getCache().get("vehicles") == null) {
getCache().put("vehicles", new HashMap<String, Vehicle>());
@@ -97,7 +103,7 @@ public void storeVehicle(Vehicle vehicle) {
@Override
public void storePatient(Patient patient) {
if (patient.getId() == null || patient.getId().equals("")) {
patient.setId(ContextTrackingServiceImpl.getInstance().newPatientId());
patient.setId(contextTracking.newPatientId());
}
if (this.getCache().get("patients") == null) {
getCache().put("patients", new HashMap<String, Patient>());
@@ -110,7 +116,7 @@ public void storePatient(Patient patient) {
@Override
public void storeHospital(Hospital hospital) {
if (hospital.getId() == null || hospital.getId().equals("")) {
hospital.setId(ContextTrackingServiceImpl.getInstance().newEmergencyEntityBuildingId());
hospital.setId(contextTracking.newEmergencyEntityBuildingId());
}
if (this.getCache().get("hospitals") == null) {
getCache().put("hospitals", new HashMap<String, Hospital>());
@@ -124,7 +130,7 @@ public void storeHospital(Hospital hospital) {
@Override
public void storeCall(Call call) {
if (call.getId() == null || call.getId().equals("")) {
call.setId(ContextTrackingServiceImpl.getInstance().newCallId());
call.setId(contextTracking.newCallId());
}
if (this.getCache().get("calls") == null) {
getCache().put("calls", new HashMap<Long, Emergency>());
@@ -137,7 +143,7 @@ public void storeCall(Call call) {
@Override
public void storeFirefightersDepartment(FirefightersDepartment firefightersDepartment) {
if (firefightersDepartment.getId() == null || firefightersDepartment.getId().equals("")) {
firefightersDepartment.setId(ContextTrackingServiceImpl.getInstance().newEmergencyEntityBuildingId());
firefightersDepartment.setId(contextTracking.newEmergencyEntityBuildingId());
}
if (this.getCache().get("firefightersDepartments") == null) {
getCache().put("firefightersDepartments", new HashMap<String, FirefightersDepartment>());
@@ -151,7 +157,7 @@ public void storeFirefightersDepartment(FirefightersDepartment firefightersDepar
@Override
public void storeProcedure(Procedure procedure) {
if (procedure.getId() == null || procedure.getId().equals("")) {
procedure.setId(ContextTrackingServiceImpl.getInstance().newProcedureId());
procedure.setId(contextTracking.newProcedureId());
}
if (this.getCache().get("procedures") == null) {
getCache().put("procedures", new HashMap<String, Procedure>());
@@ -164,7 +170,7 @@ public void storeProcedure(Procedure procedure) {
@Override
public void storeServiceChannel(ServiceChannel channel) {
if (channel.getId() == null || channel.getId().equals("")) {
channel.setId(ContextTrackingServiceImpl.getInstance().newServiceChannelId());
channel.setId(contextTracking.newServiceChannelId());
}
if (this.getCache().get("channels") == null) {
getCache().put("channels", new HashMap<String, ServiceChannel>());
@@ -4,22 +4,15 @@
*/
package com.wordpress.salaboy.model.serviceclient;

import com.wordpress.salaboy.model.Call;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.FirefightersDepartment;
import com.wordpress.salaboy.model.Hospital;
import com.wordpress.salaboy.model.Patient;
import com.wordpress.salaboy.model.Procedure;
import com.wordpress.salaboy.model.ServiceChannel;
import com.wordpress.salaboy.model.Vehicle;
import com.wordpress.salaboy.model.*;
import com.wordpress.salaboy.reporting.Report;
import java.util.Collection;

/**
*
* @author salaboy
*/
public interface EmergencyEntitiesPersistenceService {
public interface PersistenceService {



@@ -0,0 +1,25 @@
/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.wordpress.salaboy.model.serviceclient;

import java.util.Map;

/**
*
* @author salaboy
*/
public class PersistenceServiceConfiguration {
private Map<String, Object> parameters;

public PersistenceServiceConfiguration(Map<String, Object> parameters) {
this.parameters = parameters;
}

public Map<String, Object> getParameters() {
return parameters;
}


}
@@ -0,0 +1,45 @@
/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.wordpress.salaboy.model.serviceclient;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
*
* @author salaboy
*/
public class PersistenceServiceProvider {

private static Map<PersistenceServiceType, PersistenceService> instances = new HashMap<PersistenceServiceType, PersistenceService>();

public enum PersistenceServiceType {

DISTRIBUTED_MAP, JPA, SERVICE
};

public static PersistenceService getPersistenceService(PersistenceServiceType type, PersistenceServiceConfiguration conf) throws IOException {
if (instances.get(type) == null) {
switch (type) {
case DISTRIBUTED_MAP:
instances.put(type, new DistributedMapPeristenceService(conf));
break;

case JPA:
throw new UnsupportedOperationException("Not Implemented YET!");

case SERVICE:
throw new UnsupportedOperationException("Not Implemented YET!");


}

}
return instances.get(type);
}


}
@@ -4,33 +4,28 @@
*/
package com.wordpress.salaboy;

import com.wordpress.salaboy.model.Ambulance;
import com.wordpress.salaboy.model.Procedure;
import com.wordpress.salaboy.model.ServiceChannel;
import com.wordpress.salaboy.model.Vehicle;
import com.wordpress.salaboy.model.Vehicle.VehicleType;
import org.neo4j.cypher.commands.Query;
import org.neo4j.graphdb.Node;
import scala.collection.Iterator;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider.ContextTrackingServiceType;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.context.tracking.ContextTrackingServiceImpl;
import com.wordpress.salaboy.model.Call;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.FireTruck;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.model.*;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider.PersistenceServiceType;
import java.io.IOException;
import java.util.Date;

import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.*;
import org.junit.*;
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.GraphDatabaseService;
import org.neo4j.test.ImpermanentGraphDatabase;
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.graphdb.Node;
import scala.collection.Iterator;

/**
*
@@ -60,66 +55,70 @@ public void tearDown() {
}

@Test
public void simpleAPIPlusCypherQueryTest() {

public void simpleAPIPlusCypherQueryTest() throws IOException {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
PersistenceService persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceType.DISTRIBUTED_MAP, conf);
Call call = new Call(1, 1, new Date());
DistributedPeristenceServerService.getInstance().storeCall(call);
persistenceService.storeCall(call);

assertNotSame("", call.getId());

call = DistributedPeristenceServerService.getInstance().loadCall(call.getId());
call = persistenceService.loadCall(call.getId());
assertNotNull(call);

Emergency emergency = new Emergency();
DistributedPeristenceServerService.getInstance().storeEmergency(emergency);
persistenceService.storeEmergency(emergency);
assertNotSame("", emergency.getId());

emergency = DistributedPeristenceServerService.getInstance().loadEmergency(emergency.getId());
emergency = persistenceService.loadEmergency(emergency.getId());
assertNotNull(emergency);

ContextTrackingServiceImpl.getInstance().attachEmergency(call.getId(), emergency.getId());
ContextTrackingService trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingServiceType)conf.getParameters().get("ContextTrackingImplementation"));
trackingService.attachEmergency(call.getId(), emergency.getId());

Procedure procedure = new Procedure("MyProcedure");
DistributedPeristenceServerService.getInstance().storeProcedure(procedure);
persistenceService.storeProcedure(procedure);
assertNotSame("", procedure.getId());

procedure = DistributedPeristenceServerService.getInstance().loadProcedure(procedure.getId());
procedure = persistenceService.loadProcedure(procedure.getId());
assertNotNull(procedure);

ContextTrackingServiceImpl.getInstance().attachProcedure(emergency.getId(), procedure.getId());
trackingService.attachProcedure(emergency.getId(), procedure.getId());


Vehicle vehicle = new Ambulance();

DistributedPeristenceServerService.getInstance().storeVehicle(vehicle);
persistenceService.storeVehicle(vehicle);
assertNotSame("", vehicle.getId());

vehicle = DistributedPeristenceServerService.getInstance().loadVehicle(vehicle.getId());
vehicle = persistenceService.loadVehicle(vehicle.getId());
assertNotNull(vehicle);


ContextTrackingServiceImpl.getInstance().attachVehicle(procedure.getId(), vehicle.getId());
trackingService.attachVehicle(procedure.getId(), vehicle.getId());

Vehicle vehicle2 = new FireTruck();
DistributedPeristenceServerService.getInstance().storeVehicle(vehicle2);
persistenceService.storeVehicle(vehicle2);
assertNotSame("", vehicle2.getId());

vehicle2 = DistributedPeristenceServerService.getInstance().loadVehicle(vehicle2.getId());
vehicle2 = persistenceService.loadVehicle(vehicle2.getId());
assertNotNull(vehicle2);

ContextTrackingServiceImpl.getInstance().attachVehicle(procedure.getId(), vehicle2.getId());
trackingService.attachVehicle(procedure.getId(), vehicle2.getId());

ServiceChannel channel = new ServiceChannel("MyChannel");
DistributedPeristenceServerService.getInstance().storeServiceChannel(channel);
persistenceService.storeServiceChannel(channel);
assertNotSame("", channel.getId());

channel = DistributedPeristenceServerService.getInstance().loadServiceChannel(channel.getId());
channel = persistenceService.loadServiceChannel(channel.getId());
assertNotNull(channel);

ContextTrackingServiceImpl.getInstance().attachServiceChannel(emergency.getId(), channel.getId());
trackingService.attachServiceChannel(emergency.getId(), channel.getId());


CypherParser parser = new CypherParser();
ExecutionEngine engine = new ExecutionEngine(ContextTrackingServiceImpl.getInstance().getGraphDb());
ExecutionEngine engine = new ExecutionEngine(trackingService.getGraphDb());


//Give me all the vehicle associated with the procedures that are part of the emergency that was created by this phoneCallId
@@ -21,7 +21,6 @@
import com.wordpress.salaboy.messaging.MessageConsumerWorker;
import com.wordpress.salaboy.messaging.MessageConsumerWorkerHandler;
import com.wordpress.salaboy.model.messages.VehicleDispatchedMessage;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.smarttasks.jbpm5wrapper.conf.JBPM5HornetQHumanTaskClientConfiguration;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -59,7 +58,7 @@ public UserTaskListUI() {
this.mainJTabbedPane.add(this.doctorsUpdateTaskListPanel, 3);
this.mainJTabbedPane.setSelectedComponent(this.phoneCallsTaskListPanel);

DistributedPeristenceServerService.getInstance();



}
@@ -13,14 +13,8 @@

import com.wordpress.salaboy.api.HumanTaskService;
import com.wordpress.salaboy.emergencyservice.tasklists.DoctorsUpdateTaskListPanel;
import com.wordpress.salaboy.model.Vehicle;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -29,8 +23,6 @@
import org.example.ws_ht.api.wsdl.IllegalAccessFault;
import org.example.ws_ht.api.wsdl.IllegalArgumentFault;
import org.example.ws_ht.api.wsdl.IllegalStateFault;
import org.jbpm.task.AccessType;
import org.jbpm.task.service.ContentData;

/**
* @author salaboy
@@ -1,4 +1,4 @@
<?xml version="1.1" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>

<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<Properties>
@@ -169,7 +169,7 @@
<Component class="javax.swing.JTable" name="selectedVehiclesjTable">
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JTable()"/>
<AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value="Object [][] vehicles = new Object[DistributedPeristenceServerService.getInstance().getAllVehicles().size()][2];&#xa; int i = 0;&#xa; for(Vehicle vehicle : DistributedPeristenceServerService.getInstance().getAllVehicles()){&#xa; vehicles[i][0] = vehicle.getId();&#xa; vehicles[i][1] = vehicle.getName();&#xa; i++;&#xa; }&#xa; selectedVehiclesjTable.setModel(new javax.swing.table.DefaultTableModel(&#xa; vehicles,&#xa; new String [] {&#xa; &quot;ID&quot;, &quot;Vehicle&quot;&#xa; }&#xa; ));"/>
<AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value="Object [][] vehicles = new Object[persistenceService.getAllVehicles().size()][2];&#xa; int i = 0;&#xa; for(Vehicle vehicle : persistenceService.getAllVehicles()){&#xa; vehicles[i][0] = vehicle.getId();&#xa; vehicles[i][1] = vehicle.getName();&#xa; i++;&#xa; }&#xa; selectedVehiclesjTable.setModel(new javax.swing.table.DefaultTableModel(&#xa; vehicles,&#xa; new String [] {&#xa; &quot;ID&quot;, &quot;Vehicle&quot;&#xa; }&#xa; ));"/>
</AuxValues>
</Component>
</SubComponents>
@@ -11,11 +11,15 @@

package com.wordpress.salaboy.emergencyservice.taskforms;


import com.wordpress.salaboy.api.HumanTaskService;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.emergencyservice.tasklists.SelectVehicleTaskListPanel;
import com.wordpress.salaboy.model.Vehicle;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import java.io.ByteArrayOutputStream;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
@@ -29,8 +33,6 @@
import org.example.ws_ht.api.wsdl.IllegalAccessFault;
import org.example.ws_ht.api.wsdl.IllegalArgumentFault;
import org.example.ws_ht.api.wsdl.IllegalStateFault;
import org.jbpm.task.AccessType;
import org.jbpm.task.service.ContentData;

/**
* @author salaboy
@@ -40,14 +42,21 @@ public class SelectVehicleTaskFormPanel extends javax.swing.JPanel {
private HumanTaskService taskClient;
private String taskId;
private SelectVehicleTaskListPanel parent;
private final PersistenceService persistenceService;
private final ContextTrackingService trackingService;

/** Creates new form AmbulancePanel */
public SelectVehicleTaskFormPanel(SelectVehicleTaskListPanel parent, HumanTaskService taskClient, String taskId) {
public SelectVehicleTaskFormPanel(SelectVehicleTaskListPanel parent, HumanTaskService taskClient, String taskId) throws IOException {

this.parent = parent;
this.taskClient = taskClient;
this.taskId = taskId;

Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
initComponents();

// lblMedBone.setVisible(false);
@@ -110,7 +119,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(taskActionjButton)
.addComponent(sendSelectedVehiclesjButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);

jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Vehicle List"));
@@ -122,9 +131,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});

Object [][] vehicles = new Object[DistributedPeristenceServerService.getInstance().getAllVehicles().size()][2];
Object [][] vehicles = new Object[persistenceService.getAllVehicles().size()][2];
int i = 0;
for(Vehicle vehicle : DistributedPeristenceServerService.getInstance().getAllVehicles()){
for(Vehicle vehicle : persistenceService.getAllVehicles()){
vehicles[i][0] = vehicle.getId();
vehicles[i][1] = vehicle.getName();
i++;
@@ -201,7 +210,7 @@ private void sendSelectedVehiclesjButtonActionPerformed(java.awt.event.ActionEve
List<Vehicle> selectedVehicles = new ArrayList<Vehicle>(selected.length);

for(int i = 0; i < selected.length; i++){
selectedVehicles.add(DistributedPeristenceServerService.getInstance().loadVehicle((String)selectedVehiclesjTable.getModel().getValueAt(i, 0)));
selectedVehicles.add(persistenceService.loadVehicle((String)selectedVehiclesjTable.getModel().getValueAt(i, 0)));
}
Map<String, Object> info = new HashMap<String, Object>();
info.put("emergency.vehicles", selectedVehicles);
@@ -257,9 +266,9 @@ private void taskActionjButtonActionPerformed(java.awt.event.ActionEvent evt) {/
}//GEN-LAST:event_taskActionjButtonActionPerformed

private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshActionPerformed
Object [][] vehicles = new Object[DistributedPeristenceServerService.getInstance().getAllVehicles().size()][2];
Object [][] vehicles = new Object[persistenceService.getAllVehicles().size()][2];
int i = 0;
for(Vehicle vehicle : DistributedPeristenceServerService.getInstance().getAllVehicles()){
for(Vehicle vehicle : persistenceService.getAllVehicles()){
vehicles[i][0] = vehicle.getId();
vehicles[i][1] = vehicle.getName();
i++;
@@ -10,19 +10,20 @@
*/
package com.wordpress.salaboy.emergencyservice.tasklists;

import com.wordpress.salaboy.emergencyservice.tasklists.refreshhelpers.UIJTableRefreshManager;
import com.wordpress.salaboy.emergencyservice.tasklists.refreshhelpers.Refreshable;
import com.wordpress.salaboy.api.HumanTaskService;
import com.wordpress.salaboy.emergencyservice.main.UserTaskListUI;
import com.wordpress.salaboy.emergencyservice.taskforms.SelectVehicleTaskFormPanel;
import com.wordpress.salaboy.api.HumanTaskService;
import com.wordpress.salaboy.emergencyservice.tasklists.refreshhelpers.Refreshable;
import com.wordpress.salaboy.emergencyservice.tasklists.refreshhelpers.UIJTableRefreshManager;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JDialog;
import javax.swing.table.DefaultTableModel;
import org.example.ws_ht.api.TTaskAbstract;
import org.example.ws_ht.api.wsdl.IllegalArgumentFault;
import org.example.ws_ht.api.wsdl.IllegalStateFault;
import org.example.ws_ht.api.TTaskAbstract;

/**
*
@@ -235,7 +236,12 @@ public void refresh() {
private JDialog callPopup;

public void selectVehicleTaskSelected(String id) {
SelectVehicleTaskFormPanel selectAmbulanceTaskForm = new SelectVehicleTaskFormPanel(this, getTaskClient(), id);
SelectVehicleTaskFormPanel selectAmbulanceTaskForm = null;
try {
selectAmbulanceTaskForm = new SelectVehicleTaskFormPanel(this, getTaskClient(), id);
} catch (IOException ex) {
Logger.getLogger(SelectVehicleTaskListPanel.class.getName()).log(Level.SEVERE, null, ex);
}
callPopup = new JDialog(this.parent, "Info", true);
callPopup.add(selectAmbulanceTaskForm);
this.callPopup.setSize(320, 470);
@@ -4,6 +4,8 @@
*/
package com.wordpress.salaboy.emergencyservice.worldui.slick;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.Graphicable;
import com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.GraphicableAmbulance;
import com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.GraphicableEmergency;
@@ -22,7 +24,10 @@
import com.wordpress.salaboy.model.messages.VehicleHitsCornerMessage;
import com.wordpress.salaboy.model.messages.VehicleHitsEmergencyMessage;
import com.wordpress.salaboy.model.messages.VehicleHitsHospitalMessage;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -52,12 +57,20 @@ public class ParticularEmergencyRenderer implements EmergencyRenderer {
private GraphicableHighlightedHospital selectedHospital;
private boolean turbo;
private boolean hideEmergency;
private final PersistenceService persistenceService;
private final ContextTrackingService trackingService;

public ParticularEmergencyRenderer(WorldUI ui, GraphicableEmergency emergency) {
public ParticularEmergencyRenderer(WorldUI ui, GraphicableEmergency emergency) throws IOException {
this.emergency = emergency;
this.ui = ui;
this.vehicles = new HashMap<Graphicable, Vehicle>();
this.graphicableVehicles = new ArrayList<GraphicableVehicle>();
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);

trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
}

/**
@@ -409,7 +422,7 @@ private void addMockVehicle(Vehicle vehicle){
}

private void selectMockHospital(int index) {
Hospital mock = DistributedPeristenceServerService.getInstance().getAllHospitals().toArray(new Hospital[3])[index];
Hospital mock = persistenceService.getAllHospitals().toArray(new Hospital[3])[index];
try {
MessageFactory.sendMessage(new HospitalSelectedMessage(this.emergency.getCallId(), mock));
} catch (HornetQException ex) {
@@ -1,5 +1,7 @@
package com.wordpress.salaboy.emergencyservice.worldui.slick;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.context.tracking.ContextTrackingService;
import com.wordpress.salaboy.emergencyservice.worldui.slick.listener.WorldMouseListener;
import com.wordpress.salaboy.emergencyservice.worldui.slick.listener.WorldKeyListener;
import com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.GraphicableEmergency;
@@ -30,7 +32,11 @@
import com.wordpress.salaboy.model.messages.HospitalSelectedMessage;
import com.wordpress.salaboy.model.messages.IncomingCallMessage;
import com.wordpress.salaboy.model.messages.VehicleDispatchedMessage;
import com.wordpress.salaboy.model.serviceclient.DistributedPeristenceServerService;
import com.wordpress.salaboy.model.serviceclient.PersistenceService;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceConfiguration;
import com.wordpress.salaboy.model.serviceclient.PersistenceServiceProvider;
import java.io.IOException;


import java.util.Collections;
import java.util.HashMap;
@@ -49,6 +55,8 @@ public class WorldUI extends BasicGame {
private EmergencyRenderer currentRenderer;
private GlobalEmergenciesRenderer globalRenderer;
private Map<String, ParticularEmergencyRenderer> renderers = new HashMap<String, ParticularEmergencyRenderer>();
private PersistenceService persistenceService;
private ContextTrackingService trackingService;

public WorldUI() {
super("City Map");
@@ -75,8 +83,19 @@ public void init(GameContainer gc)
gc.getInput().addKeyListener(new WorldKeyListener(this));
gc.getInput().addMouseListener(new WorldMouseListener(this));

//Initializing Distribtued Persistence Service
DistributedPeristenceServerService.getInstance();
Map<String, Object> params = new HashMap<String, Object>();
params.put("ContextTrackingImplementation", ContextTrackingProvider.ContextTrackingServiceType.IN_MEMORY);
PersistenceServiceConfiguration conf = new PersistenceServiceConfiguration(params);
try {
persistenceService = PersistenceServiceProvider.getPersistenceService(PersistenceServiceProvider.PersistenceServiceType.DISTRIBUTED_MAP, conf);
} catch (IOException ex) {
Logger.getLogger(WorldUI.class.getName()).log(Level.SEVERE, null, ex);
}
try {
trackingService = ContextTrackingProvider.getTrackingService((ContextTrackingProvider.ContextTrackingServiceType) conf.getParameters().get("ContextTrackingImplementation"));
} catch (IOException ex) {
Logger.getLogger(WorldUI.class.getName()).log(Level.SEVERE, null, ex);
}

registerMessageConsumers();

@@ -158,7 +177,7 @@ public void handleMessage(final VehicleDispatchedMessage message) {
System.out.println("Unknown emergency for call Id "+message.getCallId());
return;
}
Vehicle vehicle = DistributedPeristenceServerService.getInstance().loadVehicle(message.getVehicleId());
Vehicle vehicle = persistenceService.loadVehicle(message.getVehicleId());
switchToEmergency(message.getCallId());
assignVehicleToEmergency(message.getCallId(), vehicle);
}
@@ -219,8 +238,11 @@ public void addRandomEmergency() {

GraphicableEmergency newEmergency = GraphicableFactory.newEmergency(call);
emergencies.put(call.getId(), newEmergency);

renderers.put(call.getId(), new ParticularEmergencyRenderer(this,newEmergency));
try {
renderers.put(call.getId(), new ParticularEmergencyRenderer(this,newEmergency));
} catch (IOException ex) {
Logger.getLogger(WorldUI.class.getName()).log(Level.SEVERE, null, ex);
}

try {
MessageFactory.sendMessage(new IncomingCallMessage(call));