001    package org.mesopotamia;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    import biz.hammurapi.util.CollectionVisitable;
007    import biz.hammurapi.util.Visitor;
008    
009    /**
010     * This class represents "raw" syntax tree node.
011     * @author Pavel Vlasov
012     */
013    public class MesopotamiaNode extends NodeData {
014            
015            private String typeName;
016            
017            public MesopotamiaNode(String typeName, MesopotamiaNode parent) {
018                    this.parent = parent;
019                    this.typeName = typeName;
020            }
021            
022            private MesopotamiaNode parent;
023            private List<MesopotamiaNode> children = new ArrayList<MesopotamiaNode>();
024            
025            public List<MesopotamiaNode> getChildren() {
026                    return children;
027            }
028            
029            public void setChildren(List<MesopotamiaNode> children) {
030                    this.children = children;
031            }
032            
033            public MesopotamiaNode getParent() {
034                    return parent;
035            }
036            
037            @Override
038            public Object clone() throws CloneNotSupportedException {
039                    MesopotamiaNode ret = (MesopotamiaNode) super.clone();
040                    ret.typeName = getTypeName();
041                    return ret;
042            }
043            
044            protected void acceptChildren(Visitor visitor) {
045                    new CollectionVisitable(children, false).accept(visitor);
046            }
047            
048            public String getTypeName() {
049                    return typeName;
050            }
051            
052            public String toString() {
053                    return getTypeName()+" "+getText();
054            }
055            
056    }