tracecompass: Augment confidence for JUL traces

This makes the JUL trace validation more confident when it is a UST
trace with only one event that is the lttng_jul:event

Change-Id: Ib5582637c965bd930aaf4b77122153f181ed5488
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/153725
Tested-by: CI Bot
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
diff --git a/tracetypes/org.eclipse.tracecompass.incubator.tracecompass.core/src/org/eclipse/tracecompass/incubator/internal/tracecompass/core/trace/LttngTraceCompassJulTrace.java b/tracetypes/org.eclipse.tracecompass.incubator.tracecompass.core/src/org/eclipse/tracecompass/incubator/internal/tracecompass/core/trace/LttngTraceCompassJulTrace.java
index 1fb57f6..4acef82 100644
--- a/tracetypes/org.eclipse.tracecompass.incubator.tracecompass.core/src/org/eclipse/tracecompass/incubator/internal/tracecompass/core/trace/LttngTraceCompassJulTrace.java
+++ b/tracetypes/org.eclipse.tracecompass.incubator.tracecompass.core/src/org/eclipse/tracecompass/incubator/internal/tracecompass/core/trace/LttngTraceCompassJulTrace.java
@@ -9,13 +9,29 @@
 
 package org.eclipse.tracecompass.incubator.internal.tracecompass.core.trace;
 
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.incubator.internal.tracecompass.core.Activator;
+import org.eclipse.tracecompass.tmf.core.trace.TraceValidationStatus;
 import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTraceValidationStatus;
 
 /**
  * @author Geneviève Bastien
  */
 public class LttngTraceCompassJulTrace extends CtfTmfTrace {
 
+    private static final int CONFIDENCE = 101;
+    /**
+     * UST domain event created by a Java application.
+     */
+    private static final String LTTNG_JUL_EVENT = "lttng_jul:event"; //$NON-NLS-1$
+
     /**
      * Default constructor
      */
@@ -24,6 +40,35 @@
 
     }
 
+    /**
+     * {@inheritDoc}
+     * <p>
+     * This implementation sets the confidence to 100 if the trace is a valid
+     * CTF trace in the "ust" domain.
+     */
+    @Override
+    public IStatus validate(final @Nullable IProject project, final @Nullable String path) {
+        IStatus status = super.validate(project, path);
+        if (status instanceof CtfTraceValidationStatus) {
+            Map<String, String> environment = ((CtfTraceValidationStatus) status).getEnvironment();
+            /* Make sure the domain is "ust" in the trace's env vars */
+            String domain = environment.get("domain"); //$NON-NLS-1$
+            if (domain == null || !domain.equals("\"ust\"")) { //$NON-NLS-1$
+                return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Not a UST trace, so not a JUL trace"); //$NON-NLS-1$
+            }
+
+            // Augment the confidence if there is only one event that is a jul
+            // event
+            Collection<String> eventNames = ((CtfTraceValidationStatus) status).getEventNames();
+            if (eventNames.size() == 1) {
+                if (LTTNG_JUL_EVENT.equals(eventNames.iterator().next())) {
+                    return new TraceValidationStatus(CONFIDENCE, Activator.PLUGIN_ID);
+                }
+            }
+        }
+        return status;
+    }
+
 //    @Override
 //    protected int getAverageEventSize() {
 //        return 300;