// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.tasktrees.taskequality; import java.util.Collection; import de.ugoe.cs.autoquest.eventcore.Event; import de.ugoe.cs.autoquest.eventcore.gui.Scroll; import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; /** *
* This comparison rule compares two events if they represent inefficient actions. Which * events are considered inefficient actions is checked in the method * {@link #isInefficientAction(Event)}. Two events are considered lexically equal, if * both represent an inefficient action. There is no further distinction so far. *
* * @author Patrick Harms */ public class InefficientActionsComparisonRule implements TaskComparisonRule { /* (non-Javadoc) * @see TaskComparisonRule#isApplicable(ITask, ITask) */ @Override public boolean isApplicable(ITask task1, ITask task2) { if ((task1 instanceof IEventTask) && (task2 instanceof IEventTask)) { IEventTaskInstance instance1 = (IEventTaskInstance) task1.getInstances().iterator().next(); IEventTaskInstance instance2 = (IEventTaskInstance) task2.getInstances().iterator().next(); return isApplicable(instance1, instance2); } else { return false; } } /* (non-Javadoc) * @see TaskComparisonRule#areLexicallyEqual(ITask, ITask) */ @Override public boolean areLexicallyEqual(ITask task1, ITask task2) { Collection* This method checks, if an event represents an inefficient action. This is currently the case * if the event type is a {@link Scroll} or if its string representation is either "headRotated" * or "headMoved". *
* * @param event the event to check if it is an inefficient action * * @return as described */ private boolean isInefficientAction(Event event) { return (event.getType() instanceof Scroll) || ("headRotated".equals(event.getType().toString())) || ("headMoved".equals(event.getType().toString())); } }