ForwardLayout #26

Merged a-hongo merged 2 commits into nitta-lab:master from nitta-lab:forwardLayout on 20 Dec 2020
Showing 12 changed files
View
182
src/org/ntlab/deltaViewer/CollaborationLayout.java
Collections.reverse(dstSide);
for (Reference ref: dstSide) {
if (ref != null) {
List<Reference> nextRefs = new ArrayList<>(succs.get(ref.getSrcObjectId()));
nextRefs = new ArrayList<>(nextRefs);
nextRefs.remove(ref);
double direction = getDirection(ref, objectToVertexMap) + 180 + angleStep;
while (nextRefs.size() > 0) {
Reference firstRef = getFirstReferece(nextRefs, referenceHistory, true);
List<String> path = new ArrayList<>();
path.add(firstRef.getSrcObjectId());
traverseSuccs(succs, firstRef, direction, true, referenceHistory, objectToVertexMap, fixed, path);
nextRefs.remove(firstRef);
direction = getDirection(firstRef, objectToVertexMap) + 180 + angleStep;
}
if (nextRefs.size() > 1) {
nextRefs = new ArrayList<>(nextRefs);
List<Reference> nextRefs2 = new ArrayList<>();
do {
Reference firstRef = getFirstReferece(nextRefs, referenceHistory, true);
nextRefs2.add(firstRef);
nextRefs.remove(firstRef);
} while (nextRefs.size() > 1);
nextRefs2.add(nextRefs.remove(0));
if (nextRefs2.indexOf(ref) > 0) {
nextRefs = nextRefs2.subList(0, nextRefs2.indexOf(ref));
double direction = getDirection(ref, objectToVertexMap) + 180 - angleStep;
Collections.reverse(nextRefs);
for (Reference r: nextRefs) {
List<String> path = new ArrayList<>();
path.add(r.getSrcObjectId());
traverseSuccs(succs, r, direction, true, referenceHistory, objectToVertexMap, fixed, path);
direction = getDirection(r, objectToVertexMap) + 180 - angleStep;
}
}
if (nextRefs2.indexOf(ref) < nextRefs2.size() - 1) {
nextRefs = nextRefs2.subList(nextRefs2.indexOf(ref) + 1, nextRefs2.size());
double direction = getDirection(ref, objectToVertexMap) + 180 + angleStep;
for (Reference r: nextRefs) {
List<String> path = new ArrayList<>();
path.add(r.getSrcObjectId());
traverseSuccs(succs, r, direction, true, referenceHistory, objectToVertexMap, fixed, path);
direction = getDirection(r, objectToVertexMap) + 180 + angleStep;
}
}
}
// nextRefs = new ArrayList<>(nextRefs);
// nextRefs.remove(ref);
// double direction = getDirection(ref, objectToVertexMap) + 180 + angleStep;
// while (nextRefs.size() > 0) {
// Reference firstRef = getFirstReferece(nextRefs, referenceHistory, true);
// List<String> path = new ArrayList<>();
// path.add(firstRef.getSrcObjectId());
// traverseSuccs(succs, firstRef, direction, true, referenceHistory, objectToVertexMap, fixed, path);
// nextRefs.remove(firstRef);
// direction = getDirection(firstRef, objectToVertexMap) + 180 + angleStep;
// }
}
}
// Fix the reverse branches from the source side path.
Collections.reverse(srcSide);
for (Reference ref: srcSide) {
if (ref != null) {
List<Reference> nextRefs = new ArrayList<>(succs.get(ref.getSrcObjectId()));
nextRefs = new ArrayList<>(nextRefs);
nextRefs.remove(ref);
double direction = getDirection(ref, objectToVertexMap) + 180 - angleStep;
while (nextRefs.size() > 0) {
Reference firstRef = getFirstReferece(nextRefs, referenceHistory, false);
List<String> path = new ArrayList<>();
path.add(firstRef.getSrcObjectId());
traverseSuccs(succs, firstRef, direction, false, referenceHistory, objectToVertexMap, fixed, path);
nextRefs.remove(firstRef);
direction = getDirection(firstRef, objectToVertexMap) + 180 - angleStep;
}
if (nextRefs.size() > 1) {
nextRefs = new ArrayList<>(nextRefs);
List<Reference> nextRefs2 = new ArrayList<>();
do {
Reference firstRef = getFirstReferece(nextRefs, referenceHistory, false);
nextRefs2.add(firstRef);
nextRefs.remove(firstRef);
} while (nextRefs.size() > 1);
nextRefs2.add(nextRefs.remove(0));
if (nextRefs2.indexOf(ref) > 0) {
nextRefs = nextRefs2.subList(0, nextRefs2.indexOf(ref));
double direction = getDirection(ref, objectToVertexMap) + 180 + angleStep;
Collections.reverse(nextRefs);
for (Reference r: nextRefs) {
List<String> path = new ArrayList<>();
path.add(r.getSrcObjectId());
traverseSuccs(succs, r, direction, false, referenceHistory, objectToVertexMap, fixed, path);
direction = getDirection(r, objectToVertexMap) + 180 + angleStep;
}
}
if (nextRefs2.indexOf(ref) < nextRefs2.size() - 1) {
nextRefs = nextRefs2.subList(nextRefs2.indexOf(ref) + 1, nextRefs2.size());
double direction = getDirection(ref, objectToVertexMap) + 180 - angleStep;
for (Reference r: nextRefs) {
List<String> path = new ArrayList<>();
path.add(r.getSrcObjectId());
traverseSuccs(succs, r, direction, false, referenceHistory, objectToVertexMap, fixed, path);
direction = getDirection(r, objectToVertexMap) + 180 - angleStep;
}
}
}
// List<Reference> nextRefs = new ArrayList<>(succs.get(ref.getSrcObjectId()));
// nextRefs = new ArrayList<>(nextRefs);
// nextRefs.remove(ref);
// double direction = getDirection(ref, objectToVertexMap) + 180 - angleStep;
// while (nextRefs.size() > 0) {
// Reference firstRef = getFirstReferece(nextRefs, referenceHistory, false);
// List<String> path = new ArrayList<>();
// path.add(firstRef.getSrcObjectId());
// traverseSuccs(succs, firstRef, direction, false, referenceHistory, objectToVertexMap, fixed, path);
// nextRefs.remove(firstRef);
// direction = getDirection(firstRef, objectToVertexMap) + 180 - angleStep;
// }
}
}
}
 
return;
}
List<Reference> nextRefs = preds.get(curObj);
if (nextRefs == null || nextRefs.size() == 0) {
if (path.size() > 2) fixPath(path, direction, objToVtx, fixed, false);
if (path.size() >= 2) fixPath(path, direction, objToVtx, fixed, false);
return;
}
nextRefs = new ArrayList<>(nextRefs);
do {
return;
}
List<Reference> nextRefs = succs.get(curObj);
if (nextRefs == null || nextRefs.size() == 0) {
if (path.size() > 2) fixPath(path, direction, objToVtx, fixed, false);
if (path.size() >= 2) fixPath(path, direction, objToVtx, fixed, false);
return;
}
nextRefs = new ArrayList<>(nextRefs);
do {
View
22
src/org/ntlab/deltaViewer/CollaborationViewer.java
Object vertex = mxgraph.insertDeltaVertex(mxDefaultParent, ref.getDstObjectId(), dstClassName, 0, 0, vertexObjWidth, vertexObjHeight, "fillColor=white"); //creates a white vertex.
objectToVertexMap.put(ref.getDstObjectId(), new ObjectVertex(ref.getDstClassName(), vertex, 0, 0));
}
} else {
String srcClassName = ref.getSrcClassName();
if (srcClassName.contains("[L")) {
srcClassName = formatArrayName(srcClassName);
}
Object vertex = mxgraph.insertDeltaVertex(mxDefaultParent, ref.getSrcObjectId(), srcClassName, 0, 0, vertexObjWidth, vertexObjHeight, "fillColor=white"); //creates a white vertex.
objectToVertexMap.put(ref.getSrcObjectId(), new ObjectVertex(ref.getSrcClassName(), vertex, 0, 0));
objectToVertexMap.put(ref.getDstObjectId(), new ObjectVertex(ref.getDstClassName(), null, 0, 0));
if (!objectToVertexMap.containsKey(ref.getSrcObjectId())) {
String srcClassName = ref.getSrcClassName();
if (srcClassName.contains("[L")) {
srcClassName = formatArrayName(srcClassName);
}
Object vertex = mxgraph.insertDeltaVertex(mxDefaultParent, ref.getSrcObjectId(), srcClassName, 0, 0, vertexObjWidth, vertexObjHeight, "fillColor=white"); //creates a white vertex.
objectToVertexMap.put(ref.getSrcObjectId(), new ObjectVertex(ref.getSrcClassName(), vertex, 0, 0));
}
if (!objectToVertexMap.containsKey(ref.getDstObjectId())) {
objectToVertexMap.put(ref.getDstObjectId(), new ObjectVertex(ref.getDstClassName(), null, 0, 0));
}
}
}
} finally {
mxgraph.getModel().endUpdate();
View
13
src/org/ntlab/deltaViewer/DeltaLayout.java
import java.util.Map;
import java.util.Set;
 
import org.ntlab.deltaExtractor.IAliasCollector;
import org.ntlab.trace.ArrayUpdate;
import org.ntlab.trace.FieldUpdate;
import org.ntlab.trace.MethodExecution;
import org.ntlab.trace.MethodInvocation;
import org.ntlab.trace.Reference;
Statement relatedSt = objectCallGraph.getRelatedPoints().get(0).getStatement();
String srcObjId = null;
String dstObjId = null;
if (relatedSt instanceof FieldUpdate) {
// container to component
srcObjId = ((FieldUpdate) relatedSt).getContainerObjId();
dstObjId = ((FieldUpdate) relatedSt).getValueObjId();
} else if (relatedSt instanceof ArrayUpdate) {
// container to component
srcObjId = ((ArrayUpdate) relatedSt).getArrayObjectId();
dstObjId = ((ArrayUpdate) relatedSt).getValueObjectId();
} else if (relatedSt instanceof MethodInvocation) {
MethodInvocation methodInvStatement = (MethodInvocation) relatedSt;
MethodExecution calledMethodExec = methodInvStatement.getCalledMethodExecution();
String methodSignature = calledMethodExec.getSignature();
|| methodSignature.contains("set(")
|| methodSignature.contains("put(")
|| methodSignature.contains("push(")
|| methodSignature.contains("addElement("))) {
// container to component
srcObjId = calledMethodExec.getThisObjId();
dstObjId = calledMethodExec.getArguments().get(0).getId();
} else {
return;
// this to another
srcObjId = methodInvStatement.getThisObjId();
dstObjId = calledMethodExec.getReturnValue().getId();
}
} else {
return;
}
View
src/org/ntlab/deltaViewer/ForwardAliasCollector.java 0 → 100644
View
src/org/ntlab/deltaViewer/ForwardLayout.java 0 → 100644
View
src/org/ntlab/trace/AbstractTracePointVisitor.java 0 → 100644
View
src/org/ntlab/trace/Trace.java
View
traces/Sample1_trace.txt 0 → 100644
View
traces/Sample2_trace.txt 0 → 100644
View
traces/Sample3_trace.txt 0 → 100644
View
traces/Sample4_trace.txt 0 → 100644
View
traces/Sample5_trace.txt 0 → 100644