ActivityPubObjectConvertableDefault.java
package org.linkedopenactors.rdfpub.domain.commonsrdf;
import java.util.Optional;
import org.apache.commons.rdf.api.Graph;
import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.RDF;
import org.linkedopenactors.rdfpub.domain.commonsrdf.vocab.Vocabularies;
class ActivityPubObjectConvertableDefault implements ActivityPubObjectConvertable {
private RDF rdf;
private GraphToStringConverter graphToStringConverter;
private ActivityPubObject activityPubObject;
private SubjectProvider subjectProvider;
private Vocabularies vocabularies;
private InstanceProperties instanceProperties;
public ActivityPubObjectConvertableDefault(RDF rdf, GraphToStringConverter graphToStringConverter,
ActivityPubObject activityPubObject, SubjectProvider subjectProvider, Vocabularies vocabularies,
InstanceProperties instanceProperties) {
this.rdf = rdf;
this.graphToStringConverter = graphToStringConverter;
this.activityPubObject = activityPubObject;
this.subjectProvider = subjectProvider;
this.vocabularies = vocabularies;
this.instanceProperties = instanceProperties;
}
@Override
public Activity asActivity() {
return new ActivityDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public Actor asActor() {
return new ActorDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public Tombstone asTombstone() {
return new TombstoneDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public Optional<ActivityPubObject> resolve(IRI subject) {
if(activityPubObject.asGraph().stream(subject, null, null).findFirst().isPresent()) {
ActivityPubObjectDefault value = new ActivityPubObjectDefault(rdf, subject, activityPubObject.asGraph(), graphToStringConverter,
subjectProvider, vocabularies, instanceProperties);
return Optional.of(value);
} else {
return Optional.empty();
}
}
@Override
public ActivityPubObject isolated() {
IRI subject = activityPubObject.getSubject();
Graph isolated = rdf.createGraph();
Graph g = activityPubObject.asGraph();
g.stream()
.filter(s->s.getSubject().equals(subject))
.forEach(isolated::add);
return new ActivityPubObjectDefault(rdf, subject, isolated, graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public ActivityPubObject asRevison() {
IRI revisionSubject = subjectProvider.provide(activityPubObject.getSubject());
Graph revision = rdf.createGraph();
activityPubObject.asGraph().stream()
.filter(triple->triple.getSubject().equals(activityPubObject.getSubject()))
.forEach(t->{
revision.add(revisionSubject, t.getPredicate(), t.getObject());
});
ActivityPubObjectDefault revisionAo = new ActivityPubObjectDefault(rdf, revisionSubject, revision,
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
revisionAo.setWasRevisionOf(activityPubObject.getSubject());
return revisionAo;
}
@Override
public PublicKey asPublicKey() {
return new PublicKeyDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public Endpoints asEndpoints() {
return new EndpointsDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public Instance asInstance() {
return new InstanceDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
@Override
public OrderedCollectionPage asOrderedCollectionPage() {
return new OrderedCollectionPageDefault(rdf, activityPubObject.getSubject(), activityPubObject.asGraph(),
graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
}
}