tmf: Split the state system in a separate plugin
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / controlflow / ControlFlowEntry.java
index 22cede4c87f72ad828df2ffb6e382ef282e09c72..598deee1c145dcbb75b4fec8f1962dcc8f791b68 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012 Ericsson
+ * Copyright (c) 2012, 2014 Ericsson, École Polytechnique de Montréal
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,39 +8,28 @@
  *
  * Contributors:
  *   Patrick Tasse - Initial API and implementation
+ *   Geneviève Bastien - Move code to provide base classes for time graph view
  *******************************************************************************/
 
 package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.common.EventIterator;
-import org.eclipse.linuxtools.lttng2.kernel.core.trace.CtfKernelTrace;
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
 
 /**
  * An entry in the Control Flow view
  */
-public class ControlFlowEntry implements ITimeGraphEntry {
-    private final int fThreadQuark;
-    private final CtfKernelTrace fTrace;
-    private ControlFlowEntry fParent = null;
-    private final ArrayList<ControlFlowEntry> fChildren = new ArrayList<ControlFlowEntry>();
-    private String fName;
+public class ControlFlowEntry extends TimeGraphEntry {
+
+    private final ITmfTrace fTrace;
     private final int fThreadId;
     private final int fParentThreadId;
-    private long fStartTime = -1;
-    private long fEndTime = -1;
-    private List<ITimeEvent> fEventList = new ArrayList<ITimeEvent>();
-    private List<ITimeEvent> fZoomedEventList = null;
+    private final int fThreadQuark;
 
     /**
      * Constructor
      *
-     * @param threadQuark
+     * @param quark
      *            The attribute quark matching the thread
      * @param trace
      *            The trace on which we are working
@@ -55,96 +44,32 @@ public class ControlFlowEntry implements ITimeGraphEntry {
      * @param endTime
      *            The end time of this process
      */
-    public ControlFlowEntry(int threadQuark, CtfKernelTrace trace, String execName, int threadId, int parentThreadId, long startTime, long endTime) {
-        fThreadQuark = threadQuark;
+    public ControlFlowEntry(int quark, ITmfTrace trace, String execName, int threadId, int parentThreadId, long startTime, long endTime) {
+        super(execName, startTime, endTime);
         fTrace = trace;
-        fName = execName;
         fThreadId = threadId;
         fParentThreadId = parentThreadId;
-        fStartTime = startTime;
-        fEndTime = endTime;
-    }
-
-    @Override
-    public ITimeGraphEntry getParent() {
-        return fParent;
-    }
-
-    @Override
-    public boolean hasChildren() {
-        return fChildren.size() > 0;
-    }
-
-    @Override
-    public List<ControlFlowEntry> getChildren() {
-        return fChildren;
-    }
-
-    @Override
-    public String getName() {
-        return fName;
-    }
-
-    /**
-     * Update the entry name
-     * @param execName the updated entry name
-     */
-    public void setName(String execName) {
-        fName = execName;
-    }
-
-    @Override
-    public long getStartTime() {
-        return fStartTime;
-    }
-
-    @Override
-    public long getEndTime() {
-        return fEndTime;
-    }
-
-    @Override
-    public boolean hasTimeEvents() {
-        return true;
-    }
-
-    @Override
-    public Iterator<ITimeEvent> getTimeEventsIterator() {
-        return new EventIterator(fEventList, fZoomedEventList);
-    }
-
-    @Override
-    public Iterator<ITimeEvent> getTimeEventsIterator(long startTime, long stopTime, long visibleDuration) {
-        return new EventIterator(fEventList, fZoomedEventList, startTime, stopTime);
+        fThreadQuark = quark;
     }
 
     /**
-     * Get the quark of the attribute matching this thread's TID
+     * Get this entry's thread ID
      *
-     * @return The quark
+     * @return The TID
      */
-    public int getThreadQuark() {
-        return fThreadQuark;
+    public int getThreadId() {
+        return fThreadId;
     }
 
     /**
-     * Get the CTF trace object
+     * Get the entry's trace
      *
-     * @return The trace
+     * @return the entry's trace
      */
-    public CtfKernelTrace getTrace() {
+    public ITmfTrace getTrace() {
         return fTrace;
     }
 
-    /**
-     * Get this entry's thread ID
-     *
-     * @return The TID
-     */
-    public int getThreadId() {
-        return fThreadId;
-    }
-
     /**
      * Get this thread's parent TID
      *
@@ -155,54 +80,16 @@ public class ControlFlowEntry implements ITimeGraphEntry {
     }
 
     /**
-     * Add an event to this process's timeline
-     *
-     * @param event
-     *            The time event
-     */
-    public void addEvent(ITimeEvent event) {
-        long start = event.getTime();
-        long end = start + event.getDuration();
-        synchronized (fEventList) {
-            fEventList.add(event);
-            if (fStartTime == -1 || start < fStartTime) {
-                fStartTime = start;
-            }
-            if (fEndTime == -1 || end > fEndTime) {
-                fEndTime = end;
-            }
-        }
-    }
-
-    /**
-     * Set the general event list of this entry
-     *
-     * @param eventList
-     *            The list of time events
-     */
-    public void setEventList(List<ITimeEvent> eventList) {
-        fEventList = eventList;
-    }
-
-    /**
-     * Set the zoomed event list of this entry
+     * Get the quark of the attribute matching this thread's TID
      *
-     * @param eventList
-     *            The list of time events
+     * @return The quark
      */
-    public void setZoomedEventList(List<ITimeEvent> eventList) {
-        fZoomedEventList = eventList;
+    public int getThreadQuark() {
+        return fThreadQuark;
     }
 
-    /**
-     * Add a child entry to this one (to show relationships between processes as
-     * a tree)
-     *
-     * @param child
-     *            The child entry
-     */
-    public void addChild(ControlFlowEntry child) {
-        child.fParent = this;
-        fChildren.add(child);
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + '(' + getName() + '[' + fThreadId + "])"; //$NON-NLS-1$
     }
 }
This page took 0.026373 seconds and 5 git commands to generate.