Skip to content

Commit 0ba6527

Browse files
committed
CreateView merged in
1 parent b2eff8b commit 0ba6527

File tree

6 files changed

+165
-150
lines changed

6 files changed

+165
-150
lines changed

nb-configuration.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,5 @@ That way multiple projects can share the same settings (useful for formatting ru
1414
Any value defined here will override the pom.xml file value but is only applicable to the current project.
1515
-->
1616
<netbeans.compile.on.save>none</netbeans.compile.on.save>
17-
<netbeans.hint.jdkPlatform>JDK_1.6</netbeans.hint.jdkPlatform>
1817
</properties>
1918
</project-shared-configuration>
Lines changed: 68 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,69 @@
1-
package net.sf.jsqlparser.statement.create.view;
2-
3-
4-
import net.sf.jsqlparser.schema.Table;
5-
import net.sf.jsqlparser.statement.Statement;
6-
import net.sf.jsqlparser.statement.StatementVisitor;
7-
import net.sf.jsqlparser.statement.select.SelectBody;
8-
9-
/**
10-
* A "CREATE VIEW" statement
11-
*/
12-
public class CreateView implements Statement {
13-
14-
private Table view;
15-
private SelectBody selectBody;
16-
private boolean orReplace = false;
17-
18-
@Override
19-
public void accept(StatementVisitor statementVisitor) {
20-
statementVisitor.visit(this);
21-
}
22-
23-
/**
24-
* In the syntax tree, a view looks and acts just like a Table.
25-
* @return The name of the view to be created.
26-
*/
27-
public Table getView() {
28-
return view;
29-
}
30-
31-
public void setView(Table view) {
32-
this.view = view;
33-
}
34-
35-
/**
36-
* @return was "OR REPLACE" specified?
37-
*/
38-
public boolean isOrReplace() {
39-
return orReplace;
40-
}
41-
42-
/**
43-
* @param orReplace was "OR REPLACE" specified?
44-
*/
45-
public void setOrReplace(boolean orReplace) {
46-
this.orReplace = orReplace;
47-
}
48-
49-
/**
50-
* @return the SelectBody
51-
*/
52-
public SelectBody getSelectBody() {
53-
return selectBody;
54-
}
55-
56-
public void setSelectBody(SelectBody selectBody) {
57-
this.selectBody = selectBody;
58-
}
59-
60-
public String toString() {
61-
String sql = "CREATE VIEW " + view + " AS " + selectBody;
62-
return sql;
63-
}
1+
package net.sf.jsqlparser.statement.create.view;
2+
3+
import net.sf.jsqlparser.schema.Table;
4+
import net.sf.jsqlparser.statement.Statement;
5+
import net.sf.jsqlparser.statement.StatementVisitor;
6+
import net.sf.jsqlparser.statement.select.SelectBody;
7+
8+
/**
9+
* A "CREATE VIEW" statement
10+
*/
11+
public class CreateView implements Statement {
12+
13+
private Table view;
14+
private SelectBody selectBody;
15+
private boolean orReplace = false;
16+
17+
@Override
18+
public void accept(StatementVisitor statementVisitor) {
19+
statementVisitor.visit(this);
20+
}
21+
22+
/**
23+
* In the syntax tree, a view looks and acts just like a Table.
24+
*
25+
* @return The name of the view to be created.
26+
*/
27+
public Table getView() {
28+
return view;
29+
}
30+
31+
public void setView(Table view) {
32+
this.view = view;
33+
}
34+
35+
/**
36+
* @return was "OR REPLACE" specified?
37+
*/
38+
public boolean isOrReplace() {
39+
return orReplace;
40+
}
41+
42+
/**
43+
* @param orReplace was "OR REPLACE" specified?
44+
*/
45+
public void setOrReplace(boolean orReplace) {
46+
this.orReplace = orReplace;
47+
}
48+
49+
/**
50+
* @return the SelectBody
51+
*/
52+
public SelectBody getSelectBody() {
53+
return selectBody;
54+
}
55+
56+
public void setSelectBody(SelectBody selectBody) {
57+
this.selectBody = selectBody;
58+
}
59+
60+
@Override
61+
public String toString() {
62+
String sql = "CREATE ";
63+
if (isOrReplace()) {
64+
sql += "OR REPLACE ";
65+
}
66+
sql += "VIEW " + view + " AS " + selectBody;
67+
return sql;
68+
}
6469
}

src/main/java/net/sf/jsqlparser/util/deparser/CreateViewDeParser.java

Lines changed: 11 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,30 @@
11
package net.sf.jsqlparser.util.deparser;
22

3-
import java.util.Iterator;
4-
5-
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
6-
import net.sf.jsqlparser.statement.create.table.CreateTable;
7-
import net.sf.jsqlparser.statement.create.table.Index;
3+
import net.sf.jsqlparser.statement.create.view.CreateView;
84

95
/**
106
* A class to de-parse (that is, tranform from JSqlParser hierarchy into a
11-
* string) a {@link net.sf.jsqlparser.statement.create.table.CreateTable}
7+
* string) a {@link net.sf.jsqlparser.statement.create.view.CreateView}
128
*/
13-
public class CreateTableDeParser {
9+
public class CreateViewDeParser {
1410

1511
protected StringBuilder buffer;
1612

1713
/**
1814
* @param buffer the buffer that will be filled with the select
1915
*/
20-
public CreateTableDeParser(StringBuilder buffer) {
16+
public CreateViewDeParser(StringBuilder buffer) {
2117
this.buffer = buffer;
2218
}
2319

24-
public void deParse(CreateTable createTable) {
25-
buffer.append("CREATE TABLE ").append(createTable.getTable().getWholeTableName());
26-
if (createTable.getColumnDefinitions() != null) {
27-
buffer.append(" (");
28-
for (Iterator<ColumnDefinition> iter = createTable.getColumnDefinitions().iterator(); iter.hasNext();) {
29-
ColumnDefinition columnDefinition = (ColumnDefinition) iter.next();
30-
buffer.append(columnDefinition.getColumnName());
31-
buffer.append(" ");
32-
buffer.append(columnDefinition.getColDataType().toString());
33-
if (columnDefinition.getColumnSpecStrings() != null) {
34-
for (Iterator<String> iterator = columnDefinition.getColumnSpecStrings().iterator(); iterator.hasNext();) {
35-
buffer.append(" ");
36-
buffer.append((String) iterator.next());
37-
}
38-
}
39-
40-
if (iter.hasNext()) {
41-
buffer.append(" , ");
42-
}
43-
44-
}
45-
46-
if (createTable.getIndexes() != null) {
47-
for (Iterator<Index> iter = createTable.getIndexes().iterator(); iter.hasNext();) {
48-
buffer.append(",");
49-
Index index = (Index) iter.next();
50-
buffer.append(index.getType()).append(" ").append(index.getName());
51-
buffer.append("(");
52-
for (Iterator<String> iterator = index.getColumnsNames().iterator(); iterator.hasNext();) {
53-
buffer.append((String) iterator.next());
54-
if (iterator.hasNext()) {
55-
buffer.append(", ");
56-
}
57-
}
58-
buffer.append(")");
59-
60-
if (iter.hasNext()) {
61-
buffer.append(",");
62-
}
63-
}
64-
}
65-
66-
buffer.append(" )");
20+
public void deParse(CreateView createView) {
21+
buffer.append("CREATE ");
22+
if (createView.isOrReplace()) {
23+
buffer.append("OR REPLACE ");
6724
}
25+
buffer.append("VIEW ").append(createView.getView().getWholeTableName());
26+
buffer.append(" AS ");
27+
buffer.append(createView.getSelectBody().toString());
6828
}
6929

7030
public StringBuilder getBuffer() {

src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import net.sf.jsqlparser.statement.StatementVisitor;
66
import net.sf.jsqlparser.statement.create.table.CreateTable;
7+
import net.sf.jsqlparser.statement.create.view.CreateView;
78
import net.sf.jsqlparser.statement.delete.Delete;
89
import net.sf.jsqlparser.statement.drop.Drop;
910
import net.sf.jsqlparser.statement.insert.Insert;
@@ -14,6 +15,7 @@
1415
import net.sf.jsqlparser.statement.update.Update;
1516

1617
public class StatementDeParser implements StatementVisitor {
18+
1719
protected StringBuilder buffer;
1820

1921
public StatementDeParser(StringBuilder buffer) {
@@ -26,6 +28,12 @@ public void visit(CreateTable createTable) {
2628
createTableDeParser.deParse(createTable);
2729
}
2830

31+
@Override
32+
public void visit(CreateView createView) {
33+
CreateViewDeParser createViewDeParser = new CreateViewDeParser(buffer);
34+
createViewDeParser.deParse(createView);
35+
}
36+
2937
@Override
3038
public void visit(Delete delete) {
3139
SelectDeParser selectDeParser = new SelectDeParser();
@@ -39,7 +47,6 @@ public void visit(Delete delete) {
3947
@Override
4048
public void visit(Drop drop) {
4149
// TODO Auto-generated method stub
42-
4350
}
4451

4552
@Override
@@ -87,7 +94,6 @@ public void visit(Select select) {
8794
@Override
8895
public void visit(Truncate truncate) {
8996
// TODO Auto-generated method stub
90-
9197
}
9298

9399
@Override
@@ -108,5 +114,4 @@ public StringBuilder getBuffer() {
108114
public void setBuffer(StringBuilder buffer) {
109115
this.buffer = buffer;
110116
}
111-
112117
}

src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ import net.sf.jsqlparser.statement.Statement;
109109
import net.sf.jsqlparser.statement.create.table.ColDataType;
110110
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
111111
import net.sf.jsqlparser.statement.create.table.CreateTable;
112+
import net.sf.jsqlparser.statement.create.view.CreateView;
112113
import net.sf.jsqlparser.statement.create.table.Index;
113114
import net.sf.jsqlparser.statement.delete.Delete;
114115
import net.sf.jsqlparser.statement.drop.Drop;
@@ -194,6 +195,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
194195
| <K_FULL:"FULL">
195196
| <K_WITH:"WITH">
196197
| <K_TABLE:"TABLE">
198+
| <K_VIEW:"VIEW">
197199
| <K_WHERE:"WHERE">
198200
| <K_USING:"USING">
199201
| <K_UNION:"UNION">
@@ -286,8 +288,12 @@ Statement Statement() :
286288
|
287289
stm = Replace()
288290
|
291+
LOOKAHEAD(2)
289292
stm = CreateTable()
290293
|
294+
LOOKAHEAD(2)
295+
stm = CreateView()
296+
|
291297
stm = Drop()
292298
|
293299
stm = Truncate()
@@ -1779,6 +1785,21 @@ ColDataType ColDataType():
17791785
}
17801786
}
17811787

1788+
CreateView CreateView():
1789+
{
1790+
CreateView createView = new CreateView();
1791+
Table view = null;
1792+
SelectBody select = null;
1793+
}
1794+
{
1795+
<K_CREATE>
1796+
[ <K_OR> <K_REPLACE> { createView.setOrReplace(true);} ]
1797+
<K_VIEW> view=Table() { createView.setView(view); }
1798+
<K_AS>
1799+
select=SelectBody() { createView.setSelectBody(select); }
1800+
{ return createView; }
1801+
}
1802+
17821803
String CreateParameter():
17831804
{
17841805
String retval = null;

0 commit comments

Comments
 (0)