ss: Move plugins to Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / project / model / TraceTypeHelper.java
index 4331bdbcd7ff213b42a8b4773d77323c5d26c5d8..b647038809de05dd01aa4ce1739e856729b69b1c 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013 Ericsson
+ * Copyright (c) 2013, 2014 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,14 +8,20 @@
  *
  * Contributors:
  *   Matthew Khouzam - Initial API and implementation
+ *   Bernd Hufmann - Handling of directory traces types
+ *   Geneviève Bastien - Added support of experiment types
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.core.project.model;
 
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.linuxtools.tmf.core.project.model.TmfTraceType.TraceElementType;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
+import org.eclipse.linuxtools.tmf.core.trace.TraceValidationStatus;
 
 /**
- * TraceTypeHelper, a helper that can link a few names to a configuation element
+ * TraceTypeHelper, a helper that can link a few names to a configuration element
  * and a trace
  *
  * @author Matthew Khouzam
@@ -26,7 +32,10 @@ public class TraceTypeHelper {
     private final String fName;
     private final String fCategoryName;
     private final String fCanonicalName;
+    private final TraceElementType fElementType;
+    @NonNull
     private final ITmfTrace fTrace;
+    private final boolean fIsDirectory;
 
     /**
      * Constructor for a trace type helper. It is a link between a canonical
@@ -41,12 +50,18 @@ public class TraceTypeHelper {
      *            the name of the trace
      * @param trace
      *            an object of the trace type
+     * @param isDir
+     *            flag indicating whether the trace type is for a directory or file trace
+     * @param elementType
+     *            True if this helper is for an experiment type
      */
-    public TraceTypeHelper(String canonicalName, String categoryName, String name, ITmfTrace trace) {
+    public TraceTypeHelper(String canonicalName, String categoryName, String name, @NonNull ITmfTrace trace, boolean isDir, TraceElementType elementType) {
         fName = name;
         fCategoryName = categoryName;
         fCanonicalName = canonicalName;
         fTrace = trace;
+        fIsDirectory = isDir;
+        fElementType = elementType;
     }
 
     /**
@@ -83,12 +98,28 @@ public class TraceTypeHelper {
      *            the trace to validate
      * @return whether it passes the validation
      */
-    public boolean validate(String path) {
-        boolean valid = false;
-        if (fTrace != null) {
-            valid = standardValidate(path);
+    public IStatus validate(String path) {
+        return fTrace.validate(null, path);
+    }
+
+    /**
+     * Validate a trace against this trace type with confidence level
+     *
+     * @param path
+     *            the trace to validate
+     * @return the confidence level (0 is lowest) or -1 if validation fails
+     * @since 3.0
+     */
+    public int validateWithConfidence(String path) {
+        int result = -1;
+        IStatus status = fTrace.validate(null, path);
+        if (status.isOK()) {
+            result = 0;
+            if (status instanceof TraceValidationStatus) {
+                result = ((TraceValidationStatus) status).getConfidence();
+            }
         }
-        return valid;
+        return result;
     }
 
     /**
@@ -100,9 +131,13 @@ public class TraceTypeHelper {
         return fTrace;
     }
 
-    private boolean standardValidate(String path) {
-        final boolean valid = fTrace.validate(null, path).isOK();
-        return valid;
+    /**
+     * Return whether this helper applies to a trace type or experiment type
+     *
+     * @return True if experiment type, false otherwise
+     */
+    public boolean isExperimentType() {
+        return fElementType == TraceElementType.EXPERIMENT;
     }
 
     /**
@@ -115,6 +150,15 @@ public class TraceTypeHelper {
         return fTrace.getClass();
     }
 
+    /**
+     * Returns whether trace type is for a directory trace or a single file trace
+     * @return <code>true</code> if trace type is for a directory trace else <code>false</code>
+     */
+    public boolean isDirectoryTraceType() {
+        return fIsDirectory;
+    }
+
+
     @Override
     public String toString() {
         return fName;
This page took 0.026362 seconds and 5 git commands to generate.