1 /*--------------------------------------------------------------------------
\r
2 * Copyright 2009 Taro L. Saito
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
15 *--------------------------------------------------------------------------*/
\r
16 //--------------------------------------
\r
20 // Since: 2009/05/13 22:28:04
\r
24 //--------------------------------------
\r
25 package org.xerial.lens.relation;
\r
27 import org.xerial.core.XerialError;
\r
28 import org.xerial.core.XerialErrorCode;
\r
32 * Base implementation of the TreeNode
\r
38 public abstract class NodeBase<NodeType> implements TupleElement<NodeType> {
\r
39 protected NodeBase() {}
\r
41 public boolean isAtom() {
\r
45 public boolean isTuple() {
\r
58 public Tuple<NodeType> castToTuple() {
\r
62 public TupleElement<NodeType> get(TupleIndex index) {
\r
63 if (index.size() == 0 && index.get(0) == 0)
\r
64 return (TupleElement<NodeType>) this;
\r
66 throw new XerialError(XerialErrorCode.INVALID_STATE);
\r
69 @SuppressWarnings("unchecked")
\r
70 public NodeType getElement(TupleIndex index) {
\r
71 if (!(index.size() == 1 && index.get(0) == 0))
\r
72 throw new XerialError(XerialErrorCode.INVALID_STATE);
\r
74 return (NodeType) this;
\r
77 @SuppressWarnings("unchecked")
\r
78 public NodeType castToElement() {
\r
79 return (NodeType) this;
\r
82 @SuppressWarnings("unchecked")
\r
83 public void accept(TupleElementVisitor<NodeType> visitor) {
\r
84 visitor.visitNode((NodeType) this);
\r