requirements: Implement all level for event names and fields
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.core / src / org / eclipse / tracecompass / tmf / core / analysis / requirements / TmfAnalysisEventRequirement.java
index 59ec2a6a798d28d75346191f49c4a6b5b5d7d0b9..6fc4c4f5291b0b215425972891e4d124474ba8bc 100644 (file)
@@ -10,7 +10,6 @@
 package org.eclipse.tracecompass.tmf.core.analysis.requirements;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Set;
 
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
@@ -53,14 +52,27 @@ public class TmfAnalysisEventRequirement extends TmfAbstractAnalysisRequirement
     @Override
     public boolean test(ITmfTrace trace) {
 
-        // TODO: implement for all levels
-        if (trace instanceof ITmfTraceWithPreDefinedEvents) {
-            Set<String> traceEvents = TmfEventTypeCollectionHelper.getEventNames(((ITmfTraceWithPreDefinedEvents) trace).getContainedEventTypes());
-            Set<String> mandatoryValues = getPriorityLevel().equals(PriorityLevel.MANDATORY) ? getValues() : Collections.EMPTY_SET;
-            return traceEvents.containsAll(mandatoryValues);
+        if (!(trace instanceof ITmfTraceWithPreDefinedEvents)) {
+            return true;
         }
 
-        return true;
+        Set<String> traceEvents = TmfEventTypeCollectionHelper.getEventNames(((ITmfTraceWithPreDefinedEvents) trace).getContainedEventTypes());
+        Set<String> values = getValues();
+
+        switch (getPriorityLevel()) {
+        case ALL_OR_NOTHING:
+            traceEvents.retainAll(values);
+            return (traceEvents.size() == 0 || traceEvents.size() == values.size());
+        case AT_LEAST_ONE:
+            traceEvents.retainAll(values);
+            return traceEvents.size() > 0;
+        case MANDATORY:
+            return traceEvents.containsAll(values);
+        case OPTIONAL:
+            return true;
+        default:
+            throw new IllegalStateException("Unknown value level: " + getPriorityLevel()); //$NON-NLS-1$
+        }
     }
 
 }
This page took 0.026802 seconds and 5 git commands to generate.