001package gudusoft.gsqlparser.nodes.vertica;
002
003import gudusoft.gsqlparser.nodes.TBaseTablePartition;
004import gudusoft.gsqlparser.nodes.TConstant;
005import gudusoft.gsqlparser.nodes.TExpression;
006import gudusoft.gsqlparser.nodes.TGroupBy;
007import gudusoft.gsqlparser.ETablePartitionType;
008import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
009
010public class TVerticaPartition extends TBaseTablePartition {
011
012    private TExpression partitionExpression;  // The main partition expression
013    private TGroupBy groupByExpression;    // Optional GROUP BY expression
014    private TExpression activePartitionCount;   // Optional ACTIVEPARTITIONCOUNT value
015
016    public TExpression getPartitionExpression() {
017        return partitionExpression;
018    }
019
020    public TGroupBy getGroupByExpression() {
021        return groupByExpression;
022    }
023
024    public TExpression getActivePartitionCount() {
025        return activePartitionCount;
026    }
027
028    public void init(Object arg1) {
029        this.tablePartitionType = ETablePartitionType.vertica;  // Need to add this to ETablePartitionType enum
030        if (arg1 instanceof TExpression) {
031            this.partitionExpression = (TExpression) arg1;
032        }
033    }
034
035    public void init(Object arg1, Object arg2) {
036        init(arg1);
037        if (arg2 instanceof TGroupBy) {
038            this.groupByExpression = (TGroupBy) arg2;
039        }
040    }
041
042    public void init(Object arg1, Object arg2, Object arg3) {
043        init(arg1, arg2);
044        if (arg3 instanceof TExpression) {
045            this.activePartitionCount = (TExpression) arg3;
046        }
047    }
048
049    public void accept(TParseTreeVisitor v) {
050        v.preVisit(this);
051        if (partitionExpression != null) {
052            partitionExpression.accept(v);
053        }
054        if (groupByExpression != null) {
055            groupByExpression.accept(v);
056        }
057        v.postVisit(this);
058    }
059
060    public void acceptChildren(TParseTreeVisitor v) {
061        v.preVisit(this);
062        if (partitionExpression != null) {
063            partitionExpression.acceptChildren(v);
064        }
065        if (groupByExpression != null) {
066            groupByExpression.acceptChildren(v);
067        }
068        v.postVisit(this);
069    }
070}