/org.openrdf/alibaba
final ActivityFactory delegate = repo.getActivityFactory(); |
repo.setActivityFactory(new ActivityFactory() { |
|
public URI assignActivityURI(AuditingRepositoryConnection con) { |
return lastActivity = delegate.assignActivityURI(con); |
public URI createActivityURI(ValueFactory vf) { |
return lastActivity = delegate.createActivityURI(vf); |
} |
|
public void activityEnded(URI activityGraph, |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
|
public void testAutoCommit() throws Exception { |
assertTrue(con.isEmpty()); |
con.add(carmichael, knows, harris); |
con.close(); |
con = repo.getConnection(); |
assertTrue(con.hasStatement(carmichael, knows, harris, false)); |
assertTrue(con.hasStatement(carmichael, GENERATED_BY, null, false)); |
assertFalse(con.hasStatement(null, null, null, false, new Resource[]{null})); |
assertEquals(Arrays.asList(lastActivity), con.getContextIDs().asList()); |
assertTrue(con.hasStatement(null, RDF.TYPE, ACTIVITY, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, RECENT, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, OBSOLETE, false)); |
assertTrue(con.hasStatement(null, ENDED_AT, null, false)); |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
} |
final ActivityFactory delegate = repo.getActivityFactory(); |
repo.setActivityFactory(new ActivityFactory() { |
|
public URI assignActivityURI(AuditingRepositoryConnection con) { |
return lastActivity = delegate.assignActivityURI(con); |
public URI createActivityURI(ValueFactory vf) { |
return lastActivity = delegate.createActivityURI(vf); |
} |
|
public void activityEnded(URI activityGraph, |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
|
public void testAutoCommit() throws Exception { |
assertTrue(con.isEmpty()); |
con.add(carmichael, knows, harris); |
con.close(); |
con = repo.getConnection(); |
assertTrue(con.hasStatement(carmichael, knows, harris, false)); |
assertTrue(con.hasStatement(carmichael, GENERATED_BY, null, false)); |
assertFalse(con.hasStatement(null, null, null, false, new Resource[]{null})); |
assertEquals(Arrays.asList(lastActivity), con.getContextIDs().asList()); |
assertTrue(con.hasStatement(null, RDF.TYPE, ACTIVITY, false)); |
assertTrue(con.hasStatement(null, RDF.TYPE, RECENT, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, OBSOLETE, false)); |
assertTrue(con.hasStatement(null, ENDED_AT, null, false)); |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
} |
private URI thomson = vf.createURI(NS, "thomson"); |
private URI knows = vf.createURI("http://xmlns.com/foaf/0.1/knows"); |
private URI lastActivity; |
private int activityNumber; |
private AuditingRepositoryConnection con; |
private AuditingRepository repo; |
|
final ActivityFactory delegate = repo.getActivityFactory(); |
repo.setActivityFactory(new ActivityFactory() { |
|
public URI assignActivityURI(AuditingRepositoryConnection con) { |
return lastActivity = delegate.assignActivityURI(con); |
public URI createActivityURI(ValueFactory vf) { |
return lastActivity = delegate.createActivityURI(vf); |
} |
|
public void activityEnded(URI activityGraph, |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
|
public void testAutoCommit() throws Exception { |
assertTrue(con.isEmpty()); |
con.add(carmichael, knows, harris); |
con.close(); |
con = repo.getConnection(); |
assertTrue(con.hasStatement(carmichael, knows, harris, false)); |
assertTrue(con.hasStatement(carmichael, GENERATED_BY, null, false)); |
assertFalse(con.hasStatement(null, null, null, false, new Resource[]{null})); |
assertEquals(Arrays.asList(lastActivity), con.getContextIDs().asList()); |
assertTrue(con.hasStatement(null, RDF.TYPE, ACTIVITY, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, RECENT, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, OBSOLETE, false)); |
assertTrue(con.hasStatement(null, ENDED_AT, null, false)); |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
} |
private URI thomson = vf.createURI(NS, "thomson"); |
private URI knows = vf.createURI("http://xmlns.com/foaf/0.1/knows"); |
private URI lastActivity; |
private int activityNumber; |
private AuditingRepositoryConnection con; |
private AuditingRepository repo; |
|
final ActivityFactory delegate = repo.getActivityFactory(); |
repo.setActivityFactory(new ActivityFactory() { |
|
public URI assignActivityURI(AuditingRepositoryConnection con) { |
return lastActivity = delegate.assignActivityURI(con); |
public URI createActivityURI(ValueFactory vf) { |
return lastActivity = delegate.createActivityURI(vf); |
} |
|
public void activityEnded(URI activityGraph, |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
|
public void testAutoCommit() throws Exception { |
assertTrue(con.isEmpty()); |
con.add(carmichael, knows, harris); |
con.close(); |
con = repo.getConnection(); |
assertTrue(con.hasStatement(carmichael, knows, harris, false)); |
assertTrue(con.hasStatement(carmichael, GENERATED_BY, null, false)); |
assertFalse(con.hasStatement(null, null, null, false, new Resource[]{null})); |
assertEquals(Arrays.asList(lastActivity), con.getContextIDs().asList()); |
assertTrue(con.hasStatement(null, RDF.TYPE, ACTIVITY, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, RECENT, false)); |
assertFalse(con.hasStatement(null, RDF.TYPE, OBSOLETE, false)); |
assertTrue(con.hasStatement(null, ENDED_AT, null, false)); |
assertFalse(con.hasStatement(null, INFORMED_BY, null, false)); |
assertFalse(con.hasStatement(null, CAHNGED, null, false)); |
} |
} |
import java.util.concurrent.atomic.AtomicLong; |
|
import org.openrdf.model.URI; |
import org.openrdf.model.ValueFactory; |
import org.openrdf.model.vocabulary.RDF; |
import org.openrdf.repository.RepositoryConnection; |
import org.openrdf.repository.RepositoryException; |
import org.openrdf.repository.auditing.ActivityFactory; |
import org.openrdf.repository.auditing.AuditingRepositoryConnection; |
|
public class ActivityTagFactory implements ActivityFactory { |
private static final String ACTIVITY = "http://www.w3.org/ns/prov#Activity"; |
private static final String uid = "t" |
+ Long.toHexString(System.currentTimeMillis()) + "x"; |
private static final AtomicLong seq = new AtomicLong(0); |
space = "tag:" + username + "@" + hostName + ","; |
} |
|
public URI assignActivityURI(AuditingRepositoryConnection con) { |
public URI createActivityURI(ValueFactory vf) { |
String local = uid + seq.getAndIncrement(); |
return con.getValueFactory().createURI(getNamespace(), local); |
return vf.createURI(getNamespace(), local); |
} |
|
public void activityStarted(URI activityGraph, RepositoryConnection con) { |
// don't care |
public void activityStarted(URI activityGraph, RepositoryConnection con) |
throws RepositoryException { |
ValueFactory vf = con.getValueFactory(); |
con.add(activityGraph, RDF.TYPE, vf.createURI(ACTIVITY), activityGraph); |
} |
|
public void activityEnded(URI activityGraph, RepositoryConnection con) { |
import java.util.concurrent.atomic.AtomicLong; |
|
import org.openrdf.model.URI; |
import org.openrdf.model.ValueFactory; |
import org.openrdf.model.vocabulary.RDF; |
import org.openrdf.repository.RepositoryConnection; |
import org.openrdf.repository.RepositoryException; |
import org.openrdf.repository.auditing.ActivityFactory; |
import org.openrdf.repository.auditing.AuditingRepositoryConnection; |
|
public class ActivitySequenceFactory implements ActivityFactory { |
private static final String ACTIVITY = "http://www.w3.org/ns/prov#Activity"; |
private final String uid = "t" |
+ Long.toHexString(System.currentTimeMillis()) + "x"; |
private final AtomicLong seq = new AtomicLong(0); |
this.ns = ns; |
} |
|
public URI assignActivityURI(AuditingRepositoryConnection con) { |
return con.getValueFactory().createURI(ns, uid + seq.getAndIncrement()); |
public URI createActivityURI(ValueFactory vf) { |
return vf.createURI(ns, uid + seq.getAndIncrement()); |
} |
|
public void activityStarted(URI activityGraph, RepositoryConnection con) { |
// don't care |
public void activityStarted(URI activityGraph, RepositoryConnection con) |
throws RepositoryException { |
ValueFactory vf = con.getValueFactory(); |
con.add(activityGraph, RDF.TYPE, vf.createURI(ACTIVITY), activityGraph); |
} |
|
public void activityEnded(URI activityGraph, RepositoryConnection con) { |
package org.openrdf.repository.auditing; |
|
import org.openrdf.model.URI; |
import org.openrdf.model.ValueFactory; |
import org.openrdf.repository.RepositoryConnection; |
import org.openrdf.repository.RepositoryException; |
|
public interface ActivityFactory { |
|
URI assignActivityURI(AuditingRepositoryConnection con); |
URI createActivityURI(ValueFactory vf); |
|
void activityStarted(URI activityGraph, RepositoryConnection con) throws RepositoryException; |
|
private final Map<URI, Set<URI>> modifiedEntities = new HashMap<URI, Set<URI>>(); |
private Set<URI> uncommittedActivityGraphs = new LinkedHashSet<URI>(); |
private ActivityFactory activityFactory; |
private boolean assigningActivity; |
|
public AuditingRepositoryConnection(AuditingRepository repository, |
RepositoryConnection connection) throws RepositoryException { |
@Override |
public synchronized URI getInsertContext() { |
URI activityGraph = super.getInsertContext(); |
if (activityGraph == null && !assigningActivity && activityFactory != null) { |
assigningActivity = true; |
try { |
setInsertContext(activityFactory.assignActivityURI(this)); |
} finally { |
assigningActivity = false; |
} |
if (activityGraph == null && activityFactory != null) { |
setInsertContext(activityFactory.createActivityURI(getValueFactory())); |
return super.getInsertContext(); |
} |
return activityGraph; |
return; |
if (uncommittedActivityGraphs.add(activityGraph)) { |
if (activityFactory != null) { |
activityFactory.activityStarted(activityGraph, this); |
activityFactory.activityStarted(activityGraph, getDelegate()); |
} |
} |
if (subject instanceof URI && !activityGraph.equals(subject)) { |
if (entities != null) { |
URI used = getValueFactory().createURI(USED); |
for (URI entity : entities) { |
add(activityGraph, used, entity, activityGraph); |
getDelegate().add(activityGraph, used, entity, activityGraph); |
} |
} |
if (graphs != null) { |
URI informedBy = getValueFactory().createURI(WAS_INFORMED_BY); |
for (URI graph : graphs) { |
add(activityGraph, informedBy, graph, activityGraph); |
getDelegate().add(activityGraph, informedBy, graph, activityGraph); |
} |
} |
URI recentActivity = getValueFactory().createURI(RECENT_ACTIVITY); |
add(activityGraph, RDF.TYPE, recentActivity, activityGraph); |
getDelegate().add(activityGraph, RDF.TYPE, recentActivity, activityGraph); |
} |
|
private void finalizeActivityGraph(URI activityGraph) |
} |
if (activityFactory != null) { |
for (URI activityGraph : recentActivities) { |
activityFactory.activityEnded(activityGraph, this); |
activityFactory.activityEnded(activityGraph, getDelegate()); |
} |
} |
} |