private boolean sourceClassImportsSuperclassOfTargetClassAfterRefactoring(String sourceClassName, String targetClassName) { UMLClassBaseDiff targetClassDiff = getUMLClassDiff(targetClassName); if(targetClassDiff != null && targetClassDiff.getSuperclass() != null) { UMLClassBaseDiff superclassOfTargetClassDiff = getUMLClassDiff(targetClassDiff.getSuperclass()); if(superclassOfTargetClassDiff != null) { return sourceClassImportsTargetClassAfterRefactoring(sourceClassName, superclassOfTargetClassDiff.getNextClassName()); } } return false; }
deleteAddedOperation(addedOperation); else if(sourceClassImportsTargetClassAfterRefactoring(className, addedOperation.getClassName()) || sourceClassImportsSuperclassOfTargetClassAfterRefactoring(className, addedOperation.getClassName())) {
private MoveAttributeRefactoring processPairOfAttributes(UMLAttribute addedAttribute, UMLAttribute removedAttribute) { if(addedAttribute.getName().equals(removedAttribute.getName()) && addedAttribute.getType().equals(removedAttribute.getType())) { if(isSubclassOf(removedAttribute.getClassName(), addedAttribute.getClassName())) { PullUpAttributeRefactoring pullUpAttribute = new PullUpAttributeRefactoring(removedAttribute, addedAttribute); return pullUpAttribute; } else if(isSubclassOf(addedAttribute.getClassName(), removedAttribute.getClassName())) { PushDownAttributeRefactoring pushDownAttribute = new PushDownAttributeRefactoring(removedAttribute, addedAttribute); return pushDownAttribute; } else if(sourceClassImportsTargetClassAfterRefactoring(removedAttribute.getClassName(), addedAttribute.getClassName()) || targetClassImportsSourceClassBeforeRefactoring(removedAttribute.getClassName(), addedAttribute.getClassName())) { MoveAttributeRefactoring moveAttribute = new MoveAttributeRefactoring(removedAttribute, addedAttribute); return moveAttribute; } } return null; }