package com.mysema.rdfbean.model; import java.io.IOException; import javax.annotation.Nullable; import com.mysema.commons.lang.CloseableIterator; /** * @author tiwe * */ public class CountOperation implements RDFConnectionCallback<Long> { @Nullable private final ID subject; @Nullable private final UID predicate, context; @Nullable private final NODE object; private final boolean includeInferred; public CountOperation() { this(null, null, null, null, false); } public CountOperation(@Nullable ID subject, @Nullable UID predicate, @Nullable NODE object, @Nullable UID context, boolean includeInferred) { this.subject = subject; this.predicate = predicate; this.object = object; this.context = context; this.includeInferred = includeInferred; } @Override public Long doInConnection(RDFConnection connection) throws IOException { long count = 0l; CloseableIterator<STMT> stmts = connection.findStatements(subject, predicate, object, context, includeInferred); try { while (stmts.hasNext()) { count++; stmts.next(); } return count; } finally { stmts.close(); } } }