001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.TSourceToken;
004
005public class TRoleOption extends TParseTreeNode {
006
007    private ERoleOption optionType;
008    private String password;
009    private String validUntil;
010    private int connectionLimit = -1;
011
012    public String getPassword() {
013        return password;
014    }
015
016    public ERoleOption getOptionType() {
017        return optionType;
018    }
019
020    public String getValidUntil() {
021        return validUntil;
022    }
023
024    public int getConnectionLimit() {
025        return connectionLimit;
026    }
027
028    public void init(Object arg1) {
029        TSourceToken token = (TSourceToken) arg1;
030        String text = token.toString();
031
032        if (text.equalsIgnoreCase("LOGIN")) {
033            optionType = ERoleOption.login;
034        } else if (text.equalsIgnoreCase("NOLOGIN")) {
035            optionType = ERoleOption.nologin;
036        } else if (text.equalsIgnoreCase("SUPERUSER")) {
037            optionType = ERoleOption.superuser;
038        } else if (text.equalsIgnoreCase("NOSUPERUSER")) {
039            optionType = ERoleOption.nosuperuser;
040        } else if (text.equalsIgnoreCase("INHERIT")) {
041            optionType = ERoleOption.inherit;
042        } else if (text.equalsIgnoreCase("NOINHERIT")) {
043            optionType = ERoleOption.noinherit;
044        } else if (text.equalsIgnoreCase("CREATEDB")) {
045            optionType = ERoleOption.createdb;
046        } else if (text.equalsIgnoreCase("NOCREATEDB")) {
047            optionType = ERoleOption.nocreatedb;
048        } else if (text.equalsIgnoreCase("CREATEROLE")) {
049            optionType = ERoleOption.createrole;
050        } else if (text.equalsIgnoreCase("NOCREATEROLE")) {
051            optionType = ERoleOption.nocreaterole;
052        } else if (text.equalsIgnoreCase("REPLICATION")) {
053            optionType = ERoleOption.replication;
054        } else if (text.equalsIgnoreCase("NOREPLICATION")) {
055            optionType = ERoleOption.noreplication;
056        } else if (text.equalsIgnoreCase("BYPASSRLS")) {
057            optionType = ERoleOption.bypassrls;
058        } else if (text.equalsIgnoreCase("NOBYPASSRLS")) {
059            optionType = ERoleOption.nobypassrls;
060        } else if (text.equalsIgnoreCase("PASSWORD")) {
061            optionType = ERoleOption.password;
062        } else if (text.equalsIgnoreCase("VALID")) {
063            optionType = ERoleOption.validuntil;
064        } else if (text.equalsIgnoreCase("CONNECTION")) {
065            optionType = ERoleOption.connectionlimit;
066        }
067    }
068
069    public void init(Object arg1, Object arg2) {
070        this.init(arg1);
071
072        if (optionType == null) {
073            return;
074        }
075
076        switch (optionType) {
077            case password:
078                if (arg2 instanceof TSourceToken) {
079                    this.password = ((TSourceToken) arg2).toString();
080                }
081                break;
082            case validuntil:
083                if (arg2 instanceof TSourceToken) {
084                    this.validUntil = ((TSourceToken) arg2).toString();
085                }
086                break;
087            case connectionlimit:
088                if (arg2 instanceof TSourceToken) {
089                    try {
090                        this.connectionLimit = Integer.parseInt(((TSourceToken) arg2).toString());
091                    } catch (NumberFormatException e) {
092                        // ignore
093                    }
094                }
095                break;
096            default:
097                break;
098        }
099
100    }
101
102    public void accept(TParseTreeVisitor v){
103        v.preVisit(this);
104        v.postVisit(this);
105    }
106
107    public void acceptChildren(TParseTreeVisitor v){
108        v.preVisit(this);
109        v.postVisit(this);
110    }    
111
112}