@@ -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
0 commit comments