/*
* Copyright 2010 Red Hat, Inc. and/or its affiliates.
*
* 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 org.drools.core.reteoo;
import org.drools.core.common.NetworkNode;
/**
*
* ObjectSource : < NodeTypeEnums.ObjectSource *
* LeftTupleSource: > LeftTupleSource
* BetaNode : > BetaNode
*
* ObjectSink : % 2 == 0
* LeftSource : % 2 != 0
*
*/
public class NodeTypeEnums {
// ObjectSource, ObjectSink
public static final short EntryPointNode = 10;
public static final short ReteNode = 20;
public static final short ObjectTypeNode = 30;
public static final short AlphaNode = 40;
public static final short PropagationQueuingNode = 50;
public static final short WindowNode = 60;
public static final short PropagationQueueingNode = 65;
// ObjectSource, LeftTupleSink
public static final short RightInputAdaterNode = 71; // also ObjectSource %2 != 0
public static final short ObjectSource = 80;
// LefTTupleSink
public static final short QueryTerminalNode = 91;
public static final short RuleTerminalNode = 101;
// LeftTupleSource, LefTTupleSink
public static final short LeftTupleSource = 111;
public static final short LeftInputAdapterNode = 120; // also ObjectSink %2 == 0
public static final short EvalConditionNode = 131;
public static final short TimerConditionNode = 133;
public static final short QueryRiaFixerNode = 141;
public static final short FromNode = 151;
public static final short ReactiveFromNode = 153;
public static final short UnificationNode = 165; // these two need to be merged
public static final short QueryElementNode = 165;
public static final short ConditionalBranchNode = 167;
// LeftTupleSource, LefTTupleSink, BetaNode
public static final short BetaNode = 171;
public static final short JoinNode = 181;
public static final short NotNode = 191;
public static final short ExistsNode = 201;
public static final short AccumulateNode = 211;
public static final short ForallNotNode = 221;
public static final short ElseNode = 231;
//public static final short CollectNode = 5; // no longer used, since accumulate nodes execute collect logic now
// mdp not sure what number this should be yet
public static final short OperatorNode = 19;
public static boolean isObjectSource(NetworkNode node) {
return node.getType() < NodeTypeEnums.ObjectSource;
}
public static boolean isObjectSink(NetworkNode node) {
return node.getType() % 2 == 0;
}
public static boolean isLeftTupleSource(NetworkNode node) {
return node.getType() > NodeTypeEnums.LeftTupleSource;
}
public static boolean isBetaNode(NetworkNode node) {
return node.getType() > NodeTypeEnums.BetaNode;
}
public static boolean isTerminalNode(NetworkNode node) {
return node.getType() == QueryTerminalNode || node.getType() == RuleTerminalNode;
}
public static boolean isLeftTupleSink(NetworkNode node) {
return node.getType() % 2 != 0;
}
public static boolean isEndNode(NetworkNode node) {
return NodeTypeEnums.isTerminalNode(node) || NodeTypeEnums.RightInputAdaterNode == node.getType();
}
public static boolean isLeftTupleNode(NetworkNode node) {
return isLeftTupleSource(node) || isLeftTupleSink(node);
}
}