 |
public class StatementTemplates extends Resource
implements IStatementAddable
{
Collection fItems = new ArrayList();
private class StatementTemplate
implements
ISubject,
IPredicate,
IObject,
IStatementTemplate
{
private boolean fSameSubject;
private boolean fSamePredicate;
private boolean fSameObject;
private boolean fAddIfMissing;
private Resource fSubject;
private Resource fPredicate;
private Resource fObject;
public StatementTemplate(
boolean addIfMissing) {
fAddIfMissing = addIfMissing;
fItems.add(this);
}
public ISubject addStatementWith() {
return this;
}
public IPredicate sameSubject() {
fSameSubject = true;
return this;
}
public IPredicate subject(
Resource subject) {
fSubject = subject;
return this;
}
public IObject samePredicate() {
fSamePredicate = true;
return this;
}
public IObject predicate(
Resource predicate) {
fPredicate = predicate;
return this;
}
public IStatementAddable sameObject() {
fSameObject = true;
return StatementTemplates.this;
}
public IStatementAddable object(
Resource object) {
fObject = object;
return StatementTemplates.this;
}
public void apply(Resource subject,
Resource predicate,
Resource object) {
if (!fSameSubject) subject = fSubject;
if (!fSamePredicate) predicate = fPredicate;
if (!fSameObject) object = fObject;
if (fAddIfMissing) {
if (subject.hasStatementFor(predicate))
return;
}
if(getModel().statementExists(subject,
predicate,
object)) {
return;
}
subject.property(predicate,object);
}
}
public IStatementTemplate ifMissing() {
return new StatementTemplate(true);
}
public IStatementTemplate always() {
return new StatementTemplate(false);
}
public void apply(Resource subject,
Resource property,
Resource object) {
Iterator iter = fItems.iterator();
while (iter.hasNext()) {
StatementTemplate template =
(StatementTemplate) iter.next();
template.apply(subject,property,object);
}
}
}
|
|
 |