private static int totalOccurrences(Set<CandidateAttributeRefactoring> candidates) { int totalCount = 0; for(CandidateAttributeRefactoring candidate : candidates) { totalCount += candidate.getOccurrences(); } return totalCount; }
private void extractRenamePatterns(UMLClassBaseDiff classDiff, Map<Replacement, Set<CandidateAttributeRefactoring>> map) { for(CandidateAttributeRefactoring candidate : classDiff.getCandidateAttributeRenames()) { String before = PrefixSuffixUtils.normalize(candidate.getOriginalVariableName()); String after = PrefixSuffixUtils.normalize(candidate.getRenamedVariableName()); Replacement renamePattern = new Replacement(before, after, ReplacementType.VARIABLE_NAME); if(map.containsKey(renamePattern)) { map.get(renamePattern).add(candidate); } else { Set<CandidateAttributeRefactoring> set = new LinkedHashSet<CandidateAttributeRefactoring>(); set.add(candidate); map.put(renamePattern, set); } } }
refactorings.addAll(mapper.getRefactorings()); for(CandidateAttributeRefactoring candidate : mapper.getCandidateAttributeRenames()) { String before = PrefixSuffixUtils.normalize(candidate.getOriginalVariableName()); String after = PrefixSuffixUtils.normalize(candidate.getRenamedVariableName()); Replacement renamePattern = new Replacement(before, after, ReplacementType.VARIABLE_NAME); if(map.containsKey(renamePattern)) { Set<CandidateAttributeRefactoring> set = map.get(pattern); for(CandidateAttributeRefactoring candidate : set) { if(candidate.getOriginalVariableDeclaration() == null && candidate.getRenamedVariableDeclaration() == null) { if(a1 != null && a2 != null) { if((!originalClass.containsAttributeWithName(pattern.getAfter()) || cyclicRename(map, pattern)) && candidate.setOriginalAttribute(a1); candidate.setRenamedAttribute(a2); if(a1 != null) candidate.setOriginalVariableDeclaration(a1.getVariableDeclaration()); if(a2 != null) candidate.setRenamedVariableDeclaration(a2.getVariableDeclaration()); candidateAttributeRenames.add(candidate); else if(candidate.getOriginalVariableDeclaration() != null) { if(a2 != null) { RenameVariableRefactoring ref = new RenameVariableRefactoring( candidate.getOriginalVariableDeclaration(), a2.getVariableDeclaration(), candidate.getOperationBefore(), candidate.getOperationAfter()); if(!refactorings.contains(ref)) { refactorings.add(ref);
Set<CandidateAttributeRefactoring> set = map.get(pattern); for(CandidateAttributeRefactoring candidate : set) { if(candidate.getOriginalVariableDeclaration() == null && candidate.getRenamedVariableDeclaration() == null) { if(diff != null) { UMLAttribute a1 = diff.findAttributeInOriginalClass(pattern.getBefore()); else if(candidate.getOriginalVariableDeclaration() != null) { UMLClassBaseDiff diff1 = getUMLClassDiffWithExistingAttributeAfter(pattern); UMLClassBaseDiff diff2 = getUMLClassDiffWithNewAttributeAfter(pattern); if(diff1 != null) { UMLAttribute a2 = diff1.findAttributeInNextClass(pattern.getAfter()); if(candidate.getOriginalVariableDeclaration().isAttribute()) { UMLClassBaseDiff originalClassDiff = getUMLClassDiff(candidate.getOriginalAttribute().getClassName()); if(originalClassDiff != null && originalClassDiff.removedAttributes.contains(candidate.getOriginalAttribute())) { ReplaceAttributeRefactoring ref = new ReplaceAttributeRefactoring(candidate.getOriginalAttribute(), a2, set); if(!refactorings.contains(ref)) { refactorings.add(ref); if(candidate.getOriginalVariableDeclaration().isAttribute()) { UMLClassBaseDiff originalClassDiff = getUMLClassDiff(candidate.getOriginalAttribute().getClassName()); if(originalClassDiff != null && originalClassDiff.removedAttributes.contains(candidate.getOriginalAttribute())) { MoveAndRenameAttributeRefactoring ref = new MoveAndRenameAttributeRefactoring(candidate.getOriginalAttribute(), a2, set); if(!refactorings.contains(ref)) { refactorings.add(ref);
(!operation1.getAllVariables().contains(replacement.getAfter()) || cyclicRename(finalConsistentRenames, replacement)) && (!operation2.getAllVariables().contains(replacement.getBefore()) || cyclicRename(finalConsistentRenames, replacement))) { CandidateAttributeRefactoring candidate = new CandidateAttributeRefactoring( replacement.getBefore(), replacement.getAfter(), operation1, operation2, replacementOccurrenceMap.get(replacement)); if(v1 != null) candidate.setOriginalVariableDeclaration(v1); if(v2 != null) candidate.setRenamedVariableDeclaration(v2); this.candidateAttributeRenames.add(candidate);