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}