001
002package gudusoft.gsqlparser.pp.stmtformatter.type.comm;
003
004import gudusoft.gsqlparser.pp.processor.type.comm.AbstractProcessor;
005import gudusoft.gsqlparser.pp.stmtformatter.type.AbstractStmtFormatter;
006import gudusoft.gsqlparser.stmt.TStoredProcedureSqlStatement;
007
008import java.util.ArrayList;
009import java.util.List;
010
011public class PlsqlStmtFormatter extends
012                AbstractStmtFormatter<TStoredProcedureSqlStatement>
013{
014
015        /**
016         * used to process all the parameters
017         */
018        private List<AbstractProcessor> parameterListProcessors;
019
020        public void addParameterProcessor( AbstractProcessor p )
021        {
022                if ( this.parameterListProcessors == null )
023                {
024                        this.parameterListProcessors = new ArrayList<AbstractProcessor>( );
025                }
026                this.parameterListProcessors.add( p );
027        }
028
029        /**
030         * used to process all the parameters
031         */
032        private List<AbstractProcessor> declareProcessors;
033
034        public void addDeclareProcessor( AbstractProcessor p )
035        {
036                if ( this.declareProcessors == null )
037                {
038                        this.declareProcessors = new ArrayList<AbstractProcessor>( );
039                }
040                this.declareProcessors.add( p );
041        }
042
043        private List<AbstractProcessor> bodyProcessors;
044
045        public void addBodyProcessor( AbstractProcessor p )
046        {
047                if ( this.bodyProcessors == null )
048                {
049                        this.bodyProcessors = new ArrayList<AbstractProcessor>( );
050                }
051                this.bodyProcessors.add( p );
052        }
053
054        private List<AbstractProcessor> beginAndEndProcessors;
055
056        public void addBeginAndEndProcessor( AbstractProcessor p )
057        {
058                if ( this.beginAndEndProcessors == null )
059                {
060                        this.beginAndEndProcessors = new ArrayList<AbstractProcessor>( );
061                }
062                this.beginAndEndProcessors.add( p );
063        }
064
065        @Override
066        protected void doFormat( TStoredProcedureSqlStatement stmt )
067        {
068                this.runProcessor( this.getSpecialProcessors( ), stmt );
069                // process the parameters
070                if ( stmt.getParameterDeclarations( ) != null
071                                && stmt.getParameterDeclarations( ).size( ) > 0 )
072                {
073                        this.runProcessor( this.parameterListProcessors,
074                                        stmt.getParameterDeclarations( ) );
075                }
076
077                if ( stmt.getBodyStatements( ) != null
078                                && stmt.getBodyStatements( ).size( ) > 0 )
079                {
080                        this.runProcessor( this.bodyProcessors, stmt.getBodyStatements( ) );
081                }
082                if ( stmt.getDeclareStatements( ) != null
083                                && stmt.getDeclareStatements( ).size( ) > 0 )
084                {
085                        this.runProcessor( this.declareProcessors,
086                                        stmt.getDeclareStatements( ) );
087                }
088        }
089}