2010-11-04 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug316354
authorFrancois Chouinard <fchouinard@gmail.com>
Thu, 4 Nov 2010 17:58:50 +0000 (17:58 +0000)
committerFrancois Chouinard <fchouinard@gmail.com>
Thu, 4 Nov 2010 17:58:50 +0000 (17:58 +0000)
* src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java: Create an ad hoc experiment when a trace is selected
* src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Use the correct index page size
* src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java: Added indexTrace() and support code

org.eclipse.linuxtools.lttng.ui/ChangeLog
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java
org.eclipse.linuxtools.tmf/ChangeLog
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java

index 9f83a8c87354864c1e20a2d4c8420e59716f8c90..a977b634adbef072094634c1601fc3b93ec23e95 100644 (file)
@@ -1,3 +1,7 @@
+2010-11-04  Francois Chouinard  <fchouinard@gmail.com>
+
+       * src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java: Create an ad hoc experiment when a trace is selected 
+
 2010-10-29  Francois Chouinard  <fchouinard@gmail.com>
 
        * src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvasPaintListener.java (paintControl): Temporary refresh fix
index 22a178bbbe533d13f97179795f5ec09fd03fad9b..b9728ebb5b46e074df17d690258d222d93e43891 100644 (file)
@@ -159,11 +159,43 @@ public class ProjectView extends TmfView {
                 if (element instanceof LTTngExperimentNode) {
                        LTTngExperimentNode experiment = (LTTngExperimentNode) element;
                        selectExperiment(experiment);                
+                } else {
+                    if (element instanceof LTTngTraceNode) {
+                        LTTngTraceNode trace = (LTTngTraceNode) element;
+                        selectTrace(trace);
+                    }
                 }
             }
         });
     }
 
+    private void selectTrace(LTTngTraceNode traceNode) {
+        if (fSelectedExperiment != null) {
+            fSelectedExperiment.dispose();
+        }
+
+        try {
+            ITmfTrace[] traces = new ITmfTrace[1];
+            IResource res = traceNode.getFolder();
+            String location = res.getLocation().toOSString();
+            ITmfTrace trace = new LTTngTrace(location, waitForCompletion);
+            traces[0] = trace;
+            fSelectedExperiment = new LTTngExperiment<LttngEvent>(LttngEvent.class, traceNode.getName(), traces);
+            TmfExperiment.setCurrentExperiment(fSelectedExperiment);
+            
+            // Make sure the lttng-core, experiment selection context is ready
+            // for an event request from any view
+            StateManagerFactory.getExperimentManager().experimentSelected_prep(
+                    (TmfExperiment<LttngEvent>) fSelectedExperiment);
+
+            broadcast(new TmfExperimentSelectedSignal<LttngEvent>(this, fSelectedExperiment));
+        } catch (FileNotFoundException e) {
+            return;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
        private boolean waitForCompletion = true;
 
        /**
index 8c5f61273776a4384d003c65f8ac045080de692e..615b7d014d97f6ff0e3f257bc5e5d44fac5b0314 100644 (file)
@@ -1,3 +1,8 @@
+2010-11-04  Francois Chouinard  <fchouinard@gmail.com>
+
+       * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Use the correct index page size 
+       * src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java: Added indexTrace() and support code 
+
 2010-10-29  Francois Chouinard  <fchouinard@gmail.com>
 
        * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java (getNextEvent): Removed an unnecessary clone() operation
index b94c812ec3e0068b62544f933615b4582eeceb9c..e18b994abe29e3bebd600969d28b221e7d2c8d21 100644 (file)
@@ -667,7 +667,7 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
                                                startTime = new TmfTimestamp(ts);
                                        lastTime = new TmfTimestamp(ts);
 
-                                       if ((getNbRead() % DEFAULT_INDEX_PAGE_SIZE) == 0) {
+                                       if ((getNbRead() % fIndexPageSize) == 0) {
                                                updateExperiment();
                                        }
                                }
index fff6a88af8eb1ef2673894a7242c9a6afee56896..41d1d04d2012c82c96e032fa61d1214a72183ae6 100644 (file)
@@ -23,6 +23,11 @@ import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;
 import org.eclipse.linuxtools.tmf.request.ITmfEventRequest;
+import org.eclipse.linuxtools.tmf.request.TmfDataRequest;
+import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
+import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
+import org.eclipse.linuxtools.tmf.signal.TmfTraceOpenedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfTraceUpdatedSignal;
 
 /**
  * <b><u>TmfTrace</u></b>
@@ -386,73 +391,132 @@ public abstract class TmfTrace<T extends TmfEvent> extends TmfEventProvider<T> i
     // Indexing
     // ------------------------------------------------------------------------
 
-//     /*
-//      * The purpose of the index is to keep the information needed to rapidly
-//      * restore the traces contexts at regular intervals (every INDEX_PAGE_SIZE
-//      * event).
-//      */
-//
-//     @SuppressWarnings({ "unchecked", "unused" })
-//     private void indexTrace(boolean waitForCompletion) {
-//
-//             fCheckpoints.clear();
-//             
-//             ITmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) {
-//
-//                     TmfTimestamp startTime =  null;
-//                     TmfTimestamp lastTime  =  null;
-//
-//                     @Override
-//                     public void handleData() {
-//                             TmfEvent[] events = getData();
-//                             if (events.length > 0) {
-//                                     TmfTimestamp ts = events[0].getTimestamp();
-//                                     if (startTime == null) {
-//                                             startTime = new TmfTimestamp(ts);
-//                                             fStartTime = startTime;
-//                                     }
-//                                     lastTime = new TmfTimestamp(ts);
-//
-//                                     if ((fNbRead % DEFAULT_INDEX_PAGE_SIZE) == 0) {
-//                                             updateTraceData();
-//                                     }
-//                             }
-//                     }
-//
-//                     @Override
-//                     public void handleSuccess() {
-//                             updateTraceData();
-//                     }
-//
-//                     private void updateTraceData() {
-//                             if (fNbRead != 0) {
-//                                     fEndTime  = new TmfTimestamp(lastTime);
-//                                     fNbEvents = fNbRead;
-//                                     notifyListeners();
-//                             }
-//                     }
-//             };
-//
-//             sendRequest((ITmfDataRequest<T>) request);
-//             if (waitForCompletion)
-//                     try {
-//                             request.waitForCompletion();
-//                     } catch (InterruptedException e) {
-//                             e.printStackTrace();
-//                     }
-//     }
+       /*
+        * The purpose of the index is to keep the information needed to rapidly
+        * restore the traces contexts at regular intervals (every INDEX_PAGE_SIZE
+        * event).
+        */
+
+    @SuppressWarnings({ "unchecked" })
+    private void indexTrace(boolean waitForCompletion) {
+
+        fCheckpoints.clear();
+        ITmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, TmfTimeRange.Eternity,
+                TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) {
+
+            TmfTimestamp startTime =  null;
+            TmfTimestamp lastTime  =  null;
+
+            @Override
+            public void handleData(TmfEvent event) {
+                super.handleData(event);
+                if (event != null) {
+                    TmfTimestamp ts = event.getTimestamp();
+                    if (startTime == null)
+                        startTime = new TmfTimestamp(ts);
+                    lastTime = new TmfTimestamp(ts);
+
+                    if ((getNbRead() % DEFAULT_INDEX_PAGE_SIZE) == 0) {
+                        updateTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void handleSuccess() {
+                updateTrace();
+            }
+
+            private void updateTrace() {
+                int nbRead = getNbRead();
+                if (nbRead != 0) {
+                    fStartTime = startTime;
+                    fEndTime = lastTime;
+                    fNbEvents  = nbRead;
+                    notifyListeners();
+                }
+            }
+        };
+
+        sendRequest((ITmfDataRequest<T>) request);
+        if (waitForCompletion)
+            try {
+                request.waitForCompletion();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+    }
+
+    @SuppressWarnings({ "unchecked", "unused" })
+       private void indexTraceOld(boolean waitForCompletion) {
+
+               fCheckpoints.clear();
+               
+               ITmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) {
+
+                       TmfTimestamp startTime =  null;
+                       TmfTimestamp lastTime  =  null;
+
+                       @Override
+                       public void handleData(TmfEvent event) {
+                           super.handleData(event);
+                               if (event != null) {
+                                       TmfTimestamp ts = event.getTimestamp();
+                                       if (startTime == null) {
+                                               startTime = new TmfTimestamp(ts);
+                                               fStartTime = startTime;
+                                       }
+                                       lastTime = new TmfTimestamp(ts);
+
+                                       if ((getNbRead() % fIndexPageSize) == 0) {
+                                               updateTraceData();
+                                       }
+                               }
+                       }
+
+                       @Override
+                       public void handleSuccess() {
+                               updateTraceData();
+                       }
+
+                       private void updateTraceData() {
+                int nbRead = getNbRead();
+                               if (nbRead != 0) {
+                                       fEndTime  = new TmfTimestamp(lastTime);
+                                       fNbEvents = nbRead;
+                                       notifyListeners();
+                               }
+                       }
+               };
+
+               sendRequest((ITmfDataRequest<T>) request);
+               if (waitForCompletion)
+                       try {
+                               request.waitForCompletion();
+                       } catch (InterruptedException e) {
+                               e.printStackTrace();
+                       }
+       }
        
-//     protected void notifyListeners() {
-//     broadcast(new TmfTraceUpdatedSignal(this, this, new TmfTimeRange(fStartTime, fEndTime)));
-//     }
+       protected void notifyListeners() {
+       broadcast(new TmfTraceUpdatedSignal(this, this, new TmfTimeRange(fStartTime, fEndTime)));
+       }
+   
+       @TmfSignalHandler
+    public void handleTraceOpen(TmfTraceOpenedSignal signal) {
+        ITmfTrace trace = signal.getTrace();
+        if (trace == this) {
+            indexTrace(false);
+        }
+    }
    
        // ------------------------------------------------------------------------
        // TmfDataProvider
        // ------------------------------------------------------------------------
 
-//     @Override
-//    protected void queueBackgroundRequest(final ITmfDataRequest<T> request, final int blockSize, final boolean adjust) {
-//             super.queueBackgroundRequest(request, fIndexPageSize, true);
-//    }
+       @Override
+    protected void queueBackgroundRequest(final ITmfDataRequest<T> request, final int blockSize, final boolean adjust) {
+               super.queueBackgroundRequest(request, fIndexPageSize, true);
+    }
 
 }
This page took 0.032735 seconds and 5 git commands to generate.