OrderedCollectionPageDefault.java
package org.linkedopenactors.rdfpub.domain.commonsrdf;
import java.util.Set;
import org.apache.commons.rdf.api.Graph;
import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.Literal;
import org.apache.commons.rdf.api.RDF;
import org.apache.commons.rdf.api.Triple;
import org.linkedopenactors.rdfpub.domain.commonsrdf.vocab.AS;
import org.linkedopenactors.rdfpub.domain.commonsrdf.vocab.Vocabularies;
public class OrderedCollectionPageDefault extends ActivityPubObjectDefault implements OrderedCollectionPage {
private AS as;
public OrderedCollectionPageDefault(RDF rdf, IRI subject, Graph graph, GraphToStringConverter graphToStringConverter, SubjectProvider subjectProvider,
Vocabularies vocabularies, InstanceProperties instanceProperties) {
super(rdf, subject, graph, graphToStringConverter, subjectProvider, vocabularies, instanceProperties);
as = vocabularies.getActivityStreams();
}
@Override
public IRI partOf() {
return getIri(as.partOf()).orElseThrow();
}
@Override
public long totalItems() {
return asGraph().stream(getSubject(), as.totalItems(), null)
.findFirst()
.map(Triple::getObject)
.map(Literal.class::cast)
.map(l -> l.getLexicalForm())
.map(Long::valueOf)
.orElse(0L);
}
@Override
public void setPartOf(IRI partOf) {
set(as.partOf(), partOf);
}
@Override
public void setTotalItems(int size) {
set(as.totalItems(), rdf.createLiteral(Integer.toString(size), rdf.createIRI("http://www.w3.org/2001/XMLSchema#nonNegativeInteger")));
}
@Override
public void addActivity(Activity activity) {
add(as.items(), activity.getSubject());
this.add(activity.asGraph());
}
@Override
public void setItems(Set<IRI> items) {
set(as.items(), items);
}
}