From 5ff9d0d575d0e81ebcf69dc68c5d217df7cad699 Mon Sep 17 00:00:00 2001 From: Andreas Bayha <bayha@fortiss.org> Date: Thu, 13 Aug 2020 16:54:25 +0200 Subject: [PATCH] YELLOW Issue-Ref: 4014 Issue-Url: https://af3-developer.fortiss.org/issues/4014 Signed-off-by: Andreas Bayha <bayha@fortiss.org> --- .../fortiss/tooling/base/annotation/.ratings | 2 +- .../base/annotation/AnnotationEntry.java | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings index e567fc04c..abca4e511 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings @@ -1,3 +1,3 @@ -AnnotationEntry.java d5f58056645ef5336d94c1030b26fab83c571c55 YELLOW +AnnotationEntry.java 50d8790560ed60ba534b9d84a42f985e8f3e92a4 YELLOW AnnotationValueService.java 01fc46fb381854b16ce78779217ffc7c29036c14 GREEN IAnnotationValueService.java 81ff274a7b2d4c58e7b8485db857eb83f99710d0 GREEN diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java index d5f580566..50d879056 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java @@ -238,8 +238,24 @@ public class AnnotationEntry implements Comparable<AnnotationEntry> { IModelElement thisModelElement = this.getModelElement(); if(thisModelElement instanceof INamedElement && otherModelElement instanceof INamedElement) { - return ((INamedElement)thisModelElement).getName() - .compareTo(((INamedElement)otherModelElement).getName()); + INamedElement thisNamed = (INamedElement)thisModelElement; + INamedElement otherNamed = (INamedElement)otherModelElement; + + int stringCompare = thisNamed.getName().compareTo(otherNamed.getName()); + + // In case the name is some special character, it shall be in the end of e.g. lists. + if(!thisNamed.getName().matches("^[a-zA-Z0-9^].*")) { + if(otherNamed.getName().matches("^[a-zA-Z0-9].*")) { + return stringCompare * -1; + } + } + if(!otherNamed.getName().matches("^[a-zA-Z0-9^].*")) { + if(thisNamed.getName().matches("^[a-zA-Z0-9].*")) { + return stringCompare * -1; + } + } + + return stringCompare; } return 0; -- GitLab