package eu.play_project.dcep.distribution.eventcloud.remotetests; import static eu.play_project.play_commons.constants.Event.EVENT_ID_SUFFIX; import java.util.Calendar; import org.event_processing.events.types.UcTelcoCall; import org.ontoware.rdf2go.model.node.impl.URIImpl; import eu.play_project.dcep.distributedetalis.utils.EventCloudHelpers; import eu.play_project.play_commons.constants.Stream; import eu.play_project.play_commons.eventtypes.EventHelpers; import fr.inria.eventcloud.api.CompoundEvent; import fr.inria.eventcloud.api.EventCloudId; import fr.inria.eventcloud.api.PublishApi; import fr.inria.eventcloud.exceptions.EventCloudIdNotManaged; import fr.inria.eventcloud.factories.ProxyFactory; /** * Connect to Event Cloud and publish events. * * @author Stefan Obermeier * */ public class EventPublisher { PublishApi publishProxy = null; String eventCloudRegistryUrl; String outputCloudId; public EventPublisher(String eventCloudRegistryUrl, Stream cloudId){ outputCloudId = cloudId.getTopicUri(); this.eventCloudRegistryUrl = eventCloudRegistryUrl; } public void publish(int numberOfEvents, int delay) throws EventCloudIdNotManaged { if (publishProxy == null) { publishProxy = getOutputCloud(outputCloudId); } for (int i = 0; i < numberOfEvents; i++) { System.out.printf("Publishing event %s/%s\n", i+1, numberOfEvents); publishProxy.publish(createTaxiUCCallEvent("http://example.com/" + Math.random())); try { Thread.sleep(delay*1000); } catch (InterruptedException e) { e.printStackTrace(); } } } private PublishApi getOutputCloud(String cloudId) throws EventCloudIdNotManaged { publishProxy = ProxyFactory.newPublishProxy(eventCloudRegistryUrl, new EventCloudId(cloudId)); return publishProxy; } public static CompoundEvent createTaxiUCCallEvent(String eventId) { UcTelcoCall event = new UcTelcoCall( // set the RDF context part EventHelpers.createEmptyModel(eventId), // set the RDF subject eventId + EVENT_ID_SUFFIX, // automatically write the rdf:type statement true); // Run some setters of the event event.setUcTelcoCalleePhoneNumber("49123456789"); event.setUcTelcoCallerPhoneNumber("49123498765"); event.setUcTelcoDirection("incoming"); double longitude = 123; double latitude = 345; EventHelpers.setLocationToEvent(event, longitude, latitude); // Create a Calendar for the current date and time event.setEndTime(Calendar.getInstance()); event.setStream(new URIImpl(Stream.TaxiUCCall.getUri())); // Push events. System.out.println(EventCloudHelpers.toCompoundEvent(event)); return EventCloudHelpers.toCompoundEvent(event); } }