tmf: Make Analysis Requirements implement Predicates
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Wed, 6 Apr 2016 18:05:07 +0000 (14:05 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Fri, 15 Apr 2016 18:32:58 +0000 (14:32 -0400)
This allows us to use requirements as filters.

Change-Id: Ib103e7fec613455e140d5c63c24e7d2f53248d9c
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/70049
Reviewed-by: Hudson CI
tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/requirements/AnalysisEventRequirementTest.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAbstractAnalysisModule.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisEventRequirement.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisRequirement.java

index a54e1877b8253aae281c67e8a95bd0b13f033fba..459c6ebb0483ab04e9baef4faba4adf4b5e3dba7 100644 (file)
@@ -92,14 +92,14 @@ public class AnalysisEventRequirementTest {
     public void testOptionalRequirements() {
         /* Test optional requirement */
         TmfAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1));
-        assertTrue(req.isFulfilled(fTrace));
+        assertTrue(req.test(fTrace));
 
         req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT3));
-        assertTrue(req.isFulfilled(fTrace));
+        assertTrue(req.test(fTrace));
 
         /* FIXME: if no optional requirement is fulfilled it should fail */
         req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT3));
-        assertTrue(req.isFulfilled(fTrace));
+        assertTrue(req.test(fTrace));
     }
 
     /**
@@ -109,17 +109,17 @@ public class AnalysisEventRequirementTest {
     public void testMandatoryRequirements() {
         /* Test mandatory requirement */
         TmfAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1), ValuePriorityLevel.MANDATORY);
-        assertTrue(req.isFulfilled(fTrace));
+        assertTrue(req.test(fTrace));
 
         req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT2), ValuePriorityLevel.MANDATORY);
-        assertTrue(req.isFulfilled(fTrace));
+        assertTrue(req.test(fTrace));
 
         /* Event 3 is not an event of the trace */
         req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT2, EVENT3), ValuePriorityLevel.MANDATORY);
-        assertFalse(req.isFulfilled(fTrace));
+        assertFalse(req.test(fTrace));
 
         req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT3), ValuePriorityLevel.MANDATORY);
-        assertFalse(req.isFulfilled(fTrace));
+        assertFalse(req.test(fTrace));
     }
 
     /**
@@ -132,10 +132,10 @@ public class AnalysisEventRequirementTest {
         TmfTrace traceNoEvents = new TmfTraceStub();
 
         TmfAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT3), ValuePriorityLevel.MANDATORY);
-        assertTrue(req.isFulfilled(traceNoEvents));
+        assertTrue(req.test(traceNoEvents));
 
         req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT2), ValuePriorityLevel.OPTIONAL);
-        assertTrue(req.isFulfilled(traceNoEvents));
+        assertTrue(req.test(traceNoEvents));
 
     }
 
index d005443d417414fd777db43717b2788f0b7a4014..8107f3ddf657400507942652a3ed72ab2da632a1 100644 (file)
@@ -211,7 +211,7 @@ public abstract class TmfAbstractAnalysisModule extends TmfComponent
     @Override
     public boolean canExecute(ITmfTrace trace) {
         for (TmfAnalysisRequirement requirement : getAnalysisRequirements()) {
-            if (!requirement.isFulfilled(trace)) {
+            if (!requirement.test(trace)) {
                 return false;
             }
         }
@@ -492,7 +492,7 @@ public abstract class TmfAbstractAnalysisModule extends TmfComponent
         StringBuilder builder = new StringBuilder();
         builder.append(NLS.bind(Messages.TmfAbstractAnalysisModule_AnalysisCannotExecute, getName()));
         for (TmfAnalysisRequirement requirement : getAnalysisRequirements()) {
-            if (!requirement.isFulfilled(trace)) {
+            if (!requirement.test(trace)) {
                 builder.append("\n\n"); //$NON-NLS-1$
                 builder.append(NLS.bind(Messages.TmfAnalysis_RequirementNotFulfilled, requirement.getType()));
                 builder.append("\n"); //$NON-NLS-1$
index dcc05a8e58862d9f024493c4f1d877a89e4edb04..e87c392fd13febe7adf56a22e62f7056f1696c0e 100644 (file)
@@ -11,7 +11,6 @@ package org.eclipse.tracecompass.tmf.core.analysis.requirements;
 
 import java.util.Set;
 
-import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTraceWithPreDefinedEvents;
 import org.eclipse.tracecompass.tmf.core.trace.TmfEventTypeCollectionHelper;
@@ -50,7 +49,7 @@ public class TmfAnalysisEventRequirement extends TmfAnalysisRequirement {
     }
 
     @Override
-    public boolean isFulfilled(@NonNull ITmfTrace trace) {
+    public boolean test(ITmfTrace trace) {
 
         if (trace instanceof ITmfTraceWithPreDefinedEvents) {
             Set<String> traceEvents = TmfEventTypeCollectionHelper.getEventNames(((ITmfTraceWithPreDefinedEvents) trace).getContainedEventTypes());
index c005442069dc5734ea76672fb81287ebe3a160ec..369437703bd50e405ff54d5cbe22b5e585875a10 100644 (file)
@@ -18,6 +18,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
@@ -46,7 +47,7 @@ import org.eclipse.tracecompass.tmf.core.trace.TmfEventTypeCollectionHelper;
  * @author Mathieu Rail
  * @since 2.0
  */
-public class TmfAnalysisRequirement {
+public class TmfAnalysisRequirement implements Predicate<ITmfTrace> {
 
     /**
      * String for requirement type 'event', that can be used by analysis
@@ -277,7 +278,8 @@ public class TmfAnalysisRequirement {
      *            The trace on which to check for this requirement
      * @return True if the trace has all mandatory values of this requirement
      */
-    public boolean isFulfilled(ITmfTrace trace) {
+    @Override
+    public boolean test(ITmfTrace trace) {
         switch (fType) {
         case TYPE_EVENT:
             if (trace instanceof ITmfTraceWithPreDefinedEvents) {
This page took 0.029946 seconds and 5 git commands to generate.