001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.*;
004
005/**
006 * Argument of trim function.
007 * <p> trim( [ [BOTH|TRAILING|LEADING] trim_character FROM ] trim_source)
008 * <p> method {@link gudusoft.gsqlparser.nodes.TTrimArgument#getBoth_trailing_leading()} return one
009 * of those keywords if any: BOTH|TRAILING|LEADING
010 * <p> method {@link gudusoft.gsqlparser.nodes.TTrimArgument#getTrimCharacter()} return a value of
011 * {@link TExpression} represents trim_character.
012 * <p> method {@link gudusoft.gsqlparser.nodes.TTrimArgument#getStringExpression()} return a value of
013 * {@link TExpression} reprsents trim_source.
014 *
015 */
016public class TTrimArgument extends TParseTreeNode {
017
018    private TExpression stringExpression = null;
019    private TExpression trimCharacter = null;
020    private TSourceToken  both_trailing_leading = null;
021    public boolean isBoth(){
022        if (both_trailing_leading == null) return false;
023        return both_trailing_leading.toString().equalsIgnoreCase("both");
024    }
025
026    public boolean isTrailing(){
027        if (both_trailing_leading == null) return false;
028        return both_trailing_leading.toString().equalsIgnoreCase("trailing");
029    }
030
031    public boolean isLeading(){
032        if (both_trailing_leading == null) return false;
033        return both_trailing_leading.toString().equalsIgnoreCase("leading");
034    }
035
036    public void init(Object arg1,Object arg2,Object arg3){
037        if (arg1 != null){
038            this.both_trailing_leading = (TSourceToken)arg1;
039        }
040        if (arg2 != null){
041            this.trimCharacter = (TExpression)arg2;
042        }
043        this.stringExpression = (TExpression)arg3;
044    }
045
046    public TSourceToken getBoth_trailing_leading() {
047        return both_trailing_leading;
048    }
049
050    public TExpression getStringExpression() {
051        return stringExpression;
052    }
053
054    public TExpression getTrimCharacter() {
055        return trimCharacter;
056    }
057
058    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
059        if (this.trimCharacter != null){
060            this.trimCharacter.doParse(psql,plocation);
061        }
062        this.stringExpression.doParse(psql,plocation);
063    }
064
065    public void accept(TParseTreeVisitor v){
066        v.preVisit(this);
067
068        v.postVisit(this);
069    }
070
071    public void acceptChildren(TParseTreeVisitor v){
072        v.preVisit(this);
073        this.stringExpression.acceptChildren(v);
074        v.postVisit(this);
075    }
076
077    public void setStringExpression(TExpression stringExpression) {
078        this.stringExpression = stringExpression;
079    }
080
081    public void setTrimCharacter(TExpression trimCharacter) {
082        this.trimCharacter = trimCharacter;
083    }
084}