if(matcher.match(removedClass, addedClass, renamedFile)) { if(!conflictingMoveOfTopLevelClass(removedClass, addedClass) && !innerClassWithTheSameName(removedClass, addedClass)) { UMLClassRenameDiff classRenameDiff = new UMLClassRenameDiff(removedClass, addedClass, this); diffSet.add(classRenameDiff); minClassRenameDiff.process(); classRenameDiffList.add(minClassRenameDiff); addedClasses.remove(minClassRenameDiff.getRenamedClass()); removedClassIterator.remove(); if(classRename.isInnerClassMove(classMove)) { innerClassMoveDiffList.add(classMove);
private List<UMLOperation> getAddedOperationsInMovedAndRenamedClasses() { List<UMLOperation> addedOperations = new ArrayList<UMLOperation>(); for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { addedOperations.addAll(classDiff.getAddedOperations()); } for(UMLClassMoveDiff classDiff : classMoveDiffList) { addedOperations.addAll(classDiff.getAddedOperations()); } for(UMLClassRenameDiff classDiff : classRenameDiffList) { addedOperations.addAll(classDiff.getAddedOperations()); } return addedOperations; }
private List<UMLOperationBodyMapper> getOperationBodyMappersInMovedAndRenamedClasses() { List<UMLOperationBodyMapper> mappers = new ArrayList<UMLOperationBodyMapper>(); for(UMLClassMoveDiff classDiff : classMoveDiffList) { mappers.addAll(classDiff.getOperationBodyMapperList()); } for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { mappers.addAll(classDiff.getOperationBodyMapperList()); } for(UMLClassRenameDiff classDiff : classRenameDiffList) { mappers.addAll(classDiff.getOperationBodyMapperList()); } return mappers; }
private List<Refactoring> getRenameClassRefactorings() { List<Refactoring> refactorings = new ArrayList<Refactoring>(); for(UMLClassRenameDiff classRenameDiff : classRenameDiffList) { Refactoring refactoring = null; if(classRenameDiff.samePackage()) refactoring = new RenameClassRefactoring(classRenameDiff.getOriginalClass(), classRenameDiff.getRenamedClass()); else refactoring = new MoveAndRenameClassRefactoring(classRenameDiff.getOriginalClass(), classRenameDiff.getRenamedClass()); refactorings.add(refactoring); } return refactorings; }
@Override public int compare(UMLClassRenameDiff o1, UMLClassRenameDiff o2) { double nameDistance1 = o1.getRenamedClass().normalizedNameDistance(o1.getOriginalClass()); double nameDistance2 = o2.getRenamedClass().normalizedNameDistance(o2.getOriginalClass()); if(nameDistance1 != nameDistance2) { return Double.compare(nameDistance1, nameDistance2); } else { double packageDistance1 = o1.getRenamedClass().normalizedPackageNameDistance(o1.getOriginalClass()); double packageDistance2 = o2.getRenamedClass().normalizedPackageNameDistance(o2.getOriginalClass()); return Double.compare(packageDistance1, packageDistance2); } } }
private UMLClassBaseDiff getUMLClassDiffWithAttribute(Replacement pattern) { for(UMLClassDiff classDiff : commonClassDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getBefore()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassMoveDiff classDiff : classMoveDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getBefore()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getBefore()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassRenameDiff classDiff : classRenameDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getBefore()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } return null; }
private UMLClassBaseDiff getUMLClassDiff(String className) { for(UMLClassDiff classDiff : commonClassDiffList) { if(classDiff.matches(className)) return classDiff; } for(UMLClassMoveDiff classDiff : classMoveDiffList) { if(classDiff.matches(className)) return classDiff; } for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { if(classDiff.matches(className)) return classDiff; } for(UMLClassRenameDiff classDiff : classRenameDiffList) { if(classDiff.matches(className)) return classDiff; } return null; }
refactorings.addAll(classDiff.getRefactorings()); extractRenamePatterns(classDiff, map);
private String isRenamedClass(UMLClass umlClass) { for(UMLClassRenameDiff renameDiff : classRenameDiffList) { if(renameDiff.getOriginalClass().equals(umlClass)) return renameDiff.getRenamedClass().getName(); } return null; }
private UMLClassBaseDiff getUMLClassDiffWithExistingAttributeAfter(Replacement pattern) { for(UMLClassDiff classDiff : commonClassDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassMoveDiff classDiff : classMoveDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassRenameDiff classDiff : classRenameDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) != null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } return null; }
private UMLClassBaseDiff getUMLClassDiff(UMLType type) { for(UMLClassDiff classDiff : commonClassDiffList) { if(classDiff.matches(type)) return classDiff; } for(UMLClassMoveDiff classDiff : classMoveDiffList) { if(classDiff.matches(type)) return classDiff; } for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { if(classDiff.matches(type)) return classDiff; } for(UMLClassRenameDiff classDiff : classRenameDiffList) { if(classDiff.matches(type)) return classDiff; } return null; }
private boolean outerClassMovedOrRenamed(UMLClass umlClass) { if(!umlClass.isTopLevel()) { for(UMLClassMoveDiff diff : classMoveDiffList) { if(diff.getOriginalClass().getName().equals(umlClass.getPackageName()) || diff.getMovedClass().getName().equals(umlClass.getPackageName())) { return true; } } for(UMLClassRenameDiff diff : classRenameDiffList) { if(diff.getOriginalClass().getName().equals(umlClass.getPackageName()) || diff.getRenamedClass().getName().equals(umlClass.getPackageName())) { return true; } } } return false; }
private UMLClassBaseDiff getUMLClassDiffWithNewAttributeAfter(Replacement pattern) { for(UMLClassDiff classDiff : commonClassDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) == null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassMoveDiff classDiff : classMoveDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) == null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassMoveDiff classDiff : innerClassMoveDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) == null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } for(UMLClassRenameDiff classDiff : classRenameDiffList) { if(classDiff.findAttributeInOriginalClass(pattern.getAfter()) == null && classDiff.findAttributeInNextClass(pattern.getAfter()) != null) return classDiff; } return null; }