Skip to content
Snippets Groups Projects
Commit 4fd569a0 authored by Simon Barner's avatar Simon Barner
Browse files

HierarchicalNameComparator: Change from EObject to Object

* All clients of this class performed a type check

Issue-Ref: 3223
Issue-Url: https://af3-developer.fortiss.org/issues/3223



Signed-off-by: default avatarSimon Barner <barner@fortiss.org>
parent 5be1d922
No related branches found
No related tags found
1 merge request!293223: Refactorying of hierarchical name (viewer) comparator
ColumnHandle.java 8fc5f04cbb0127e5df8c7a9e3b2620502bf93716 GREEN
GenericAnnotationView.java 0fea0eafedcf1d24ea9faa34d84f3044443f951f YELLOW
GenericAnnotationView.java 3986c6ab6f1b5f9ec04780c3d6256e7c70b91c1d YELLOW
......@@ -17,7 +17,6 @@ package org.fortiss.tooling.base.ui.annotation.view.generic;
import static org.fortiss.tooling.base.ui.annotation.editingsupport.EditingSupportFactory.createEditingSupport;
import static org.fortiss.tooling.base.ui.annotation.labelprovider.LabelProviderFactory.createLabelProvider;
import static org.fortiss.tooling.kernel.utils.HierarchicalNameComparator.compareByNameIdHashCode;
import java.lang.reflect.Method;
import java.util.Collection;
......@@ -516,7 +515,7 @@ public class GenericAnnotationView extends AnnotationViewPartBase {
((AnnotationEntry)o2).getModelElement());
}
return compareByNameIdHashCode(o1, o2);
return super.compare(viewer, o1, o2);
}
});
......
......@@ -4,7 +4,7 @@ CopyPasteUtils.java bbc5cf9c9dc03ebf8dc75d42c919fe6eb60b388e GREEN
DataBindingUtils.java 6ae66457694227b69c13c092ef62babdd4a2a137 GREEN
DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN
EObjectSelectionUtils.java 128cf8f96c6b9478171dff3deda662d5934f5f44 GREEN
HierarchicalNameViewerComparator.java f9a2a8add3ea2bedfa40bcde25b35389cb2dd005 YELLOW
HierarchicalNameViewerComparator.java 199d82e392d4e437810cc65c0fc521dab52038e0 YELLOW
KernelUIUtils.java 46d3279ef3523b104f89a6c526109f72d36f72f2 GREEN
ObservableUtils.java 34abfd1dfaf9c0acbb31caf1f525e7b39416c116 GREEN
PropertiesConstantUtils.java 59b1a1e4d594bb98db3aa396f2ff6474ba405920 GREEN
......
......@@ -15,8 +15,6 @@
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.util;
import static org.fortiss.tooling.kernel.utils.HierarchicalNameComparator.compareByNameIdHashCode;
import java.util.Comparator;
import org.eclipse.emf.ecore.EObject;
......@@ -38,10 +36,6 @@ public class HierarchicalNameViewerComparator extends ViewerComparator {
/** {@inheritDoc} */
@Override
public int compare(Viewer viewer, Object o1, Object o2) {
if(o1 instanceof EObject && o2 instanceof EObject) {
return comp.compare((EObject)o1, (EObject)o2);
}
return compareByNameIdHashCode(o1, o2);
return comp.compare(o1, o2);
}
}
......@@ -4,7 +4,7 @@ EMFResourceUtils.java 979d0e1f4f66a2b3e715d2da0ebef6493f547fd7 GREEN
EcoreSerializerBase.java 0a0c2969d793d2e68094c55c8f7b0a662ef6e5d5 GREEN
EcoreUtils.java ffb428de083b536cd06e875e75484706f2149c2a GREEN
ExtensionPointUtils.java 7ce63242b49eb9a7cd4eaadd223f5ebce1dfd75b GREEN
HierarchicalNameComparator.java 7bd2d55a57374134ba210852ff94956886947a32 GREEN
HierarchicalNameComparator.java 6face1b673126701a0721af48ead2f9766c17d46 YELLOW
IdentifierUtils.java fff43dc4e84cdd89c3ece4f5d9d89aec4b0749c2 GREEN
JavaUtils.java 65cdadfb9137a240ad59992eacf53a15b7f20804 GREEN
KernelModelElementUtils.java a7fa0e2596e06195634e3163b23fa376b2420920 GREEN
......
......@@ -23,12 +23,13 @@ import org.fortiss.tooling.kernel.model.IIdLabeled;
import org.fortiss.tooling.kernel.model.INamedElement;
/**
* Comparator whose {@link #compare(EObject, EObject)} method sorts {@link EObject} model elements
* according to hierarchy level. Elements within one hierarchy level are sorted by name.
* Comparator whose {@link #compare(Object, Object)} method sorts model elements
* according to hierarchy level (in case they are {@link EObject}s. Elements within one hierarchy
* level (or non-{@link EObject}s) are sorted by name, ID, and hash code.
*
* @author eder, diewald, barner
*/
public class HierarchicalNameComparator implements java.util.Comparator<EObject> {
public class HierarchicalNameComparator implements java.util.Comparator<Object> {
/**
* Compare two {@link Object}s by
......@@ -38,7 +39,7 @@ public class HierarchicalNameComparator implements java.util.Comparator<EObject>
* <li>Hash code (otherwise)</li>
* </ul>
*/
public static int compareByNameIdHashCode(Object o1, Object o2) {
private int compareByNameIdHashCode(Object o1, Object o2) {
// Compare elements by name if they are INamedElements
if(o1 instanceof INamedElement && o2 instanceof INamedElement) {
// Elements are at the same level -> compare by name
......@@ -65,14 +66,20 @@ public class HierarchicalNameComparator implements java.util.Comparator<EObject>
/** {@inheritDoc} */
@Override
public int compare(EObject modelElement1, EObject modelElement2) {
public int compare(Object o1, Object o2) {
int modelElement1Level = getModelElementLevel(modelElement1);
int modelElement2Level = getModelElementLevel(modelElement2);
if(!(o1 instanceof EObject) || !(o2 instanceof EObject)) {
return compareByNameIdHashCode(o1, o2);
}
EObject modelElement1 = (EObject)o1;
EObject modelElement2 = (EObject)o2;
EObject e1 = modelElement1;
EObject e2 = modelElement2;
int modelElement1Level = getModelElementLevel(modelElement1);
int modelElement2Level = getModelElementLevel(modelElement2);
if(modelElement1Level < modelElement2Level) {
// Element1 is higher than element2: Get ancestor of element2 that is at the
// level as the element1.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment