[TASK] Enhance even further, allow custom observers per query.

This commit is contained in:
JPT
2016-10-09 18:04:03 +02:00
parent 7572cd7ddd
commit 471fbdb8a6
5 changed files with 166 additions and 62 deletions
@@ -15,7 +15,6 @@ import eu.larkc.csparql.core.engine.CsparqlQueryResultProxy;
import eu.larkc.csparql.core.engine.RDFStreamFormatter;
import lu.jpt.csparqlproject.gui.FancyTextObserverWindow;
import lu.jpt.csparqlproject.misc.QueryContainer;
import lu.jpt.csparqlproject.misc.ReasoningTester;
import lu.jpt.csparqlproject.rentacar.RentACarSimulation;
/**
@@ -147,7 +146,7 @@ public class SimulationContext {
// DEBUGGING ONLY
//ReasoningTester rt = new ReasoningTester(this.engine);
// Spawn the whole simulation - this takes care of simulation-specific things
simulation = new RentACarSimulation();
simulation = new RentACarSimulation(this.engine);
// Register all the event streams
// Register car event stream
RdfStream carStream = simulation.getCarStream();
@@ -159,14 +158,16 @@ public class SimulationContext {
this.registeredStreams.add(driverStream);
Collection<QueryContainer> queriesToRegister = new ArrayList<QueryContainer>();
// Collect the queries to use!
queriesToRegister.add(RentACarSimulation.getStandingCarsStream());
queriesToRegister.add(RentACarSimulation.getMovingCarsStream());
queriesToRegister.add(RentACarSimulation.getStronglyAcceleratingCarsStream());
queriesToRegister.add(RentACarSimulation.getStronglyBrakingCarsStream());
queriesToRegister.add(RentACarSimulation.getEngineWearStream());
queriesToRegister.add(RentACarSimulation.getBrakeWearStream());
queriesToRegister.add(RentACarSimulation.getHandbrakeWearStream());
queriesToRegister.add(RentACarSimulation.getTireWearStream());
queriesToRegister.add(simulation.getStandingCarsStream());
queriesToRegister.add(simulation.getMovingCarsStream());
queriesToRegister.add(simulation.getStronglyAcceleratingCarsStream());
queriesToRegister.add(simulation.getStronglyBrakingCarsStream());
queriesToRegister.add(simulation.getEngineWearStream());
queriesToRegister.add(simulation.getBrakeWearStream());
queriesToRegister.add(simulation.getHandbrakeWearStream());
queriesToRegister.add(simulation.getTireWearStream());
queriesToRegister.add(simulation.getCarTakenEventsQuery());
queriesToRegister.add(simulation.getCarReturnedEventsQuery());
// Now register each query appropriately!
for(QueryContainer queryContainer : queriesToRegister) {
CsparqlQueryResultProxy resultProxy = null;
@@ -189,6 +190,11 @@ public class SimulationContext {
Observer resultObserver = this.createResultObserverWindow(queryContainer.name);
resultProxy.addObserver(resultObserver);
}
// Attach custom observers to resultProxy if available
// These are used for SPARQL UPDATE queries on local domain knowledge
if(queryContainer.customObserver != null) {
resultProxy.addObserver(queryContainer.customObserver);
}
this.queryResultProxies.add(resultProxy);
SimulationContext.logger.info("Successfully registered query " + queryContainer.name + ": " + queryContainer);
} catch (Exception e) {