001package gudusoft.gsqlparser.nodes;
002
003public class TCreateTypeSqlNode  extends TParseTreeNode{
004
005    public enum ECreateTypeKind {
006        composite,   // CREATE TYPE name AS (col type, ...)
007        enumType,    // CREATE TYPE name AS ENUM ('val', ...)
008        rangeType,   // CREATE TYPE name AS RANGE (subtype = ..., ...)
009        baseType,    // CREATE TYPE name (INPUT = ..., OUTPUT = ..., ...)
010        shellType,   // CREATE TYPE name (no body)
011        structType,  // CREATE TYPE name AS STRUCT(col type, ...)
012        unionType,   // CREATE TYPE name AS UNION(col type, ...)
013        aliasType    // CREATE TYPE name AS typename
014    }
015
016    private TObjectName typeName;
017    private TColumnDefinitionList attributeList;
018    private ECreateTypeKind createTypeKind = ECreateTypeKind.composite;
019    private TTypeName targetTypeName;
020
021    public TObjectName getTypeName() {
022        return typeName;
023    }
024
025    public TColumnDefinitionList getAttributeList() {
026        return attributeList;
027    }
028
029    public ECreateTypeKind getCreateTypeKind() {
030        return createTypeKind;
031    }
032
033    public TTypeName getTargetTypeName() {
034        return targetTypeName;
035    }
036
037    public void init(Object arg1){
038        this.typeName = (TObjectName)arg1;
039    }
040
041    public void init(Object arg1, Object arg2){
042        this.typeName = (TObjectName)arg1;
043        this.attributeList = (TColumnDefinitionList)arg2;
044    }
045
046    public void init(Object arg1, Object arg2, Object arg3){
047        this.typeName = (TObjectName)arg1;
048        this.createTypeKind = (ECreateTypeKind)arg2;
049        if (arg3 instanceof TColumnDefinitionList) {
050            this.attributeList = (TColumnDefinitionList)arg3;
051        } else if (arg3 instanceof TTypeName) {
052            this.targetTypeName = (TTypeName)arg3;
053        }
054    }
055}