
org.ontoware.rdf2go.model.impl.NotifyingModelLayer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rdf2go.api Show documentation
Show all versions of rdf2go.api Show documentation
RDF2go is an implementation-independent Java API with the design
goals: portability (hence the name), performance and ease of
implementation.
This project was started at FZI Forschungszentrum Informatik Karlsruhe, Germany - www.fzi.de
The newest version!
/**
* LICENSE INFORMATION
*
* Copyright 2005-2008 by FZI (http://www.fzi.de).
* Licensed under a BSD license (http://www.opensource.org/licenses/bsd-license.php)
* = Max Völkel
* = FZI Forschungszentrum Informatik Karlsruhe, Karlsruhe, Germany
* = 2010
*
* Further project information at http://semanticweb.org/wiki/RDF2Go
*/
package org.ontoware.rdf2go.model.impl;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.ontoware.rdf2go.exception.ModelRuntimeException;
import org.ontoware.rdf2go.model.DiffReader;
import org.ontoware.rdf2go.model.Model;
import org.ontoware.rdf2go.model.ModelChangedListener;
import org.ontoware.rdf2go.model.NotifyingModel;
import org.ontoware.rdf2go.model.Statement;
import org.ontoware.rdf2go.model.TriplePattern;
import org.ontoware.rdf2go.model.node.Node;
import org.ontoware.rdf2go.model.node.NodeOrVariable;
import org.ontoware.rdf2go.model.node.Resource;
import org.ontoware.rdf2go.model.node.ResourceOrVariable;
import org.ontoware.rdf2go.model.node.URI;
import org.ontoware.rdf2go.model.node.UriOrVariable;
/**
* Adds notifying capabilites to existing models.
*
* @author voelkel
*
*/
public class NotifyingModelLayer extends DelegatingModel implements NotifyingModel {
/**
*
*/
private static final long serialVersionUID = -285355000693599975L;
public NotifyingModelLayer(Model model) {
super(model);
}
// /////////////////////////////////
// override methods to be able to notify
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.common.CommonModelWriter#addAll(org.ontoware
* .rdf2go.core.common.CommonModelReader)
*/
@Override
public void addAll(Iterator extends Statement> other) throws ModelRuntimeException {
while(other.hasNext()) {
this.addStatement(other.next());
}
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* org.ontoware.rdf2go.core.node.Node)
*/
@Override
public void addStatement(Resource subject, URI predicate, Node object)
throws ModelRuntimeException {
this.addStatement(super.getDelegatedModel().createStatement(subject, predicate, object));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* java.lang.String, java.lang.String)
*/
@Override
public void addStatement(Resource subject, URI predicate, String literal, String languageTag)
throws ModelRuntimeException {
this.addStatement(getDelegatedModel().createStatement(subject, predicate,
getDelegatedModel().createLanguageTagLiteral(literal, languageTag)));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* java.lang.String, org.ontoware.rdf2go.core.node.URI)
*/
@Override
public void addStatement(Resource subject, URI predicate, String literal, URI datatypeURI)
throws ModelRuntimeException {
this.addStatement(subject, predicate, getDelegatedModel().createDatatypeLiteral(literal,
datatypeURI));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* java.lang.String)
*/
@Override
public void addStatement(Resource subject, URI predicate, String literal)
throws ModelRuntimeException {
this.addStatement(getDelegatedModel().createStatement(subject, predicate,
getDelegatedModel().createPlainLiteral(literal)));
}
/*
* (non-Javadoc)
*
* @see org.ontoware.rdf2go.core.common.CommonModelWriter#addStatement(S)
*/
@Override
public void addStatement(Statement statement) throws ModelRuntimeException {
for(ModelChangedListener listener : this.modelChangeListener.keySet()) {
TriplePattern pattern = this.modelChangeListener.get(listener);
if(pattern == null || pattern.matches(statement)) {
listener.addedStatement(statement);
}
}
getDelegatedModel().addStatement(statement);
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(java.lang.String
* , org.ontoware.rdf2go.core.node.URI, java.lang.String, java.lang.String)
*/
@Override
public void addStatement(String subjectURIString, URI predicate, String literal,
String languageTag) throws ModelRuntimeException {
this.addStatement(getDelegatedModel().createStatement(
getDelegatedModel().createURI(subjectURIString), predicate,
getDelegatedModel().createLanguageTagLiteral(literal, languageTag)));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(java.lang.String
* , org.ontoware.rdf2go.core.node.URI, java.lang.String,
* org.ontoware.rdf2go.core.node.URI)
*/
@Override
public void addStatement(String subjectURIString, URI predicate, String literal, URI datatypeURI)
throws ModelRuntimeException {
this.addStatement(getDelegatedModel().createStatement(
getDelegatedModel().createURI(subjectURIString), predicate,
getDelegatedModel().createDatatypeLiteral(literal, datatypeURI)));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#addStatement(java.lang.String
* , org.ontoware.rdf2go.core.node.URI, java.lang.String)
*/
@Override
public void addStatement(String subjectURIString, URI predicate, String literal)
throws ModelRuntimeException {
this.addStatement(getDelegatedModel().createStatement(
getDelegatedModel().createURI(subjectURIString), predicate,
getDelegatedModel().createPlainLiteral(literal)));
}
// ///////////// remove
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.common.CommonModelWriter#removeAll(org.ontoware
* .rdf2go.core.common.CommonModelReader)
*/
@Override
public void removeAll(Iterator extends Statement> other) throws ModelRuntimeException {
while(other.hasNext()) {
this.removeStatement(other.next());
}
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* org.ontoware.rdf2go.core.node.Node)
*/
@Override
public void removeStatement(Resource subject, URI predicate, Node object)
throws ModelRuntimeException {
this.removeStatement(getDelegatedModel().createStatement(subject, predicate, object));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* java.lang.String, java.lang.String)
*/
@Override
public void removeStatement(Resource subject, URI predicate, String literal, String languageTag)
throws ModelRuntimeException {
this.removeStatement(getDelegatedModel().createStatement(subject, predicate,
getDelegatedModel().createLanguageTagLiteral(literal, languageTag)));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* java.lang.String, org.ontoware.rdf2go.core.node.URI)
*/
@Override
public void removeStatement(Resource subject, URI predicate, String literal, URI datatypeURI)
throws ModelRuntimeException {
this.removeStatement(subject, predicate, getDelegatedModel().createDatatypeLiteral(literal,
datatypeURI));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(org.ontoware
* .rdf2go.core.node.Resource, org.ontoware.rdf2go.core.node.URI,
* java.lang.String)
*/
@Override
public void removeStatement(Resource subject, URI predicate, String literal)
throws ModelRuntimeException {
this.removeStatement(getDelegatedModel().createStatement(subject, predicate,
getDelegatedModel().createPlainLiteral(literal)));
}
/*
* (non-Javadoc)
*
* @see org.ontoware.rdf2go.core.common.CommonModelWriter#removeStatement(S)
*/
@Override
public void removeStatement(Statement statement) throws ModelRuntimeException {
for(ModelChangedListener listener : this.modelChangeListener.keySet()) {
TriplePattern pattern = this.modelChangeListener.get(listener);
if(pattern == null || pattern.matches(statement)) {
listener.removedStatement(statement);
}
}
getDelegatedModel().removeStatement(statement);
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(java.lang
* .String, org.ontoware.rdf2go.core.node.URI, java.lang.String,
* java.lang.String)
*/
@Override
public void removeStatement(String subjectURIString, URI predicate, String literal,
String languageTag) throws ModelRuntimeException {
this.removeStatement(getDelegatedModel().createStatement(
getDelegatedModel().createURI(subjectURIString), predicate,
getDelegatedModel().createLanguageTagLiteral(literal, languageTag)));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(java.lang
* .String, org.ontoware.rdf2go.core.node.URI, java.lang.String,
* org.ontoware.rdf2go.core.node.URI)
*/
@Override
public void removeStatement(String subjectURIString, URI predicate, String literal,
URI datatypeURI) throws ModelRuntimeException {
this.removeStatement(getDelegatedModel().createStatement(
getDelegatedModel().createURI(subjectURIString), predicate,
getDelegatedModel().createDatatypeLiteral(literal, datatypeURI)));
}
/*
* (non-Javadoc)
*
* @see
* org.ontoware.rdf2go.core.triple.ModelWriter#removeStatement(java.lang
* .String, org.ontoware.rdf2go.core.node.URI, java.lang.String)
*/
@Override
public void removeStatement(String subjectURIString, URI predicate, String literal)
throws ModelRuntimeException {
this.removeStatement(getDelegatedModel().createStatement(
getDelegatedModel().createURI(subjectURIString), predicate,
getDelegatedModel().createPlainLiteral(literal)));
}
@Override
public void removeStatements(ResourceOrVariable subject, UriOrVariable predicate,
NodeOrVariable object) throws ModelRuntimeException {
ModelAddRemoveMemoryImpl toBeRemoved = new ModelAddRemoveMemoryImpl();
toBeRemoved.addAll(this.findStatements(subject, predicate, object));
this.removeAll(toBeRemoved.iterator());
this.getDelegatedModel().removeAll(toBeRemoved.iterator());
}
// ////////// diff
@Override
public synchronized void update(DiffReader diff) throws ModelRuntimeException {
for(ModelChangedListener listener : this.modelChangeListener.keySet()) {
listener.performedUpdate(diff);
}
getDelegatedModel().update(diff);
}
// //////////////////////////////////
// implement NotifyingModel
private Map modelChangeListener = new HashMap();
@Override
public void addModelChangedListener(ModelChangedListener listener, TriplePattern pattern) {
this.modelChangeListener.put(listener, pattern);
}
@Override
public void addModelChangedListener(ModelChangedListener listener) {
this.modelChangeListener.put(listener, null);
}
@Override
public void removeModelChangedListener(ModelChangedListener listener) {
this.modelChangeListener.remove(listener);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy