...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
package de.uniol.inf.is.odysseus.transform.rules; import de.uniol.inf.is.odysseus.core.server.logicaloperator.RouteAO; import de.uniol.inf.is.odysseus.core.server.physicaloperator.RoutePO; import de.uniol.inf.is.odysseus.core.server.planmanagement.TransformationConfiguration; import de.uniol.inf.is.odysseus.ruleengine.ruleflow.IRuleFlowGroup; import de.uniol.inf.is.odysseus.transform.flow.TransformRuleFlowGroup; import de.uniol.inf.is.odysseus.transform.rule.AbstractTransformationRule; @SuppressWarnings({"unchecked","rawtypes"}) public class TRouteAORule extends AbstractTransformationRule<RouteAO> { @Override public int getPriority() { return 0; } @Override public void execute(RouteAO routeAO, TransformationConfiguration config) { defaultExecute(routeAO, new RoutePO(routeAO.getPredicates()), config, true, true); } @Override public boolean isExecutable(RouteAO operator, TransformationConfiguration transformConfig) { return operator.isAllPhysicalInputSet(); } @Override public String getName() { return "RouteAO -> RoutePO"; } @Override public IRuleFlowGroup getRuleFlowGroup() { return TransformRuleFlowGroup.TRANSFORMATION; } @Override public Class<? super RouteAO> getConditionClass() { return RouteAO.class; } } |
Deprecated: The following is no longer needed.
Next, Odysseus needs to know this rule. This is done by a RuleProvider. Create a new class, which we call RuleProvider:
...