private void orderEnvelopes(final WonMessage message) { String outer = message.getOuterEnvelopeGraphURI().toString(); envOrderedByContainment.add(outer); while (outer != null) { String inner = envUriToContainedInItEnvUri.get(outer); if (inner != null) { envOrderedByContainment.add(0, inner); } outer = inner; } }
private synchronized Model getOuterEnvelopeGraph() { if (this.outerEnvelopeGraph != null) { return this.outerEnvelopeGraph; } this.outerEnvelopeGraph = completeDataset.getNamedModel(getOuterEnvelopeGraphURI().toString()); return this.outerEnvelopeGraph; }
public synchronized URI getMessageURI() { if (this.messageURI == null) { this.messageURI = findMessageUri(getOuterEnvelopeGraph(), getOuterEnvelopeGraphURI().toString()); } return this.messageURI; }
/** * Adds a property to the message resource in the outermost envelope. * * @param property * @param value */ public synchronized void addMessageProperty(Property property, RDFNode value) { if (logger.isDebugEnabled()) { logger.debug("adding property {}, value {}, to message {} in envelope {}", new Object[]{property, value, getMessageURI(), getOuterEnvelopeGraphURI()}); } getOuterEnvelopeGraph().getResource(getMessageURI().toString()).addProperty(property, value); }
private WonMessage processSelected(List<MessageAndPlaceholder> selected, WonMessage message) { Dataset messageDataset = message.getCompleteDataset(); URI outerEnvelopeGraphURI = message.getOuterEnvelopeGraphURI(); URI messageUri = message.getMessageURI(); selected.forEach((MessageAndPlaceholder m) -> { addSignatureReferenceToMessage(messageDataset, messageUri, outerEnvelopeGraphURI, m.getWonMessage()); }); WonMessage newMessage = new WonMessage(messageDataset); selected.forEach((MessageAndPlaceholder m) -> { newMessage.addMessageProperty(WONMSG.HAS_PREVIOUS_MESSAGE_PROPERTY, m.getMessageEventPlaceholder().getMessageURI()); }); return newMessage; }
private synchronized List<URI> getEnvelopePropertyURIValues(Property property) { List<URI> values = new ArrayList<URI>(); Model currentEnvelope = getOuterEnvelopeGraph(); URI currentEnvelopeUri = getOuterEnvelopeGraphURI(); //TODO would make sense to order envelope graphs in order from container to containee in the first place while (currentEnvelope != null) { URI currentMessageURI = findMessageUri(currentEnvelope, currentEnvelopeUri.toString()); StmtIterator it = currentEnvelope.listStatements(currentEnvelope.getResource(currentMessageURI.toString()), property, (RDFNode) null); while (it.hasNext()) { values.add(URI.create(it.nextStatement().getObject().asResource().toString())); } currentEnvelopeUri = RdfUtils.findFirstObjectUri(currentEnvelope, WONMSG.CONTAINS_ENVELOPE, null, true, true); currentEnvelope = null; if (currentEnvelopeUri != null) { currentEnvelope = this.completeDataset.getNamedModel(currentEnvelopeUri.toString()); } } return values; }
public synchronized URI getEnvelopePropertyURIValue(Property property) { Model currentEnvelope = getOuterEnvelopeGraph(); URI currentEnvelopeUri = getOuterEnvelopeGraphURI(); //TODO would make sense to order envelope graphs in order from container to containee in the first place, //if proper done, we should avoid ending up in infinite loop if someone sends us malformed envelopes that // contain-in-other circular... while (currentEnvelope != null) { URI currentMessageURI = findMessageUri(currentEnvelope, currentEnvelopeUri.toString()); StmtIterator it = currentEnvelope.listStatements(currentEnvelope.getResource(currentMessageURI.toString()), property, (RDFNode) null); if (it.hasNext()) { return URI.create(it.nextStatement().getObject().asResource().toString()); } // move to the next envelope currentEnvelopeUri = RdfUtils.findFirstObjectUri(currentEnvelope, WONMSG.CONTAINS_ENVELOPE, null, true, true); currentEnvelope = null; if (currentEnvelopeUri != null) { currentEnvelope = this.completeDataset.getNamedModel(currentEnvelopeUri.toString()); } } return null; }
public void addAsContainedEnvelope(final Dataset dataset, final Model envelopeGraph, final Resource envelopeGraphResource, WonMessage messageToAdd, URI messageURI) { String messageUriString = messageURI.toString(); //the [wrappedMessage.envelopeGraphURI] rdf:type msg:EnvelopeGraph triple in the default graph is required to // find the wrapped envelope graph. envelopeGraphResource.addProperty(WONMSG.CONTAINS_ENVELOPE, envelopeGraph.getResource(messageToAdd .getOuterEnvelopeGraphURI().toString())); //copy all named graphs to the new message dataset for (Iterator<String> names = messageToAdd.getCompleteDataset().listNames(); names.hasNext(); ){ String graphUri = names.next(); Model modelToAdd = messageToAdd.getCompleteDataset().getNamedModel(graphUri); dataset.addNamedModel(graphUri, modelToAdd); //define that the added graph is a subgraph of the message if that is not yet //expressed in the graph itself if (!modelToAdd .contains( modelToAdd.getResource(graphUri), RDFG.SUBGRAPH_OF, modelToAdd.getResource(messageUriString))){ envelopeGraph.createStatement(envelopeGraph.getResource(graphUri), RDFG.SUBGRAPH_OF, envelopeGraph.getResource(messageUriString)); } } }