/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.model;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.annotation.Nullable;
/**
* @author tiwe
*/
public final class STMTCache {
@Nullable
private Set<STMT> multi;
@Nullable
private STMT single;
public STMTCache(@Nullable STMT single) {
this.single = single;
}
public void add(STMT stmt) {
if (multi == null) {
if (single == null) {
single = stmt;
} else if (!stmt.equals(single)) {
multi = new LinkedHashSet<STMT>();
multi.add(single);
multi.add(stmt);
}
} else {
multi.add(stmt);
}
}
public Iterator<STMT> iterator() {
if (multi == null) {
if (single == null) {
return Collections.<STMT> emptyList().iterator();
} else {
// return new SingletonIterator<STMT>(single);
return Collections.singleton(single).iterator();
}
} else {
return multi.iterator();
}
}
public boolean remove(STMT stmt) {
if (multi == null) {
if (stmt.equals(single)) {
single = null;
return true;
} else {
return false;
}
} else {
return multi.remove(stmt);
}
}
public String toString() {
if (multi != null) {
return multi.toString();
} else if (single != null) {
return single.toString();
} else {
return "";
}
}
}