Skip to content

Commit 2b93dc9

Browse files
committed
moved some compare related functionality to FringeUtils-Common for use in logviewer and few bug fixes.
1 parent 8003f4c commit 2b93dc9

File tree

3 files changed

+165
-158
lines changed

3 files changed

+165
-158
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
<dependency>
7474
<groupId>com.pega.gcs</groupId>
7575
<artifactId>fringeutils-common</artifactId>
76-
<version>[3.0,)</version>
76+
<version>3.1</version>
7777
</dependency>
7878
</dependencies>
7979

src/main/java/com/pega/gcs/tracerviewer/TraceTableCompareTask.java

Lines changed: 161 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -95,201 +95,206 @@ protected Void doInBackground() throws Exception {
9595

9696
TracerDataMainPanel.loadFile(traceTableCompareModelRight, progressMonitor, true, parent);
9797

98-
// trigger changing progress monitor to indeterminate
99-
publish(PROGRESS_MONITOR_STATUS_CHANGE);
98+
try {
99+
if (!progressMonitor.isCanceled()) {
100100

101-
// built the left side compare model afresh for every compare
102-
RecentFile recentFile = traceTableModel.getRecentFile();
103-
SearchData<TraceEventKey> searchData = traceTableModel.getSearchData();
104-
TraceTableCompareModel traceTableCompareModelLeft;
105-
traceTableCompareModelLeft = new TraceTableCompareModel(recentFile, searchData);
101+
// trigger changing progress monitor to indeterminate
102+
publish(PROGRESS_MONITOR_STATUS_CHANGE);
106103

107-
TreeMap<TraceEventKey, List<TraceEventKey>> compareNavIndexMap;
108-
compareNavIndexMap = new TreeMap<TraceEventKey, List<TraceEventKey>>();
104+
// built the left side compare model afresh for every compare
105+
RecentFile recentFile = traceTableModel.getRecentFile();
106+
SearchData<TraceEventKey> searchData = traceTableModel.getSearchData();
107+
TraceTableCompareModel traceTableCompareModelLeft;
108+
traceTableCompareModelLeft = new TraceTableCompareModel(recentFile, searchData);
109109

110-
try {
110+
TreeMap<TraceEventKey, List<TraceEventKey>> compareNavIndexMap;
111+
compareNavIndexMap = new TreeMap<TraceEventKey, List<TraceEventKey>>();
111112

112-
List<TraceEventKey> thisMarkerTraceEventKeyList = new ArrayList<TraceEventKey>();
113-
List<TraceEventKey> otherMarkerTraceEventKeyList = new ArrayList<TraceEventKey>();
113+
List<TraceEventKey> thisMarkerTraceEventKeyList = new ArrayList<TraceEventKey>();
114+
List<TraceEventKey> otherMarkerTraceEventKeyList = new ArrayList<TraceEventKey>();
114115

115-
Map<TraceEventKey, TraceEvent> thisTEM = traceTableModel.getTraceEventMap();
116-
Map<TraceEventKey, TraceEvent> otherTEM = traceTableCompareModelRight.getTraceEventMap();
116+
Map<TraceEventKey, TraceEvent> thisTEM = traceTableModel.getTraceEventMap();
117+
Map<TraceEventKey, TraceEvent> otherTEM = traceTableCompareModelRight.getTraceEventMap();
117118

118-
// THIS
119-
List<TraceEventKey> thisTraceEventKeyList = new ArrayList<TraceEventKey>();
120-
List<TraceEvent> thisTraceEventList = new ArrayList<TraceEvent>();
119+
// THIS
120+
List<TraceEventKey> thisTraceEventKeyList = new ArrayList<TraceEventKey>();
121+
List<TraceEvent> thisTraceEventList = new ArrayList<TraceEvent>();
121122

122-
// OTHER
123-
List<TraceEventKey> otherTraceEventKeyList = new ArrayList<TraceEventKey>();
124-
List<TraceEvent> otherTraceEventList = new ArrayList<TraceEvent>();
123+
// OTHER
124+
List<TraceEventKey> otherTraceEventKeyList = new ArrayList<TraceEventKey>();
125+
List<TraceEvent> otherTraceEventList = new ArrayList<TraceEvent>();
125126

126-
getKeyAndTraceEventList(thisTEM, thisTraceEventKeyList, thisTraceEventList);
127-
getKeyAndTraceEventList(otherTEM, otherTraceEventKeyList, otherTraceEventList);
127+
getKeyAndTraceEventList(thisTEM, thisTraceEventKeyList, thisTraceEventList);
128+
getKeyAndTraceEventList(otherTEM, otherTraceEventKeyList, otherTraceEventList);
128129

129-
Matcher<TraceEvent> matcher = new Matcher<TraceEvent>() {
130+
Matcher<TraceEvent> matcher = new Matcher<TraceEvent>() {
130131

131-
@Override
132-
public boolean match(TraceEvent o1, TraceEvent o2) {
133-
return o1.equals(o2);
134-
}
135-
};
132+
@Override
133+
public boolean match(TraceEvent o1, TraceEvent o2) {
134+
return o1.equals(o2);
135+
}
136+
};
137+
138+
long before = System.currentTimeMillis();
139+
140+
List<EditCommand> editScript = MyersDifferenceAlgorithm.diffGreedyLCS(progressMonitor,
141+
thisTraceEventList, otherTraceEventList, matcher);
142+
143+
long diff = System.currentTimeMillis() - before;
144+
DecimalFormat df = new DecimalFormat("#0.000");
145+
146+
String time = df.format((double) diff / 1E3);
147+
148+
LOG.info("MyersDifferenceAlgorithm diffGreedyLCS took " + time + "s.");
149+
150+
if (!progressMonitor.isCanceled()) {
151+
152+
traceTableCompareModelLeft.resetModel();
153+
traceTableCompareModelRight.resetModel();
154+
155+
int index = 0;
156+
int indexThis = 0;
157+
int indexOther = 0;
136158

137-
long before = System.currentTimeMillis();
159+
TraceEventKey compareNavIndexKey = null;
160+
EditCommand prevEC = EditCommand.SNAKE;
138161

139-
List<EditCommand> editScript = MyersDifferenceAlgorithm.diffGreedyLCS(progressMonitor, thisTraceEventList,
140-
otherTraceEventList, matcher);
162+
TraceEventKey teKeyThis;
163+
TraceEventKey teKeyOther;
164+
TraceEventKey teKey;
141165

142-
long diff = System.currentTimeMillis() - before;
143-
DecimalFormat df = new DecimalFormat("#0.000");
166+
TraceEvent teCompare;
167+
TraceEvent te;
144168

145-
String time = df.format((double) diff / 1E3);
169+
Color deleteColor = Color.LIGHT_GRAY;
170+
Color insertColor = MyColor.LIGHTEST_GREEN;
146171

147-
LOG.info("MyersDifferenceAlgorithm diffGreedyLCS took " + time + "s.");
172+
for (EditCommand ec : editScript) {
148173

149-
if (!progressMonitor.isCanceled()) {
174+
TraceEventKey teKeyCompare = null;
150175

151-
traceTableCompareModelLeft.resetModel();
152-
traceTableCompareModelRight.resetModel();
153-
154-
int index = 0;
155-
int indexThis = 0;
156-
int indexOther = 0;
157-
158-
TraceEventKey compareNavIndexKey = null;
159-
EditCommand prevEC = EditCommand.SNAKE;
160-
161-
TraceEventKey teKeyThis;
162-
TraceEventKey teKeyOther;
163-
TraceEventKey teKey;
164-
165-
TraceEvent teCompare;
166-
TraceEvent te;
167-
168-
Color deleteColor = Color.LIGHT_GRAY;
169-
Color insertColor = MyColor.LIGHTEST_GREEN;
170-
171-
for (EditCommand ec : editScript) {
172-
173-
TraceEventKey teKeyCompare = null;
174-
175-
switch (ec) {
176-
case DELETE:
177-
// Add compare type to OTHER List
178-
// OTHER
179-
teKeyCompare = new TraceEventKey(index, -1, false);
180-
teCompare = new TraceEventEmpty(teKeyCompare, deleteColor);
181-
// newOtherTEM.put(teKeyCompare, teCompare);
182-
traceTableCompareModelRight.addTraceEventToMap(teCompare);
183-
184-
// THIS
185-
teKeyThis = thisTraceEventKeyList.get(indexThis);
186-
// te = thisTEM.get(teKeyThis);
187-
te = thisTraceEventList.get(indexThis);
188-
teKey = new TraceEventKey(index, teKeyThis.getTraceEventIndex(), teKeyThis.isCorrupt());
189-
te.setTraceEventKey(teKey);
190-
// newThisTEM.put(teKey, te);
191-
traceTableCompareModelLeft.addTraceEventToMap(te);
192-
indexThis++;
193-
194-
otherMarkerTraceEventKeyList.add(teKeyCompare);
195-
196-
break;
197-
case INSERT:
198-
// Add compare type to THIS List
199-
// OTHER
200-
teKeyOther = otherTraceEventKeyList.get(indexOther);
201-
// te = otherTEM.get(teKeyOther);
202-
te = otherTraceEventList.get(indexOther);
203-
teKey = new TraceEventKey(index, teKeyOther.getTraceEventIndex(), teKeyOther.isCorrupt());
204-
te.setTraceEventKey(teKey);
205-
// newOtherTEM.put(teKey, te);
206-
traceTableCompareModelRight.addTraceEventToMap(te);
207-
indexOther++;
208-
209-
// THIS
210-
teKeyCompare = new TraceEventKey(index, -1, false);
211-
teCompare = new TraceEventEmpty(teKeyCompare, insertColor);
212-
// newThisTEM.put(teKeyCompare, teCompare);
213-
traceTableCompareModelLeft.addTraceEventToMap(teCompare);
214-
215-
thisMarkerTraceEventKeyList.add(teKeyCompare);
216-
217-
break;
218-
case SNAKE:
219-
// OTHER
220-
teKeyOther = otherTraceEventKeyList.get(indexOther);
221-
// te = otherTEM.get(teKeyOther);
222-
te = otherTraceEventList.get(indexOther);
223-
teKey = new TraceEventKey(index, teKeyOther.getTraceEventIndex(), teKeyOther.isCorrupt());
224-
te.setTraceEventKey(teKey);
225-
// newOtherTEM.put(teKey, te);
226-
traceTableCompareModelRight.addTraceEventToMap(te);
227-
indexOther++;
228-
229-
// THIS
230-
teKeyThis = thisTraceEventKeyList.get(indexThis);
231-
// te = thisTEM.get(teKeyThis);
232-
te = thisTraceEventList.get(indexThis);
233-
teKey = new TraceEventKey(index, teKeyThis.getTraceEventIndex(), teKeyThis.isCorrupt());
234-
te.setTraceEventKey(teKey);
235-
// newThisTEM.put(teKey, te);
236-
traceTableCompareModelLeft.addTraceEventToMap(te);
237-
indexThis++;
238-
239-
break;
240-
default:
241-
break;
176+
switch (ec) {
177+
case DELETE:
178+
// Add compare type to OTHER List
179+
// OTHER
180+
teKeyCompare = new TraceEventKey(index, -1, false);
181+
teCompare = new TraceEventEmpty(teKeyCompare, deleteColor);
182+
// newOtherTEM.put(teKeyCompare, teCompare);
183+
traceTableCompareModelRight.addTraceEventToMap(teCompare);
242184

243-
}
185+
// THIS
186+
teKeyThis = thisTraceEventKeyList.get(indexThis);
187+
// te = thisTEM.get(teKeyThis);
188+
te = thisTraceEventList.get(indexThis);
189+
teKey = new TraceEventKey(index, teKeyThis.getTraceEventIndex(), teKeyThis.isCorrupt());
190+
te.setTraceEventKey(teKey);
191+
// newThisTEM.put(teKey, te);
192+
traceTableCompareModelLeft.addTraceEventToMap(te);
193+
indexThis++;
244194

245-
if ((!prevEC.equals(ec)) && (teKeyCompare != null)
246-
/* && (!ec.equals(EditCommand.SNAKE)) */) {
195+
otherMarkerTraceEventKeyList.add(teKeyCompare);
247196

248-
compareNavIndexKey = teKeyCompare;
197+
break;
198+
case INSERT:
199+
// Add compare type to THIS List
200+
// OTHER
201+
teKeyOther = otherTraceEventKeyList.get(indexOther);
202+
// te = otherTEM.get(teKeyOther);
203+
te = otherTraceEventList.get(indexOther);
204+
teKey = new TraceEventKey(index, teKeyOther.getTraceEventIndex(), teKeyOther.isCorrupt());
205+
te.setTraceEventKey(teKey);
206+
// newOtherTEM.put(teKey, te);
207+
traceTableCompareModelRight.addTraceEventToMap(te);
208+
indexOther++;
249209

250-
List<TraceEventKey> compareIndexList = new ArrayList<TraceEventKey>();
251-
compareIndexList.add(teKeyCompare);
210+
// THIS
211+
teKeyCompare = new TraceEventKey(index, -1, false);
212+
teCompare = new TraceEventEmpty(teKeyCompare, insertColor);
213+
// newThisTEM.put(teKeyCompare, teCompare);
214+
traceTableCompareModelLeft.addTraceEventToMap(teCompare);
252215

253-
compareNavIndexMap.put(compareNavIndexKey, compareIndexList);
216+
thisMarkerTraceEventKeyList.add(teKeyCompare);
254217

255-
} else if ((compareNavIndexKey != null) && (teKeyCompare != null)) {
218+
break;
219+
case SNAKE:
220+
// OTHER
221+
teKeyOther = otherTraceEventKeyList.get(indexOther);
222+
// te = otherTEM.get(teKeyOther);
223+
te = otherTraceEventList.get(indexOther);
224+
teKey = new TraceEventKey(index, teKeyOther.getTraceEventIndex(), teKeyOther.isCorrupt());
225+
te.setTraceEventKey(teKey);
226+
// newOtherTEM.put(teKey, te);
227+
traceTableCompareModelRight.addTraceEventToMap(te);
228+
indexOther++;
256229

257-
List<TraceEventKey> compareIndexList;
258-
compareIndexList = compareNavIndexMap.get(compareNavIndexKey);
230+
// THIS
231+
teKeyThis = thisTraceEventKeyList.get(indexThis);
232+
// te = thisTEM.get(teKeyThis);
233+
te = thisTraceEventList.get(indexThis);
234+
teKey = new TraceEventKey(index, teKeyThis.getTraceEventIndex(), teKeyThis.isCorrupt());
235+
te.setTraceEventKey(teKey);
236+
// newThisTEM.put(teKey, te);
237+
traceTableCompareModelLeft.addTraceEventToMap(te);
238+
indexThis++;
259239

260-
compareIndexList.add(teKeyCompare);
240+
break;
241+
default:
242+
break;
243+
244+
}
245+
246+
if ((!prevEC.equals(ec)) && (teKeyCompare != null)
247+
/* && (!ec.equals(EditCommand.SNAKE)) */) {
248+
249+
compareNavIndexKey = teKeyCompare;
250+
251+
List<TraceEventKey> compareIndexList = new ArrayList<TraceEventKey>();
252+
compareIndexList.add(teKeyCompare);
253+
254+
compareNavIndexMap.put(compareNavIndexKey, compareIndexList);
255+
256+
} else if ((compareNavIndexKey != null) && (teKeyCompare != null)) {
257+
258+
List<TraceEventKey> compareIndexList;
259+
compareIndexList = compareNavIndexMap.get(compareNavIndexKey);
260+
261+
compareIndexList.add(teKeyCompare);
262+
}
263+
264+
prevEC = ec;
265+
index++;
261266
}
262267

263-
prevEC = ec;
264-
index++;
265268
}
266269

267-
}
268-
269-
if (!progressMonitor.isCanceled()) {
270+
if (!progressMonitor.isCanceled()) {
270271

271-
traceTableCompareModelLeft.setCompareMarkerList(thisMarkerTraceEventKeyList);
272-
traceTableCompareModelRight.setCompareMarkerList(otherMarkerTraceEventKeyList);
272+
traceTableCompareModelLeft.setCompareMarkerList(thisMarkerTraceEventKeyList);
273+
traceTableCompareModelRight.setCompareMarkerList(otherMarkerTraceEventKeyList);
273274

274-
traceTableCompareModelLeft.setCompareNavIndexMap(compareNavIndexMap);
275+
traceTableCompareModelLeft.setCompareNavIndexMap(compareNavIndexMap);
275276

276-
LOG.info("TraceTableCompareTask done " + compareNavIndexMap.size() + " chunks found");
277+
LOG.info("TraceTableCompareTask done " + compareNavIndexMap.size() + " chunks found");
277278

278-
// set the left table model as compare model
279-
tracerDataTableLeft.setModel(traceTableCompareModelLeft);
279+
// set the left table model as compare model
280+
tracerDataTableLeft.setModel(traceTableCompareModelLeft);
280281

282+
}
281283
}
282-
// }
283-
284284
} catch (Exception e) {
285285
LOG.error("Exception in Tracetable compare task", e);
286286
} finally {
287+
288+
if (progressMonitor.isCanceled()) {
289+
cancel(true);
290+
}
291+
292+
LOG.info("Tracetable compare task - End");
293+
287294
// cleanup
288295
System.gc();
289296
}
290297

291-
LOG.info("TraceTableCompareTask compareNavIndexList: " + compareNavIndexMap.keySet());
292-
293298
return null;
294299
}
295300

@@ -306,16 +311,16 @@ protected void process(List<String> chunks) {
306311

307312
ModalProgressMonitor progressMonitor = getProgressMonitor();
308313

309-
if ((changeStatus.equals(PROGRESS_MONITOR_STATUS_CHANGE))
310-
&& ((progressMonitor != null) && (!progressMonitor.isIndeterminate()))) {
314+
if ((changeStatus.equals(PROGRESS_MONITOR_STATUS_CHANGE)) && ((progressMonitor != null)
315+
&& (!progressMonitor.isCanceled()) && (!progressMonitor.isIndeterminate()))) {
311316

312317
progressMonitor.setIndeterminate(true);
313318
progressMonitor.setNote("Comparing ...");
314319
progressMonitor.show();
315320

316321
}
317322
}
318-
323+
319324
private void getKeyAndTraceEventList(Map<TraceEventKey, TraceEvent> traceEventMap,
320325
List<TraceEventKey> traceEventKeyList, List<TraceEvent> traceEventList) {
321326

src/main/java/com/pega/gcs/tracerviewer/TracerFileLoadTask.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,9 @@ private void completeLoad() {
420420

421421
} finally {
422422

423-
mProgressMonitor.close();
423+
if (!mProgressMonitor.isCanceled()) {
424+
mProgressMonitor.close();
425+
}
424426

425427
System.gc();
426428
}

0 commit comments

Comments
 (0)