@Override public Model getModel(URI contextURI) { Model model = super.getModel(contextURI); NotifyingModelLayer notifyingModel = new NotifyingModelLayer(model); for (Map.Entry<ModelChangedListener, QuadPattern> entry : this.modelsetChangeListener .entrySet()) { if (entry.getValue().getContext() == Variable.ANY || entry.getValue().getContext().equals(contextURI)) { notifyingModel.addModelChangedListener(entry.getKey(), entry .getValue()); } } return notifyingModel; }
@Override public Model getDefaultModel() { Model model = super.getDefaultModel(); NotifyingModelLayer notifyingModel = new NotifyingModelLayer(model); for (Map.Entry<ModelChangedListener, QuadPattern> entry : this.modelsetChangeListener .entrySet()) { // only if listening for (*, x,y,z) changes in default model are // detected if (entry.getValue().getContext() == Variable.ANY) { notifyingModel.addModelChangedListener(entry.getKey(), entry .getValue()); } } return notifyingModel; }
@Override public Model getModel(URI contextURI) { Model model = super.getModel(contextURI); NotifyingModelLayer notifyingModel = new NotifyingModelLayer(model); for (Map.Entry<ModelChangedListener, QuadPattern> entry : this.modelsetChangeListener .entrySet()) { if (entry.getValue().getContext() == Variable.ANY || entry.getValue().getContext().equals(contextURI)) { notifyingModel.addModelChangedListener(entry.getKey(), entry .getValue()); } } return notifyingModel; }
@Override public Model getDefaultModel() { Model model = super.getDefaultModel(); NotifyingModelLayer notifyingModel = new NotifyingModelLayer(model); for (Map.Entry<ModelChangedListener, QuadPattern> entry : this.modelsetChangeListener .entrySet()) { // only if listening for (*, x,y,z) changes in default model are // detected if (entry.getValue().getContext() == Variable.ANY) { notifyingModel.addModelChangedListener(entry.getKey(), entry .getValue()); } } return notifyingModel; }
@Override public ClosableIterator<Model> getModels() { List<Model> models = new ArrayList<Model>(); ClosableIterator<? extends Model> it = super.getModels(); // wrap all into NotifyingModels while (it.hasNext()) { Model model = it.next(); NotifyingModelLayer notifyingModel = new NotifyingModelLayer(model); for (Map.Entry<ModelChangedListener, QuadPattern> entry : this.modelsetChangeListener .entrySet()) { notifyingModel.addModelChangedListener(entry.getKey(), entry .getValue()); } models.add(notifyingModel); } it.close(); return new PseudoClosableIterator<Model>(models.iterator()); }
@Override public ClosableIterator<Model> getModels() { List<Model> models = new ArrayList<Model>(); ClosableIterator<? extends Model> it = super.getModels(); // wrap all into NotifyingModels while (it.hasNext()) { Model model = it.next(); NotifyingModelLayer notifyingModel = new NotifyingModelLayer(model); for (Map.Entry<ModelChangedListener, QuadPattern> entry : this.modelsetChangeListener .entrySet()) { notifyingModel.addModelChangedListener(entry.getKey(), entry .getValue()); } models.add(notifyingModel); } it.close(); return new PseudoClosableIterator<Model>(models.iterator()); }
public void testRemoveStatement() { this.notifyingModel.open(); this.notifyingModel.addStatement(subject, predicate, object); this.notifyingModel .addModelChangedListener(new AbstractModelChangeListener() { @Override public void removedStatement(Statement statement) { assertEquals(new StatementImpl(null, subject, predicate, object), statement); } @Override public void removedStatements( Iterator<? extends Statement> statements) { assertTrue(statements.hasNext()); assertEquals(new StatementImpl(null, subject, predicate, object), statements.next()); assertFalse(statements.hasNext()); } }); this.notifyingModel.close(); }
public void testAddStatement() { this.notifyingModel.open(); this.notifyingModel.addStatement(predicate, object, subject); // this // statement // should // not cause a // notification this.notifyingModel .addModelChangedListener(new AbstractModelChangeListener() { @Override public void addedStatement(Statement statement) { assertEquals(new StatementImpl(null, subject, predicate, object), statement); } @Override public void addedStatements( Iterator<? extends Statement> statements) { assertTrue(statements.hasNext()); assertEquals(new StatementImpl(null, subject, predicate, object), statements.next()); assertFalse(statements.hasNext()); } }); this.notifyingModel.addStatement(subject, predicate, object); this.notifyingModel.close(); }
public void testChangeStatement() { this.notifyingModel .addModelChangedListener(new AbstractModelChangeListener() { @Override public void performedUpdate(DiffReader diff) { int i = 0; for (Statement s : diff.getAdded()) { i++; assertEquals(new StatementImpl(null, subject, predicate, object), s); } assertEquals(1, i); assertFalse(diff.getRemoved().iterator().hasNext()); } }); this.notifyingModel.open(); Diff diff = new DiffImpl(); diff.addStatement(subject, predicate, object); this.notifyingModel.update(diff); this.notifyingModel.close(); }
public void testNotificationOnLiteralObject() { this.notifyingModel.open(); ModelChangedListener listener = new AbstractModelChangeListener() { @Override public void addedStatement(Statement statement) { assertEquals(new PlainLiteralImpl("Sebastian"), statement .getObject()); } }; this.notifyingModel.addModelChangedListener(listener, new TriplePatternImpl(Variable.ANY, Variable.ANY, new PlainLiteralImpl("Sebastian"))); this.notifyingModel.addStatement(subject, predicate, "Sebastian Gerke"); this.notifyingModel.addStatement(predicate, object, "Sebastian"); this.notifyingModel.close(); }
public void testNotificationOnPredicateAndObject() { this.notifyingModel.open(); ModelChangedListener listener = new AbstractModelChangeListener() { @Override public void addedStatement(Statement statement) { assertEquals(new PlainLiteralImpl("Sebastian"), statement .getObject()); assertEquals(predicate, statement.getPredicate()); } }; this.notifyingModel.addModelChangedListener(listener, new TriplePatternImpl(Variable.ANY, predicate, new PlainLiteralImpl("Sebastian"))); this.notifyingModel.addStatement(subject, predicate, "Sebastian Gerke"); this.notifyingModel.addStatement(subject, predicate, "Sebastian"); this.notifyingModel.addStatement(predicate, object, "Sebastian"); this.notifyingModel.close(); } }
this.notifyingModel.addModelChangedListener(listener, new TriplePatternImpl(subject, Variable.ANY, Variable.ANY));