/**
* <copyright>
* </copyright>
*
* $Id$
*/
package net.enilink.komma.owl.edit;
import java.util.Arrays;
import java.util.Collection;
import java.util.Set;
import net.enilink.composition.annotations.Iri;
import net.enilink.vocab.owl.AnnotationProperty;
import net.enilink.vocab.owl.Class;
import net.enilink.vocab.owl.DatatypeProperty;
import net.enilink.vocab.owl.OWL;
import net.enilink.vocab.owl.ObjectProperty;
import net.enilink.vocab.owl.Ontology;
import net.enilink.komma.rdfs.edit.RDFSItemProviderAdapterFactory;
import net.enilink.komma.core.URIs;
import net.enilink.komma.em.concepts.IClass;
import net.enilink.komma.em.concepts.IProperty;
import net.enilink.komma.em.concepts.IResource;
/**
* This is the factory that is used to provide the interfaces needed to support
* Viewers.
*/
public class OWLItemProviderAdapterFactory extends
RDFSItemProviderAdapterFactory {
public OWLItemProviderAdapterFactory() {
super(OWLEditPlugin.INSTANCE, URIs.createURI(Class.class
.getPackage().getAnnotation(Iri.class).value()));
}
@Override
protected Collection<IClass> getTypes(Object object) {
// classes
if (object instanceof AnnotationProperty) {
return Arrays.asList(((IResource) object).getEntityManager().find(
OWL.TYPE_ANNOTATIONPROPERTY, IClass.class));
}
if (object instanceof DatatypeProperty) {
return Arrays.asList(((IResource) object).getEntityManager().find(
OWL.TYPE_DATATYPEPROPERTY, IClass.class));
}
if (object instanceof ObjectProperty) {
return Arrays.asList(((IResource) object).getEntityManager().find(
OWL.TYPE_OBJECTPROPERTY, IClass.class));
}
if (object instanceof IClass) {
return Arrays.asList(((IResource) object).getEntityManager().find(
OWL.TYPE_CLASS, IClass.class));
}
// others
Set<IClass> classes = ((IResource) object).getDirectNamedClasses()
.toSet();
return classes;
}
@Override
protected Object createItemProvider(Object object,
Collection<IClass> types, Object providerType) {
if (object instanceof IProperty) {
return new OWLPropertyItemProvider(this, resourceLocator, types);
}
if (object instanceof IClass) {
return new OWLClassItemProvider(this, resourceLocator, types);
}
if (object instanceof Ontology) {
return new OWLResourceItemProvider(this, resourceLocator, types);
}
return super.createItemProvider(object, types, providerType);
}
}