Change CtfTmfTrace to use TmfTrace. Bug 380951
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Tue, 29 May 2012 14:30:07 +0000 (10:30 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Tue, 29 May 2012 19:38:34 +0000 (15:38 -0400)
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfTmfTrace.java

index c5e118e19e5540adf091a90930117d6ec947f451..a0cdd85243807d8619f39573ac5abb67cf9c14f0 100644 (file)
@@ -9,68 +9,43 @@
  * Contributors: Matthew Khouzam - Initial API and implementation
  *******************************************************************************/
 
+
 package org.eclipse.linuxtools.tmf.core.ctfadaptor;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.linuxtools.ctf.core.event.EventDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
 import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException;
 import org.eclipse.linuxtools.ctf.core.trace.CTFTrace;
-import org.eclipse.linuxtools.tmf.core.component.TmfEventProvider;
 import org.eclipse.linuxtools.tmf.core.ctfadaptor.CtfTmfTimestamp.TimestampType;
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEventField;
-import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
-import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
-import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalManager;
 import org.eclipse.linuxtools.tmf.core.statesystem.IStateSystemQuerier;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
-
-/**
- */
-public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTrace<CtfTmfEvent> {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    // the Ctf Trace
-    private CTFTrace fTrace;
-
-    // The number of events collected
-    protected long fNbEvents = 0;
+import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
 
-    // The time span of the event stream
-    private ITmfTimestamp fStartTime = TmfTimestamp.BIG_CRUNCH;
-    private ITmfTimestamp fEndTime = TmfTimestamp.BIG_BANG;
+public class CtfTmfTrace extends TmfTrace<CtfTmfEvent> implements ITmfEventParser{
 
-    // The trace resource
-    private IResource fResource;
+    //-------------------------------------------
+    //        Fields
+    //-------------------------------------------
 
     /* Reference to the state system assigned to this trace */
     protected IStateSystemQuerier ss = null;
 
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    public CtfTmfTrace() {
-        super();
-    }
+    /* Reference to the CTF Trace */
+    private CTFTrace fTrace;
 
+    //-------------------------------------------
+    //        TmfTrace Overrides
+    //-------------------------------------------
     /**
      * Method initTrace.
      * @param resource IResource
@@ -82,12 +57,12 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
     @Override
     public void initTrace(final IResource resource, final String path, final Class<CtfTmfEvent> eventType)
             throws TmfTraceException {
+        super.initTrace(resource, path, eventType);
         EventDeclaration ed;
         ITmfEventField eventField;
         @SuppressWarnings("unused")
         CtfTmfEventType type;
 
-        this.fResource = resource;
         try {
             this.fTrace = new CTFTrace(path);
             for( int i =0 ; i< this.fTrace.getNbEventTypes(); i++) {
@@ -139,31 +114,6 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
         }
     }
 
-    private static ITmfEventField parseDeclaration(EventDeclaration ed) {
-        EventDefinition eventDef = ed.createDefinition(null);
-        return new CtfTmfContent(ITmfEventField.ROOT_FIELD_ID,
-                CtfTmfEvent.parseFields(eventDef));
-    }
-
-    /**
-     * Method dispose.
-     * @see org.eclipse.linuxtools.tmf.core.component.ITmfComponent#dispose()
-     */
-    @Override
-    public void dispose() {
-        TmfSignalManager.deregister(this);
-    }
-
-    /**
-     * Method broadcast.
-     * @param signal TmfSignal
-     * @see org.eclipse.linuxtools.tmf.core.component.ITmfComponent#broadcast(TmfSignal)
-     */
-    @Override
-    public void broadcast(final TmfSignal signal) {
-        TmfSignalManager.dispatchSignal(signal);
-    }
-
     /**
      * Method validate.
      * @param project IProject
@@ -172,7 +122,7 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
      * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#validate(IProject, String)
      */
     @Override
-    public boolean validate(final IProject project, final String path) {
+    public boolean validate(@SuppressWarnings("unused") final IProject project, final String path) {
         try {
             final CTFTrace temp = new CTFTrace(path);
             return temp.majortIsSet(); // random test
@@ -182,124 +132,6 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
         }
     }
 
-    // ------------------------------------------------------------------------
-    // Accessors
-    // ------------------------------------------------------------------------
-
-    /**
-     * Method getEventType.
-     * @return the trace path
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getEventType()
-     */
-    @Override
-    public Class<CtfTmfEvent> getEventType() {
-        return fType;
-    }
-
-    /**
-     * Method getNbEnvVars.
-     * @return int
-     */
-    public int getNbEnvVars() {
-        return this.fTrace.getEnvironment().size();
-    }
-
-
-    /**
-     * Method getEnvNames.
-     * @return String[]
-     */
-    public String[] getEnvNames() {
-        final String[] s = new String[getNbEnvVars()];
-        return this.fTrace.getEnvironment().keySet().toArray(s);
-    }
-
-    /**
-     * Method getEnvValue.
-     * @param key String
-     * @return String
-     */
-    public String getEnvValue(final String key)    {
-        return this.fTrace.getEnvironment().get(key);
-    }
-
-
-    /**
-
-     * @return the trace path * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getPath()
-     */
-    @Override
-    public String getPath() {
-        return this.fTrace.getPath();
-    }
-
-    /**
-     * Method getName.
-     * @return String
-     * @see org.eclipse.linuxtools.tmf.core.component.ITmfComponent#getName()
-     */
-    @Override
-    public String getName() {
-        String traceName = (fResource != null) ? fResource.getName() : null;
-        // If no resource was provided, extract the display name the trace path
-        if (traceName == null) {
-            final String path = this.fTrace.getPath();
-            final int sep = path.lastIndexOf(IPath.SEPARATOR);
-            traceName = (sep >= 0) ? path.substring(sep + 1) : path;
-        }
-        return traceName;
-    }
-
-    /**
-     * Method getCacheSize.
-     * @return int
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getCacheSize()
-     */
-    @Override
-    public int getCacheSize() {
-        return 50000; // not true, but it works
-    }
-
-    /**
-     * Method getNbEvents.
-     * @return long
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getNbEvents()
-     */
-    @Override
-    public long getNbEvents() {
-        return this.fNbEvents;
-    }
-
-    /**
-     * Method getTimeRange.
-     * @return TmfTimeRange
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getTimeRange()
-     */
-    @Override
-    public TmfTimeRange getTimeRange() {
-        return new TmfTimeRange(this.fStartTime, this.fEndTime);
-    }
-
-    /**
-     * Method getStartTime.
-     * @return ITmfTimestamp
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getStartTime()
-     */
-    @Override
-    public ITmfTimestamp getStartTime() {
-        return this.fStartTime;
-    }
-
-    /**
-     * Method getEndTime.
-     * @return ITmfTimestamp
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getEndTime()
-     */
-    @Override
-    public ITmfTimestamp getEndTime() {
-        return this.fEndTime;
-    }
-
     /**
      * Method getCurrentLocation. This is not applicable in CTF
      * @return null, since the trace has no knowledge of the current location
@@ -310,81 +142,18 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
         return null;
     }
 
-    // ------------------------------------------------------------------------
-    // Operators
-    // ------------------------------------------------------------------------
-
-    /**
-     * Method setTimeRange.
-     * @param range TmfTimeRange
-     */
-    protected void setTimeRange(final TmfTimeRange range) {
-        this.fStartTime = range.getStartTime();
-        this.fEndTime = range.getEndTime();
-    }
-
-    /**
-     * Method setStartTime.
-     * @param startTime ITmfTimestamp
-     */
-    protected void setStartTime(final ITmfTimestamp startTime) {
-        this.fStartTime = startTime;
-    }
-
-    /**
-     * Method setEndTime.
-     * @param endTime ITmfTimestamp
-     */
-    protected void setEndTime(final ITmfTimestamp endTime) {
-        this.fEndTime = endTime;
-    }
 
-    // ------------------------------------------------------------------------
-    // TmfProvider
-    // ------------------------------------------------------------------------
 
-    /**
-     * Method armRequest.
-     * @param request ITmfDataRequest<CtfTmfEvent>
-     * @return ITmfContext
-     */
     @Override
-    public ITmfContext armRequest(final ITmfDataRequest<CtfTmfEvent> request) {
-        if ((request instanceof ITmfEventRequest<?>)
-                && !TmfTimestamp.BIG_BANG
-                .equals(((ITmfEventRequest<CtfTmfEvent>) request)
-                        .getRange().getStartTime())
-                        && (request.getIndex() == 0)) {
-            final ITmfContext context = seekEvent(((ITmfEventRequest<CtfTmfEvent>) request)
-                    .getRange().getStartTime());
-            ((ITmfEventRequest<CtfTmfEvent>) request)
-            .setStartIndex((int) context.getRank());
-            return context;
-        }
-        return seekEvent(request.getIndex());
+    public double getLocationRatio(ITmfLocation<?> location) {
+        final CtfLocation curLocation = (CtfLocation) location;
+        CtfIterator iterator = new CtfIterator(this);
+        iterator.seek(curLocation.getLocation());
+        return ((double) iterator.getCurrentEvent().getTimestampValue() - iterator
+                .getStartTime())
+                / (iterator.getEndTime() - iterator.getStartTime());
     }
 
-//    /**
-//     * The trace reader keeps its own iterator: the "context" parameter here
-//     * will be ignored.
-//     *
-//     * If you wish to specify a new context, instantiate a new CtfIterator and
-//     * seek() it to where you want, and use that to read events.
-//     *
-//     * FIXME merge with getNextEvent below once they both use the same parameter
-//     * type.
-//     * @param context ITmfContext
-//     * @return CtfTmfEvent
-//     */
-//    @Override
-//    public CtfTmfEvent getNext(final ITmfContext context) {
-//        return readNextEvent(context);
-//    }
-
-    // ------------------------------------------------------------------------
-    // ITmfTrace
-    // ------------------------------------------------------------------------
-
     /**
      * Method seekEvent.
      * @param location ITmfLocation<?>
@@ -398,7 +167,7 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
             currentLocation = new CtfLocation(0L);
         }
         CtfIterator context = new CtfIterator(this);
-        
+
         if (currentLocation.getLocation() == CtfLocation.INVALID_LOCATION) {
             ((CtfTmfTimestamp) getEndTime()).setType(TimestampType.NANOS);
             currentLocation.setLocation(getEndTime().getValue() + 1);
@@ -408,70 +177,11 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
         return context;
     }
 
-    /**
-     * Method getLocationRatio.
-     * @param location ITmfLocation<?>
-     * @return double
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getLocationRatio(ITmfLocation<?>)
-     */
-    @Override
-    public double getLocationRatio(final ITmfLocation<?> location) {
-        final CtfLocation curLocation = (CtfLocation) location;
-        CtfIterator iterator = new CtfIterator(this);
-        iterator.seek(curLocation.getLocation());
-        return ((double) iterator.getCurrentEvent().getTimestampValue() - iterator
-                .getStartTime())
-                / (iterator.getEndTime() - iterator.getStartTime());
-    }
 
-    /**
-     * Method getStreamingInterval.
-     * @return long
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getStreamingInterval()
-     */
-    @Override
-    public long getStreamingInterval() {
-        return 0;
-    }
-
-    /**
-     * Method seekEvent.
-     * @param timestamp ITmfTimestamp
-     * @return ITmfContext
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#seekEvent(ITmfTimestamp)
-     */
-    @Override
-    public ITmfContext seekEvent(final ITmfTimestamp timestamp) {
-        CtfIterator context = new CtfIterator(this);
-        context.seek(timestamp.getValue());
-        context.setRank(ITmfContext.UNKNOWN_RANK);
-        return context;
-    }
-
-    /**
-     * Seek by rank
-     * @param rank long
-     * @return ITmfContext
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#seekEvent(long)
-     */
     @Override
-    public ITmfContext seekEvent(final long rank) {
+    public ITmfContext seekEvent(double ratio) {
         CtfIterator context = new CtfIterator(this);
-        context.seekRank(rank);
-        context.setRank(rank);
-        return context;
-    }
-
-    /**
-     * Seek rank ratio
-     * @param ratio double
-     * @return ITmfContext
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#seekEvent(double)
-     */
-    @Override
-    public ITmfContext seekEvent(final double ratio) {
-        CtfIterator context = new CtfIterator(this);
-        context.seek((long) (this.fNbEvents * ratio));
+        context.seek((long) (this.getNbEvents() * ratio));
         context.setRank(ITmfContext.UNKNOWN_RANK);
         return context;
     }
@@ -483,7 +193,7 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
      * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getNext(ITmfContext)
      */
     @Override
-    public CtfTmfEvent getNext(final ITmfContext context) {
+    public synchronized CtfTmfEvent getNext(final ITmfContext context) {
         CtfTmfEvent event = null;
         if (context instanceof CtfIterator) {
             CtfIterator ctfIterator = (CtfIterator) context;
@@ -494,17 +204,22 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
     }
 
     /**
-     * Method getResource.
-     * @return IResource
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getResource()
+     * Suppressing the warning, because the 'throws' will usually happen in
+     * sub-classes.
+     * @throws TmfTraceException
      */
-    @Override
-    public IResource getResource() {
-        return this.fResource;
+    @SuppressWarnings({ "static-method", "unused" })
+    protected void buildStateSystem() throws TmfTraceException {
+        /*
+         * Nothing is done in the basic implementation, please specify
+         * how/if to build a state system in derived classes.
+         */
+        return;
     }
 
     /**
      * Method getStateSystem.
+     *
      * @return IStateSystemQuerier
      */
     public IStateSystemQuerier getStateSystem() {
@@ -512,26 +227,70 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
     }
 
     /**
-     * Method getCTFTrace.
-     * @return CTFTrace
+     *
+     * @param ed
+     * @return
      */
-    CTFTrace getCTFTrace() {
+    private static ITmfEventField parseDeclaration(EventDeclaration ed) {
+        EventDefinition eventDef = ed.createDefinition(null);
+        return new CtfTmfContent(ITmfEventField.ROOT_FIELD_ID,
+                CtfTmfEvent.parseFields(eventDef));
+    }
+
+    /**
+     * gets the CTFtrace that this is wrapping
+     * @return the CTF trace
+     */
+    public CTFTrace getCTFTrace() {
         return fTrace;
     }
 
 
+    //-------------------------------------------
+    //        Environment Parameters
+    //-------------------------------------------
     /**
-     * Suppressing the warning, because the 'throws' will usually happen in
-     * sub-classes.
-     * @throws TmfTraceException
+     * Method getNbEnvVars.
+     *
+     * @return int
      */
-    @SuppressWarnings("static-method")
-    protected void buildStateSystem() throws TmfTraceException {
-        /*
-         * Nothing is done in the basic implementation, please specify
-         * how/if to build a state system in derived classes.
-         */
-        return;
+    public int getNbEnvVars() {
+        return this.fTrace.getEnvironment().size();
+    }
+
+    /**
+     * Method getEnvNames.
+     *
+     * @return String[]
+     */
+    public String[] getEnvNames() {
+        final String[] s = new String[getNbEnvVars()];
+        return this.fTrace.getEnvironment().keySet().toArray(s);
+    }
+
+    /**
+     * Method getEnvValue.
+     *
+     * @param key
+     *            String
+     * @return String
+     */
+    public String getEnvValue(final String key) {
+        return this.fTrace.getEnvironment().get(key);
+    }
+
+    //-------------------------------------------
+    //        Parser
+    //-------------------------------------------
+
+    @Override
+    public ITmfEvent parseEvent(ITmfContext context) {
+        CtfTmfEvent event = null;
+        if( context instanceof CtfIterator ){
+            CtfIterator itt = (CtfIterator) context;
+            event = itt.getCurrentEvent();
+        }
+        return event;
     }
 
 }
This page took 0.030517 seconds and 5 git commands to generate.