Skip to content

Commit 34791cf

Browse files
author
Stefan Steinhauser
committed
feat: Implement classes for EXPORT statement
1 parent c1129a0 commit 34791cf

19 files changed

+583
-118
lines changed

src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
exports net.sf.jsqlparser.statement.delete;
3737
exports net.sf.jsqlparser.statement.drop;
3838
exports net.sf.jsqlparser.statement.execute;
39+
exports net.sf.jsqlparser.statement.export;
3940
exports net.sf.jsqlparser.statement.grant;
4041
exports net.sf.jsqlparser.statement.imprt;
4142
exports net.sf.jsqlparser.statement.insert;

src/main/java/net/sf/jsqlparser/statement/CSVColumn.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class CSVColumn {
1515
private Long startIndex;
1616
private Long endIndex;
1717
private StringValue format;
18+
private String delimit;
1819

1920
public CSVColumn(Long startIndex, Long endIndex) {
2021
this.startIndex = startIndex;
@@ -57,6 +58,14 @@ public void setFormat(StringValue format) {
5758
this.format = format;
5859
}
5960

61+
public String getDelimit() {
62+
return delimit;
63+
}
64+
65+
public void setDelimit(String delimit) {
66+
this.delimit = delimit;
67+
}
68+
6069
@Override
6170
public String toString() {
6271
StringBuilder sql = new StringBuilder();
@@ -65,9 +74,14 @@ public String toString() {
6574
if (endIndex != null) {
6675
sql.append(" .. ");
6776
sql.append(endIndex);
68-
} else if (format != null) {
69-
sql.append(" FORMAT = ");
70-
sql.append(format);
77+
} else if (format != null || delimit != null) {
78+
if (format != null) {
79+
sql.append(" FORMAT = ");
80+
sql.append(format);
81+
} else {
82+
sql.append(" DELIMIT = ");
83+
sql.append(delimit);
84+
}
7185
}
7286

7387
return sql.toString();

src/main/java/net/sf/jsqlparser/statement/FileOption.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,18 @@
1616
public class FileOption {
1717
private String key;
1818
private Expression value;
19+
private String stringValue;
1920

2021
private FileOption(String key, Expression value) {
2122
this.key = key;
2223
this.value = value;
24+
this.stringValue = null;
25+
}
26+
27+
public FileOption(String key, String value) {
28+
this.key = key;
29+
this.value = null;
30+
this.stringValue = value;
2331
}
2432

2533
public FileOption(String key) {
@@ -54,14 +62,22 @@ public void setValue(LongValue value) {
5462
this.value = value;
5563
}
5664

65+
public void setValue(String value) {
66+
this.stringValue = value;
67+
}
68+
5769
@Override
5870
public String toString() {
5971
StringBuilder sql = new StringBuilder();
6072

6173
sql.append(key);
62-
if (value != null) {
74+
if (value != null || stringValue != null) {
6375
sql.append(" = ");
64-
sql.append(value);
76+
if (stringValue != null) {
77+
sql.append(stringValue);
78+
} else {
79+
sql.append(value);
80+
}
6581
}
6682

6783
return sql.toString();
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2019 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement;
11+
12+
import net.sf.jsqlparser.statement.select.PlainSelect;
13+
14+
import java.io.Serializable;
15+
import java.util.List;
16+
import java.util.Objects;
17+
18+
public abstract class FileSourceDestination implements Serializable {
19+
private SourceDestinationType type;
20+
private List<ConnectionFileDefinition> connectionFileDefinitions;
21+
private Boolean local;
22+
private Boolean secure;
23+
private List<CSVColumn> csvColumns;
24+
private List<FBVColumn> fbvColumns;
25+
private List<FileOption> fileOptions;
26+
private CertificateVerification certificateVerification;
27+
28+
protected SourceDestinationType getType() {
29+
return type;
30+
}
31+
32+
protected void setType(SourceDestinationType type) {
33+
this.type = type;
34+
}
35+
36+
public List<ConnectionFileDefinition> getConnectionFileDefinitions() {
37+
return connectionFileDefinitions;
38+
}
39+
40+
public void setConnectionFileDefinitions(List<ConnectionFileDefinition> connectionFileDefinitions) {
41+
this.connectionFileDefinitions = connectionFileDefinitions;
42+
}
43+
44+
public Boolean isLocal() {
45+
return local;
46+
}
47+
48+
public void setLocal(Boolean local) {
49+
this.local = local;
50+
}
51+
52+
public Boolean isSecure() {
53+
return secure;
54+
}
55+
56+
public void setSecure(Boolean secure) {
57+
this.secure = secure;
58+
}
59+
60+
public List<CSVColumn> getCSVColumns() {
61+
return csvColumns;
62+
}
63+
64+
public void setCSVColumns(List<CSVColumn> csvColumns) {
65+
this.csvColumns = csvColumns;
66+
}
67+
68+
public List<FBVColumn> getFBVColumns() {
69+
return fbvColumns;
70+
}
71+
72+
public void setFBVColumns(List<FBVColumn> fbvColumns) {
73+
this.fbvColumns = fbvColumns;
74+
}
75+
76+
public List<FileOption> getFileOptions() {
77+
return fileOptions;
78+
}
79+
80+
public void setFileOptions(List<FileOption> fileOptions) {
81+
this.fileOptions = fileOptions;
82+
}
83+
84+
public CertificateVerification getCertificateVerification() {
85+
return certificateVerification;
86+
}
87+
88+
public void setCertificateVerification(CertificateVerification certificateVerification) {
89+
this.certificateVerification = certificateVerification;
90+
}
91+
92+
@Override
93+
public String toString() {
94+
StringBuilder sql = new StringBuilder();
95+
96+
if (local != null) {
97+
if (local) {
98+
sql.append("LOCAL ");
99+
}
100+
101+
if (Objects.requireNonNullElse(secure, false)) {
102+
sql.append("SECURE ");
103+
}
104+
}
105+
106+
sql.append(type);
107+
if (connectionFileDefinitions != null) {
108+
sql.append(" ");
109+
PlainSelect.appendStringListTo(sql, connectionFileDefinitions, false, false);
110+
}
111+
112+
if (csvColumns != null) {
113+
sql.append(" ");
114+
PlainSelect.appendStringListTo(sql, csvColumns, true, true);
115+
} else if (fbvColumns != null) {
116+
sql.append(" ");
117+
PlainSelect.appendStringListTo(sql, fbvColumns, false, true);
118+
}
119+
120+
if (fileOptions != null) {
121+
sql.append(" ");
122+
PlainSelect.appendStringListTo(sql, fileOptions, false, false);
123+
}
124+
125+
if (certificateVerification != null) {
126+
sql.append(" ");
127+
sql.append(certificateVerification);
128+
}
129+
130+
return sql.toString();
131+
}
132+
}

src/main/java/net/sf/jsqlparser/statement/ScriptSourceDestination.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@
1111

1212
import net.sf.jsqlparser.expression.StringValue;
1313
import net.sf.jsqlparser.schema.Table;
14+
import net.sf.jsqlparser.statement.export.ExportIntoItem;
1415
import net.sf.jsqlparser.statement.imprt.ImportFromItem;
1516

1617
import java.io.Serializable;
1718
import java.util.List;
1819

19-
public class ScriptSourceDestination extends ImportFromItem implements Serializable {
20+
public class ScriptSourceDestination implements ImportFromItem, ExportIntoItem, Serializable {
2021
private Table script;
2122
private ConnectionDefinition connectionDefinition;
2223
private List<String> properties;
2324
private List<StringValue> values;
25+
private ErrorClause errorClause;
2426

2527
public Table getScript() {
2628
return script;
@@ -54,6 +56,16 @@ public void setValues(List<StringValue> values) {
5456
this.values = values;
5557
}
5658

59+
@Override
60+
public ErrorClause getErrorClause() {
61+
return errorClause;
62+
}
63+
64+
@Override
65+
public void setErrorClause(ErrorClause errorClause) {
66+
this.errorClause = errorClause;
67+
}
68+
5769
@Override
5870
public String toString() {
5971
StringBuilder sql = new StringBuilder();

src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import net.sf.jsqlparser.statement.delete.ParenthesedDelete;
2828
import net.sf.jsqlparser.statement.drop.Drop;
2929
import net.sf.jsqlparser.statement.execute.Execute;
30+
import net.sf.jsqlparser.statement.export.Export;
3031
import net.sf.jsqlparser.statement.grant.Grant;
3132
import net.sf.jsqlparser.statement.imprt.Import;
3233
import net.sf.jsqlparser.statement.insert.Insert;
@@ -330,4 +331,10 @@ default void visit(ParenthesedDelete parenthesedDelete) {
330331
default void visit(Import imprt) {
331332
this.visit(imprt, null);
332333
}
334+
335+
<S> T visit(Export export, S context);
336+
337+
default void visit(Export export) {
338+
this.visit(export, null);
339+
}
333340
}

src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import net.sf.jsqlparser.statement.delete.ParenthesedDelete;
2828
import net.sf.jsqlparser.statement.drop.Drop;
2929
import net.sf.jsqlparser.statement.execute.Execute;
30+
import net.sf.jsqlparser.statement.export.Export;
3031
import net.sf.jsqlparser.statement.grant.Grant;
3132
import net.sf.jsqlparser.statement.imprt.Import;
3233
import net.sf.jsqlparser.statement.insert.Insert;
@@ -314,4 +315,9 @@ public <S> T visit(RefreshMaterializedViewStatement materializedView, S context)
314315
public <S> T visit(Import imprt, S context) {
315316
return null;
316317
}
318+
319+
@Override
320+
public <S> T visit(Export export, S context) {
321+
return null;
322+
}
317323
}

0 commit comments

Comments
 (0)