Skip to content

Commit 8c526d4

Browse files
committed
Support the detection of moved enum constants
pmd/pmd@96bc9ef
1 parent 0ac6764 commit 8c526d4

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

src/main/java/gr/uom/java/xmi/UMLAttribute.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,19 @@ public String toQualifiedString() {
462462
sb.append(" ");
463463
sb.append(name);
464464
sb.append(" : ");
465-
sb.append(type.toQualifiedString());
465+
if(this instanceof UMLEnumConstant) {
466+
String string = type.toString();
467+
if(string.contains(".")) {
468+
String suffix = string.substring(string.lastIndexOf(".")+1, string.length());
469+
sb.append(suffix);
470+
}
471+
else {
472+
sb.append(type);
473+
}
474+
}
475+
else {
476+
sb.append(type.toQualifiedString());
477+
}
466478
return sb.toString();
467479
}
468480

src/main/java/gr/uom/java/xmi/diff/UMLAttributeDiff.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import gr.uom.java.xmi.UMLAnnotation;
1616
import gr.uom.java.xmi.UMLAttribute;
17+
import gr.uom.java.xmi.UMLEnumConstant;
1718
import gr.uom.java.xmi.UMLOperation;
1819
import gr.uom.java.xmi.UMLParameter;
1920
import gr.uom.java.xmi.VariableDeclarationContainer;
@@ -373,6 +374,9 @@ public boolean encapsulated() {
373374
}
374375

375376
private boolean changeTypeCondition() {
377+
if(removedAttribute instanceof UMLEnumConstant && addedAttribute instanceof UMLEnumConstant) {
378+
return false;
379+
}
376380
return (isTypeChanged() || isQualifiedTypeChanged()) && !enumConstantsDeclaredInTheSameEnumDeclarationType();
377381
}
378382

src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1617,7 +1617,7 @@ private MoveAttributeRefactoring processPairOfAttributes(UMLAttribute addedAttri
16171617
return null;
16181618
}
16191619
if(addedAttribute.getName().equals(removedAttribute.getName()) &&
1620-
addedAttribute.getType().equals(removedAttribute.getType())) {
1620+
(addedAttribute.getType().equals(removedAttribute.getType()) || (removedAttribute instanceof UMLEnumConstant && addedAttribute instanceof UMLEnumConstant))) {
16211621
if(isSubclassOf(removedAttribute.getClassName(), addedAttribute.getClassName())) {
16221622
UMLAttributeDiff attributeDiff = new UMLAttributeDiff(removedAttribute, addedAttribute, Collections.emptyList());
16231623
if(!movedAttributeDiffList.contains(attributeDiff)) {
@@ -1944,12 +1944,15 @@ public List<UMLAttribute> getAddedAttributesInCommonClasses() {
19441944
List<UMLAttribute> addedAttributes = new ArrayList<UMLAttribute>();
19451945
for(UMLClassDiff classDiff : commonClassDiffList) {
19461946
addedAttributes.addAll(classDiff.getAddedAttributes());
1947+
addedAttributes.addAll(classDiff.getAddedEnumConstants());
19471948
}
19481949
for(UMLClassMoveDiff classDiff : classMoveDiffList) {
19491950
addedAttributes.addAll(classDiff.getAddedAttributes());
1951+
addedAttributes.addAll(classDiff.getAddedEnumConstants());
19501952
}
19511953
for(UMLClassRenameDiff classDiff : classRenameDiffList) {
19521954
addedAttributes.addAll(classDiff.getAddedAttributes());
1955+
addedAttributes.addAll(classDiff.getAddedEnumConstants());
19531956
}
19541957
return addedAttributes;
19551958
}
@@ -1958,12 +1961,15 @@ public List<UMLAttribute> getRemovedAttributesInCommonClasses() {
19581961
List<UMLAttribute> removedAttributes = new ArrayList<UMLAttribute>();
19591962
for(UMLClassDiff classDiff : commonClassDiffList) {
19601963
removedAttributes.addAll(classDiff.getRemovedAttributes());
1964+
removedAttributes.addAll(classDiff.getRemovedEnumConstants());
19611965
}
19621966
for(UMLClassMoveDiff classDiff : classMoveDiffList) {
19631967
removedAttributes.addAll(classDiff.getRemovedAttributes());
1968+
removedAttributes.addAll(classDiff.getRemovedEnumConstants());
19641969
}
19651970
for(UMLClassRenameDiff classDiff : classRenameDiffList) {
19661971
removedAttributes.addAll(classDiff.getRemovedAttributes());
1972+
removedAttributes.addAll(classDiff.getRemovedEnumConstants());
19671973
}
19681974
return removedAttributes;
19691975
}

0 commit comments

Comments
 (0)