|
15 | 15 | import org.jetbrains.annotations.Nullable; |
16 | 16 | import org.jetbrains.research.groups.ml_methods.refactoring.CalculatedRefactoring; |
17 | 17 | import org.jetbrains.research.groups.ml_methods.refactoring.MoveToClassRefactoring; |
| 18 | +import org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringFeatures; |
18 | 19 | import org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringReporter; |
19 | 20 | import org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringSessionInfo; |
| 21 | +import org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringSessionInfoRenderer; |
20 | 22 | import org.jetbrains.research.groups.ml_methods.utils.ArchitectureReloadedBundle; |
21 | 23 | import org.jetbrains.research.groups.ml_methods.utils.ExportResultsUtil; |
22 | 24 | import org.jetbrains.research.groups.ml_methods.utils.RefactoringUtil; |
|
27 | 29 | import java.awt.event.MouseEvent; |
28 | 30 | import java.awt.event.MouseListener; |
29 | 31 | import java.io.IOException; |
30 | | -import java.util.ArrayList; |
| 32 | +import java.util.*; |
31 | 33 | import java.util.List; |
32 | | -import java.util.Map; |
33 | | -import java.util.UUID; |
34 | 34 | import java.util.function.Predicate; |
35 | 35 | import java.util.stream.Collectors; |
36 | 36 |
|
@@ -62,14 +62,20 @@ class ClassRefactoringPanel extends JPanel { |
62 | 62 | private final Map<CalculatedRefactoring, String> warnings; |
63 | 63 | private boolean isFieldDisabled; |
64 | 64 | private final List<CalculatedRefactoring> refactorings; |
65 | | - private final UUID uuid = UUID.randomUUID(); |
| 65 | + private final Map<MoveToClassRefactoring, RefactoringFeatures> refactoringFeatures; |
66 | 66 |
|
67 | | - private final @NotNull MetricsRun metricsRun; |
| 67 | + private final UUID uuid = UUID.randomUUID(); |
68 | 68 |
|
69 | 69 | ClassRefactoringPanel(List<CalculatedRefactoring> refactorings, @NotNull AnalysisScope scope, @NotNull MetricsRun metricsRun) { |
70 | 70 | this.scope = scope; |
71 | 71 | this.refactorings = refactorings; |
72 | | - this.metricsRun = metricsRun; |
| 72 | + |
| 73 | + refactoringFeatures = refactorings.stream().collect( |
| 74 | + Collectors.toMap( |
| 75 | + CalculatedRefactoring::getRefactoring, |
| 76 | + it -> RefactoringFeatures.extractFeatures(it.getRefactoring(), metricsRun) |
| 77 | + ) |
| 78 | + ); |
73 | 79 |
|
74 | 80 | setLayout(new BorderLayout()); |
75 | 81 | model = new RefactoringsTableModel(RefactoringUtil.filter(refactorings)); |
@@ -173,16 +179,25 @@ private void refactorSelected() { |
173 | 179 | doRefactorButton.setEnabled(false); |
174 | 180 | selectAllButton.setEnabled(false); |
175 | 181 | table.setEnabled(false); |
176 | | - final List<MoveToClassRefactoring> selectedRefactorings = model.pullSelected().stream().map(CalculatedRefactoring::getRefactoring).collect(Collectors.toList()); |
177 | | - final List<MoveToClassRefactoring> rejectedRefactorings = new ArrayList<>(); |
178 | | - for (int index = 0; index < model.getRowCount(); ++index) { |
179 | | - rejectedRefactorings.add(model.getRefactoring(index).getRefactoring()); |
180 | | - } |
181 | | - rejectedRefactorings.removeAll(selectedRefactorings); |
182 | 182 |
|
183 | | - RefactoringSessionInfo info = new RefactoringSessionInfo(selectedRefactorings, rejectedRefactorings, metricsRun); |
| 183 | + final Set<MoveToClassRefactoring> selectableRefactorings = model.pullSelectable().stream().map(CalculatedRefactoring::getRefactoring).collect(Collectors.toSet()); |
| 184 | + final Set<MoveToClassRefactoring> selectedRefactorings = model.pullSelected().stream().map(CalculatedRefactoring::getRefactoring).collect(Collectors.toSet()); |
| 185 | + |
| 186 | + Set<MoveToClassRefactoring> appliedRefactorings = RefactoringsApplier.moveRefactoring(new ArrayList<>(selectedRefactorings), scope, model); |
| 187 | + model.setAppliedRefactorings(appliedRefactorings.stream().map(m -> new CalculatedRefactoring(m, 0)).collect(Collectors.toSet())); |
| 188 | + |
| 189 | + Set<MoveToClassRefactoring> uncheckedRefactorings = new HashSet<>(selectableRefactorings); |
| 190 | + uncheckedRefactorings.removeAll(selectedRefactorings); |
| 191 | + |
| 192 | + Set<MoveToClassRefactoring> rejectedRefactorings = new HashSet<>(selectedRefactorings); |
| 193 | + rejectedRefactorings.removeAll(appliedRefactorings); |
| 194 | + |
| 195 | + RefactoringSessionInfo info = new RefactoringSessionInfo( |
| 196 | + uncheckedRefactorings.stream().map(refactoringFeatures::get).collect(Collectors.toList()), |
| 197 | + rejectedRefactorings.stream().map(refactoringFeatures::get).collect(Collectors.toList()), |
| 198 | + appliedRefactorings.stream().map(refactoringFeatures::get).collect(Collectors.toList()) |
| 199 | + ); |
184 | 200 | ClassRefactoringPanel.reporter.log(uuid, info); |
185 | | - RefactoringsApplier.moveRefactoring(selectedRefactorings, scope, model); |
186 | 201 |
|
187 | 202 | table.setEnabled(true); |
188 | 203 | doRefactorButton.setEnabled(true); |
|
0 commit comments