Skip to content

Commit 24cf2bf

Browse files
committed
refactoring checkNeighbors method
1 parent 91f3ffa commit 24cf2bf

1 file changed

Lines changed: 46 additions & 46 deletions

File tree

src/main/java/org/variantsync/diffdetective/experiments/thesis_pm/PatchingExperiment.java

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -77,56 +77,56 @@ private static Set<DiffNode<DiffLinesLabel>> findRootsOfSubtrees(Set<DiffNode<Di
7777
return subtreeRoots;
7878
}
7979

80+
private static DiffNode<DiffLinesLabel> getChildFromListIfIndexInRange(List<DiffNode<DiffLinesLabel>> childrenList, int index) {
81+
if (index >= 0 && index < childrenList.size()) {
82+
return childrenList.get(index);
83+
}
84+
return null;
85+
}
86+
8087
private static boolean checkNeighbors(Time time, DiffNode<DiffLinesLabel> root,
8188
DiffNode<DiffLinesLabel> targetNodeInPatch, DiffNode<DiffLinesLabel> node) {
8289

83-
DiffNode<DiffLinesLabel> neighborBeforeTarget = null;
84-
DiffNode<DiffLinesLabel> neighborAfterTarget = null;
85-
DiffNode<DiffLinesLabel> neighborBeforeSource = null;
86-
DiffNode<DiffLinesLabel> neighborAfterSource = null;
87-
boolean correctBefore = false;
88-
boolean correctAfter = false;
8990
List<DiffNode<DiffLinesLabel>> orderedChildrenTarget = targetNodeInPatch.getChildOrder(time);
90-
if (orderedChildrenTarget.contains(node)) {
91-
int indexTarget = orderedChildrenTarget.indexOf(node);
92-
if ((indexTarget - 1) >= 0) {
93-
neighborBeforeTarget = orderedChildrenTarget.get(indexTarget - 1);
94-
}
95-
if ((indexTarget + 1) < orderedChildrenTarget.size()) {
96-
neighborAfterTarget = orderedChildrenTarget.get(indexTarget + 1);
97-
}
98-
List<DiffNode<DiffLinesLabel>> orderedChildrenSource = root.getParent(time).getChildOrder(time);
99-
int indexSource = orderedChildrenSource.indexOf(root);
100-
if ((indexSource - 1) >= 0) {
101-
neighborBeforeSource = orderedChildrenSource.get(indexSource - 1);
102-
}
103-
if ((indexSource + 1) < orderedChildrenTarget.size()) {
104-
neighborAfterSource = orderedChildrenSource.get(indexSource + 1);
105-
}
106-
if ((neighborBeforeSource != null && neighborBeforeTarget == null) || (neighborBeforeSource == null && neighborBeforeTarget != null)) {
107-
System.out.println("Different neighbors");
108-
} else if (neighborBeforeSource != null && neighborBeforeTarget != null) {
109-
if (Patching.isSameAs(neighborBeforeSource, neighborBeforeTarget, time)) {
110-
System.out.println("Same neighbor before");
111-
correctBefore = true;
112-
}
113-
} else {
114-
System.out.println("No neighbor before");
115-
correctBefore = true;
116-
}
117-
if ((neighborAfterSource != null && neighborAfterTarget == null) || (neighborAfterSource == null && neighborAfterTarget != null)) {
118-
System.out.println("Different neighbors");
119-
} else if (neighborAfterSource != null && neighborAfterTarget != null) {
120-
if (Patching.isSameAs(neighborAfterSource, neighborAfterTarget, time)) {
121-
System.out.println("Same neighbor after");
122-
correctAfter = true;
123-
}
124-
} else {
125-
System.out.println("No neighbor after");
126-
correctAfter = true;
91+
if (!orderedChildrenTarget.contains(node)) {
92+
// TODO: throw exception
93+
return false;
94+
}
95+
int indexTarget = orderedChildrenTarget.indexOf(node);
96+
DiffNode<DiffLinesLabel> neighborBeforeTarget = getChildFromListIfIndexInRange(orderedChildrenTarget, indexTarget - 1);
97+
DiffNode<DiffLinesLabel> neighborAfterTarget = getChildFromListIfIndexInRange(orderedChildrenTarget, indexTarget + 1);
98+
99+
List<DiffNode<DiffLinesLabel>> orderedChildrenSource = root.getParent(time).getChildOrder(time);
100+
int indexSource = orderedChildrenSource.indexOf(root);
101+
DiffNode<DiffLinesLabel> neighborBeforeSource = getChildFromListIfIndexInRange(orderedChildrenSource, indexSource - 1);
102+
DiffNode<DiffLinesLabel> neighborAfterSource = getChildFromListIfIndexInRange(orderedChildrenSource, indexSource + 1);
103+
104+
if ((neighborBeforeSource != null && neighborBeforeTarget == null) || (neighborBeforeSource == null && neighborBeforeTarget != null)) {
105+
System.out.println("Different neighbors before");
106+
return false;
107+
}
108+
if (neighborBeforeSource != null && neighborBeforeTarget != null) {
109+
if (!Patching.isSameAs(neighborBeforeSource, neighborBeforeTarget, time)) {
110+
System.out.println("Different neighbor before");
111+
return false;
127112
}
128113
}
129-
return correctBefore && correctAfter;
114+
// neighborBeforeSource isSameAs neighborBeforeTarget OR both are null (no neighbor before)
115+
116+
if ((neighborAfterSource != null && neighborAfterTarget == null) || (neighborAfterSource == null && neighborAfterTarget != null)) {
117+
System.out.println("Different neighbors after");
118+
return false;
119+
}
120+
if (neighborAfterSource != null && neighborAfterTarget != null) {
121+
if (!Patching.isSameAs(neighborAfterSource, neighborAfterTarget, time)) {
122+
System.out.println("Different neighbors after");
123+
return false;
124+
}
125+
}
126+
// neighborAfterSource isSameAs neighborAfterTarget OR both are null (no neighbor after)
127+
128+
return true;
129+
130130
}
131131

132132
private static List<Integer> findInsertPositions(Time time, DiffNode<DiffLinesLabel> root,
@@ -283,8 +283,8 @@ private static VariationTree<DiffLinesLabel> parseVariationTreeFromFile(String f
283283
}
284284

285285
public static void main(String[] args) {
286-
patchVariationTrees(parseVariationTreeFromFile("exampleA1Add.cpp"), parseVariationTreeFromFile("exampleA2Add.cpp"), parseVariationTreeFromFile("exampleBAdd.cpp"));
287-
// patchVariationTrees(parseVariationTreeFromFile("exampleA1Rem.cpp"), parseVariationTreeFromFile("exampleA2Rem.cpp"), parseVariationTreeFromFile("exampleBRem.cpp"));
286+
// patchVariationTrees(parseVariationTreeFromFile("exampleA1Add.cpp"), parseVariationTreeFromFile("exampleA2Add.cpp"), parseVariationTreeFromFile("exampleBAdd.cpp"));
287+
patchVariationTrees(parseVariationTreeFromFile("exampleA1Rem.cpp"), parseVariationTreeFromFile("exampleA2Rem.cpp"), parseVariationTreeFromFile("exampleBRem.cpp"));
288288
}
289289

290290
}

0 commit comments

Comments
 (0)