
uk.ac.manchester.cs.owl.owlapi.MapPointer Maven / Gradle / Ivy
package uk.ac.manchester.cs.owl.owlapi;
import java.io.Serializable;
import java.util.Collection;
import java.util.Set;
import org.semanticweb.owlapi.model.AxiomType;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLAxiomVisitorEx;
import org.semanticweb.owlapi.util.CollectionFactory;
import org.semanticweb.owlapi.util.MultiMap;
import uk.ac.manchester.cs.owl.owlapi.InitVisitorFactory.InitCollectionVisitor;
import uk.ac.manchester.cs.owl.owlapi.InitVisitorFactory.InitVisitor;
@SuppressWarnings("javadoc")
public class MapPointer implements Internals.Pointer, Serializable {
private static final long serialVersionUID = 30406L;
private final MultiMap map;
private final AxiomType> type;
private final OWLAxiomVisitorEx> visitor;
private boolean initialized;
protected final Internals i;
public MapPointer(AxiomType> t, OWLAxiomVisitorEx> v, boolean initialized,
Internals i) {
type = t;
visitor = v;
map = new MultiMap();
this.initialized = initialized;
this.i = i;
}
public boolean isInitialized() {
return initialized;
}
@SuppressWarnings("unchecked")
public void init() {
if (initialized) {
return;
}
initialized = true;
if (visitor == null) {
return;
}
if (visitor instanceof InitVisitor) {
for (V ax : (Set) i.getValues(i.getAxiomsByType(), type)) {
K key = ax.accept((InitVisitor) visitor);
if (key != null) {
map.put(key, ax);
}
}
} else {
for (V ax : (Set) i.getValues(i.getAxiomsByType(), type)) {
Collection keys = ax.accept((InitCollectionVisitor) visitor);
for (K key : keys) {
map.put(key, ax);
}
}
}
}
@Override
public String toString() {
return initialized + map.toString();
}
public Set keySet() {
return CollectionFactory.getCopyOnRequestSetFromMutableCollection(map.keySet());
}
public Set getValues(K key) {
return CollectionFactory.getCopyOnRequestSetFromMutableCollection(map.get(key));
}
public boolean hasValues(K key) {
return map.containsKey(key);
}
public boolean put(K key, V value) {
return map.put(key, value);
}
public boolean remove(K key, V value) {
return map.remove(key, value);
}
public boolean containsKey(K key) {
return map.containsKey(key);
}
public boolean contains(K key, V value) {
return map.contains(key, value);
}
public Set getAllValues() {
return map.getAllValues();
}
public int size() {
return map.size();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy