package eu.play_project.dcep.distribution.examples; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; import java.util.Timer; import javax.naming.NamingException; import org.objectweb.fractal.api.NoSuchInterfaceException; import org.objectweb.proactive.core.component.Fractive; import org.objectweb.proactive.core.component.representative.PAComponentRepresentative; import org.objectweb.proactive.core.config.CentralPAPropertyRepository; import org.objectweb.proactive.core.util.URIBuilder; import com.hp.hpl.jena.graph.NodeFactory; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.sparql.serializer.PlaySerializer; import eu.play_project.dcep.api.DcepManagementException; import eu.play_project.dcep.api.DcepManagmentApi; import eu.play_project.dcep.constants.DcepConstants; import eu.play_project.dcep.distributedetalis.api.ConfigApi; import eu.play_project.dcep.distributedetalis.api.DistributedEtalisException; import eu.play_project.dcep.distributedetalis.configurations.DetalisConfigLocal; import eu.play_project.dcep.distribution.tests.single_pattern.SingleDistributedEtalisInstancePublisher; import eu.play_project.play_commons.constants.Namespace; import eu.play_project.play_platformservices.api.BdplQuery; import eu.play_project.play_platformservices.api.QueryDetails; import eu.play_project.play_platformservices_querydispatcher.api.EleGenerator; import eu.play_project.play_platformservices_querydispatcher.bdpl.code_generator.realtime.EleGeneratorForConstructQuery; import eu.play_project.play_platformservices_querydispatcher.bdpl.visitor.historic.QueryTemplateGenerator; import fr.inria.eventcloud.api.CompoundEvent; import fr.inria.eventcloud.api.PublishApi; import fr.inria.eventcloud.api.Quadruple; public class ConnectToExistingInstance { static PublishApi dcepPublishApi; static DcepManagmentApi dcepManagmentApi; static ConfigApi configApi; static int startTime = 0; static Timer timer; boolean timeUp = false; public static int sendetEvents = 0; public static void main(String[] args) throws DcepManagementException, IOException, NamingException, DistributedEtalisException { //CentralPAPropertyRepository.PA_NET_INTERFACE.setValue(""); // Get connection connectToCepEngine("dEtalis", "141.52.218.16"); } private static void connectToCepEngine(String name, String host) throws IOException, NamingException, DcepManagementException, DistributedEtalisException{ /* COMPONENT_ALIAS = "Dispatcher" */ PAComponentRepresentative root = null; try { root = Fractive.lookup((URIBuilder.buildURI(host, name, "pnp", Integer.parseInt(DcepConstants.getProperties().getProperty("dcep.proactive.pnp.port"))).toString())); } catch (IOException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } try { dcepManagmentApi = ((eu.play_project.dcep.api.DcepManagmentApi) root .getFcInterface(DcepManagmentApi.class.getSimpleName())); configApi = ((eu.play_project.dcep.distributedetalis.api.ConfigApi) root .getFcInterface(ConfigApi.class.getSimpleName())); } catch (NoSuchInterfaceException e) { e.printStackTrace(); } //Configure dEtalis instance. configApi.setConfig(new DetalisConfigLocal("play-epsparql-clic2call-historical-data.trig")); // Register query dcepManagmentApi.registerEventPattern(generateEle(getSparqlQueries("benchmarks/srbench/q5.eprq"))); System.out.println("t_1: \t" + System.currentTimeMillis()); } public static void delay(int delay) { try { Thread.sleep(delay); } catch (InterruptedException e) { e.printStackTrace(); } } public static CompoundEvent createEvent(String eventId, int value, String type) { List<Quadruple> quads = new ArrayList<Quadruple>(); Quadruple q1 = new Quadruple( NodeFactory.createURI("http://prefix.example.com/" + eventId), NodeFactory.createURI("http://prefix.example.com/e1"), NodeFactory.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"), NodeFactory.createURI("http://prefix.example.com/" + type)); Quadruple q2 = new Quadruple( NodeFactory.createURI("http://prefix.example.com/" + eventId), NodeFactory.createURI("http://prefix.example.com/e1"), NodeFactory.createURI("http://prefix.example.com/value"), NodeFactory.createURI(System.currentTimeMillis() + "")); Quadruple q3 = new Quadruple( NodeFactory.createURI("http://prefix.example.com/" + eventId), NodeFactory.createURI("http://prefix.example.com/e1"), NodeFactory.createURI("http://prefix.example.com/math/value"), NodeFactory.createURI(value + "")); quads.add(q1); quads.add(q3); quads.add(q2); return new CompoundEvent(quads); } public static String getSparqlQueries(String queryFile){ try { InputStream is = SingleDistributedEtalisInstancePublisher.class.getClassLoader().getResourceAsStream(queryFile); BufferedReader br = new BufferedReader(new InputStreamReader(is)); StringBuffer sb = new StringBuffer(); String line; while (null != (line = br.readLine())) { sb.append(line); sb.append("\n"); } //System.out.println(sb.toString()); br.close(); is.close(); return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } public static BdplQuery generateEle(String queryString) { // Parse query Query query = QueryFactory.create(queryString, com.hp.hpl.jena.query.Syntax.syntaxBDPL); // Use custom visitor EleGenerator visitor1 = new EleGeneratorForConstructQuery(); String patternId = "'" + Namespace.PATTERN.getUri() + Math.random() * 1000000 + "'"; //String patternId = "'p1'"; visitor1.setPatternId(patternId); visitor1.generateQuery(query); String etalisPattern = visitor1.getEle(); // Parse query Query q; try { q = QueryFactory.create(queryString, Syntax.syntaxBDPL); } catch (com.hp.hpl.jena.query.QueryException e) { throw new IllegalArgumentException("Error compiling BDPL to ELE.", e); } BdplQuery bdplQuery = BdplQuery.builder() .ele(etalisPattern) .details(new QueryDetails(patternId)) .bdpl(queryString) .constructTemplate(new QueryTemplateGenerator().createQueryTemplate(q)) .historicalQueries(PlaySerializer.serializeToMultipleSelectQueries(q)) .build(); return bdplQuery; } }