From: Matthew Khouzam Date: Wed, 6 Apr 2016 18:05:07 +0000 (-0400) Subject: tmf: Make Analysis Requirements implement Predicates X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=e44d631309932278578005f6386c6c316e756d8d;p=deliverable%2Ftracecompass.git tmf: Make Analysis Requirements implement Predicates This allows us to use requirements as filters. Change-Id: Ib103e7fec613455e140d5c63c24e7d2f53248d9c Signed-off-by: Matthew Khouzam Reviewed-on: https://git.eclipse.org/r/70049 Reviewed-by: Hudson CI --- diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/requirements/AnalysisEventRequirementTest.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/requirements/AnalysisEventRequirementTest.java index a54e1877b8..459c6ebb04 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/requirements/AnalysisEventRequirementTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/requirements/AnalysisEventRequirementTest.java @@ -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)); } diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAbstractAnalysisModule.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAbstractAnalysisModule.java index d005443d41..8107f3ddf6 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAbstractAnalysisModule.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAbstractAnalysisModule.java @@ -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$ diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisEventRequirement.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisEventRequirement.java index dcc05a8e58..e87c392fd1 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisEventRequirement.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisEventRequirement.java @@ -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 traceEvents = TmfEventTypeCollectionHelper.getEventNames(((ITmfTraceWithPreDefinedEvents) trace).getContainedEventTypes()); diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisRequirement.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisRequirement.java index c005442069..369437703b 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisRequirement.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/requirements/TmfAnalysisRequirement.java @@ -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 { /** * 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) {