package net.enilink.komma.edit.ui.wizards; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; import net.enilink.vocab.owl.AnnotationProperty; import net.enilink.vocab.owl.DatatypeProperty; import net.enilink.vocab.owl.DeprecatedProperty; import net.enilink.vocab.owl.FunctionalProperty; import net.enilink.vocab.owl.ObjectProperty; import net.enilink.komma.core.URI; import net.enilink.komma.em.concepts.IProperty; public class PropertyConnectionSorter extends ViewerSorter { @Override public int category(Object element) { if (element instanceof AnnotationProperty) { return 1; } if (element instanceof DatatypeProperty) { return 2; } if (element instanceof DeprecatedProperty) { return 3; } if (element instanceof FunctionalProperty) { return 4; } if (element instanceof ObjectProperty) { return 5; } return 0; } @Override public int compare(Viewer viewer, Object e1, Object e2) { int cat1 = category(e1); int cat2 = category(e2); if (cat1 != cat2) { return cat1 - cat2; } if (!(e1 instanceof IProperty)) { return 1; } if (!(e2 instanceof IProperty)) { return -1; } URI u1 = ((IProperty) e1).getURI(); URI u2 = ((IProperty) e2).getURI(); if (u1.equals(u2)) { return 0; } int cmpVal = getComparator().compare(u1.namespace().toString(), u2.namespace().toString()); if (0 == cmpVal) { cmpVal = getComparator().compare(u1.localPart(), u2.localPart()); } return cmpVal; } }