1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
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 }