View Javadoc

1   //
2   // Copyright (c) 2004, International Decision Systems
3   // all rights reserved
4   /*
5    * Copyright (c) 2004 International Decision Systems, Inc.  All Rights Reserved.
6    *
7    * By using this Software, You acknowledge that the Software is a valuable asset
8    * and trade secret of either International Decision Systems, Inc. ("IDSI") or a
9    * third party supplier of IDSI and constitutes confidential and proprietary
10   * information.
11   *
12   * NEITHER IDSI NOR ANY AGENT OR PERSON ACTING FOR OR WITH IDSI HAS MADE OR DOES
13   * MAKE ANY STATEMENTS, AFFIRMATIONS, REPRESENTATIONS OR WARRANTIES WHATSOEVER
14   * TO YOU, WHETHER EXPRESS OR IMPLIED, AS TO THE SOFTWARE, THE QUALITY OR
15   * CONDITION OF THE SOFTWARE, OR THE OPERATING CHARACTERISTICS OR RELIABILITY OF
16   * THE SOFTWARE, OR ITS SUITABILITY FOR ANY GENERAL OR PARTICULAR PURPOSE, OR AS
17   * TO ANY OTHER MATTER WHATSOEVER; ANY AND ALL OTHER WARRANTIES INCLUDING
18   * WITHOUT LIMITATION ANY WARRANTIES IMPLIED BY LAW, SUCH AS THE IMPLIED
19   * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND TITLE,
20   * USE AND NON-INFRINGEMENT; ARE HEREBY EXPRESSLY DISCLAIMED AND EXCLUDED.
21  */
22  package net.sourceforge.addam.ddlrun.grammars;
23  
24  /**
25   * ENTER A DESCRIPTION HERE
26   *
27   * @author TIM3
28   * @since Mar 6, 2005
29   */
30  public class OracleGrammar implements ScriptGrammar {
31      private static final String COMPLEX_STATEMENT_TERMINATOR = "\n/";
32      private static final String SIMPLE_STATEMENT_TERMINATOR = ";";
33      private static final String DATABASE = "oracle";
34  
35      public boolean shouldIgnore(String line) {
36          line = line.trim().toUpperCase();
37          if (line.length() == 0) return true;
38          if (line.startsWith("SET")) return true;
39          if (line.startsWith("--")) return true;
40          if (line.startsWith("Prompt")) return true;
41          if (line.startsWith("/*")) return true;
42          return false;
43      }
44  
45      public boolean hasSimpleStatementTerminator(String line) {
46          line = line.trim();
47          if (line.endsWith(COMPLEX_STATEMENT_TERMINATOR)) return true;
48          if (line.endsWith(SIMPLE_STATEMENT_TERMINATOR)) return true;
49          return false;
50      }
51  
52      public String removeSimpleStatementTerminator(String line) {
53          line = this.removeComplexStatementTerminator(line);
54          int i = line.lastIndexOf(SIMPLE_STATEMENT_TERMINATOR);
55          if (i > 0) {
56              line = line.substring(0, i);
57          }
58          return line;
59      }
60  
61      public boolean beginsComplexStatement(String line) {
62          line = line.trim().toUpperCase();
63          if (line.startsWith("BEGIN")) return true;
64          if (line.startsWith("DECLARE")) return true;
65          if (line.startsWith("CREATE OR REPLACE")) {
66              // CREATE/REPLACE VIEW is treated as a simple statement
67              return (line.indexOf(" VIEW ") == -1);
68  
69          }
70          return false;
71      }
72  
73      public boolean hasComplexStatementTerminator(String line) {
74          line = line.trim();
75          if (line.endsWith(COMPLEX_STATEMENT_TERMINATOR)) return true;
76          return false;
77      }
78  
79      public String removeComplexStatementTerminator(String line) {
80          int i = line.lastIndexOf(COMPLEX_STATEMENT_TERMINATOR);
81          if (i > 0) {
82              line = line.substring(0, i);
83          }
84          return line;
85      }
86  
87      public String name() {
88          return DATABASE;
89      }
90  }