Skip to content

Commit 80d20ca

Browse files
committed
lineChange(), removeOuterBracket() 제거, comments
1 parent a827d95 commit 80d20ca

33 files changed

+220
-66
lines changed

.idea/dictionaries/inner.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

input.json

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,6 @@
11
{
22
"CRUD": ["SELECT"],
3-
"DISTINCT": ["TRUE"],
4-
"COLUMN": ["VAL"],
5-
"TABLE": ["((SELECT FIELD1 AS VAL FROM TABLE1 WHERE CONDITION1 = 'CONDITION1') UNION ALL (SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3')) T"],
6-
"TABLE ALIAS": ["T"],
7-
"TABLE SUB QUERY 1": ["((SELECT FIELD1 AS VAL FROM TABLE1 WHERE CONDITION1 = 'CONDITION1') UNION ALL (SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3'))"],
8-
"TABLE SUB QUERY ANALYSE 1": {
9-
"CRUD": ["SELECT"],
10-
"COLUMN": ["FIELD1 AS VAL"],
11-
"TABLE": ["TABLE1"],
12-
"UNION ALL 1": ["SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2'"],
13-
"UNION ALL 2": ["SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3'"],
14-
"UNION ALL 3": ["SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3'"],
15-
"UNION ALL ANALYSE 1": {
16-
"CRUD": ["SELECT"],
17-
"COLUMN": ["FIELD2"],
18-
"TABLE": ["TABLE1"],
19-
"WHERE": ["CONDITION2 = 'CONDITION2'"]
20-
},
21-
"UNION ALL ANALYSE 2": {
22-
"CRUD": ["SELECT"],
23-
"COLUMN": ["FIELD3"],
24-
"TABLE": ["TABLE3"],
25-
"WHERE": ["CONDITION3 = 'CONDITION3'"]
26-
},
27-
"UNION ALL ANALYSE 3": {
28-
"CRUD": ["SELECT"],
29-
"COLUMN": ["FIELD3"],
30-
"TABLE": ["TABLE3"],
31-
"WHERE": ["CONDITION3 = 'CONDITION3'"]
32-
},
33-
"WHERE": ["CONDITION1 = 'CONDITION1'"]
34-
}
3+
"COLUMN": ["COL"],
4+
"TABLE": ["TABLE"],
5+
"UNION 1": ["SELECT COL AS ALIAS FROM UNIONTABLE WHERE CON = 'CON'"]
356
}
Binary file not shown.
Binary file not shown.

output.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
SELECT DISTINCT VAL FROM ((SELECT FIELD1 AS VAL FROM TABLE1 WHERE CONDITION1 = 'CONDITION1') UNION ALL (SELECT FIELD2 FROM TABLE1 WHERE CONDITION2 = 'CONDITION2') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3') UNION ALL (SELECT FIELD3 FROM TABLE3 WHERE CONDITION3 = 'CONDITION3')) T
1+
(SELECT COL FROM TABLE) UNION (SELECT COL AS ALIAS FROM UNIONTABLE WHERE CON = 'CON')

src/com/inzapp/jsonToSqlParser/JsonToSqlParser.java

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.inzapp.jsonToSqlParser;
22

33
import com.inzapp.jsonToSqlParser.config.Config;
4-
import com.inzapp.jsonToSqlParser.config.JsonKey;
54
import com.inzapp.jsonToSqlParser.core.Parser;
65
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
76
import org.json.JSONObject;
@@ -11,6 +10,12 @@
1110
import java.io.FileReader;
1211

1312
public class JsonToSqlParser extends Parser {
13+
/**
14+
* entry point in execution jar file
15+
*
16+
* @param args [0] : input file name, default is "input.json"
17+
* [1] : output file name, default is "output.txt"
18+
*/
1419
public static void main(String[] args) {
1520
String inputFileName = Config.INPUT_FILE_NAME;
1621
String outputFileName = Config.OUTPUT_FILE_NAME;
@@ -31,8 +36,6 @@ public static void main(String[] args) {
3136
System.out.println("parse failure");
3237
return;
3338
}
34-
sql = jsonToSqlParser.removeOuterBracket(sql);
35-
// sql = jsonToSqlParser.changeLine(sql);
3639

3740
try {
3841
System.out.println("input json\n");
@@ -50,42 +53,28 @@ public static void main(String[] args) {
5053
System.out.println("parse success");
5154
}
5255

56+
/**
57+
* head method as java library
58+
*
59+
* @param jsonString json string from sql
60+
* @return converted sql string
61+
*/
5362
public String parse(String jsonString) {
5463
try {
5564
String sql = new Parser().parse(new JSONObject(jsonString));
56-
sql = removeOuterBracket(sql);
57-
// sql = changeLine(sql);
58-
// TODO : auto line change
5965
CCJSqlParserUtil.parse(sql); // query execution test
6066
return sql;
6167
} catch (Exception e) {
6268
return null;
6369
}
6470
}
6571

66-
private String removeOuterBracket(String sql) {
67-
if (sql.charAt(0) == '(' && sql.charAt(sql.length() - 1) == ')') {
68-
StringBuilder sb = new StringBuilder(sql);
69-
sb.deleteCharAt(0);
70-
sb.deleteCharAt(sb.length() - 1);
71-
return sb.toString();
72-
} else return sql;
73-
}
74-
75-
private String changeLine(String sql) {
76-
sql = sql.replaceAll(JsonKey.SELECT, JsonKey.SELECT + '\n');
77-
sql = sql.replaceAll(JsonKey.UPDATE, JsonKey.UPDATE + '\n');
78-
// sql = sql.replaceAll(JsonKey.DELETE, JsonKey.DELETE + '\n');
79-
80-
sql = sql.replaceAll("FROM", "\nFROM\n");
81-
sql = sql.replaceAll("WHERE", "\nWHERE\n");
82-
sql = sql.replaceAll("AND", "AND\n");
83-
sql = sql.replaceAll(",", ",\n");
84-
sql = sql.replaceAll("\\(", "\\(\n");
85-
sql = sql.replaceAll("\\)", "\\)\n");
86-
return sql;
87-
}
88-
72+
/**
73+
* read json string from file and convert is to json object
74+
*
75+
* @param fileName input file name, default is "input.json"
76+
* @return converted json object
77+
*/
8978
private JSONObject readJsonFromFile(String fileName) {
9079
try {
9180
BufferedReader br = new BufferedReader(new FileReader(fileName));
@@ -97,7 +86,6 @@ private JSONObject readJsonFromFile(String fileName) {
9786

9887
sb.append(line).append('\n');
9988
}
100-
10189
String jsonString = sb.toString();
10290
return new JSONObject(jsonString);
10391
} catch (Exception e) {
@@ -106,6 +94,12 @@ private JSONObject readJsonFromFile(String fileName) {
10694
}
10795
}
10896

97+
/**
98+
* save converted sql string to file
99+
*
100+
* @param sql converted sql from parser
101+
* @param fileName output file name, default is "output.txt"
102+
*/
109103
private void saveFile(String sql, String fileName) {
110104
try {
111105
FileOutputStream fos = new FileOutputStream(fileName);

src/com/inzapp/jsonToSqlParser/core/Parser.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,25 @@
77
import org.json.JSONObject;
88

99
public class Parser extends JsonManager {
10+
/**
11+
* head method of Parser
12+
* parse json object to sql string
13+
*
14+
* @param json not converted json object
15+
* @return converted sql string
16+
*/
1017
public String parse(JSONObject json) {
1118
return parse(json, false);
1219
}
1320

21+
/**
22+
* only used for parsing union select
23+
*
24+
* @param json not converted json object
25+
* @param exceptUnion if true, parse without union statement
26+
* else, parse with union statement
27+
* @return parsed sql string
28+
*/
1429
public String parse(JSONObject json, boolean exceptUnion) {
1530
setJson(json);
1631
Statement statement;
@@ -21,8 +36,7 @@ public String parse(JSONObject json, boolean exceptUnion) {
2136
break;
2237

2338
case JsonKey.SELECT:
24-
if(exceptUnion) statement = new SelectParser().parse(json);
25-
else statement = new UnionSelectParser().parse(json);
39+
statement = exceptUnion ? new SelectParser().parse(json) : new UnionSelectParser().parse(json);
2640
break;
2741

2842
case JsonKey.UPDATE:

src/com/inzapp/jsonToSqlParser/core/crudParser/DeleteParser.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,37 @@
1212
import java.util.List;
1313

1414
public class DeleteParser extends JsonManager {
15+
/**
16+
* delete statement for return
17+
*/
1518
private Delete delete = new Delete();
1619

20+
/**
21+
* head method of delete parser
22+
*
23+
* @param json not converted pure json object
24+
* @return converted delete statement
25+
*/
1726
public Delete parse(JSONObject json) {
1827
setJson(json);
1928
addTable();
2029
addWhere();
2130
return delete;
2231
}
2332

33+
/**
34+
* add table to delete statement
35+
*/
2436
private void addTable() {
2537
// table
2638
List<String> tables = getFromJson(JsonKey.FROM);
2739
if (tables != null)
2840
this.delete.setTable(new Table(tables.get(0)));
2941
}
3042

43+
/**
44+
* add where to delete statement
45+
*/
3146
private void addWhere() {
3247
// where
3348
List<String> wheres = getFromJson(JsonKey.WHERE);

src/com/inzapp/jsonToSqlParser/core/crudParser/InsertParser.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,17 @@
1515
import java.util.List;
1616

1717
public class InsertParser extends JsonManager {
18+
/**
19+
* insert statement for return
20+
*/
1821
private Insert insert = new Insert();
1922

23+
/**
24+
* head method of insert parser
25+
*
26+
* @param json not converted json object
27+
* @return converted insert statement
28+
*/
2029
public Insert parse(JSONObject json) {
2130
setJson(json);
2231
addTable();
@@ -25,6 +34,9 @@ public Insert parse(JSONObject json) {
2534
return this.insert;
2635
}
2736

37+
/**
38+
* add table to insert statement
39+
*/
2840
private void addTable() {
2941
// table
3042
List<String> tables = getFromJson(JsonKey.FROM);
@@ -34,6 +46,9 @@ private void addTable() {
3446
}
3547
}
3648

49+
/**
50+
* add columns to insert statement
51+
*/
3752
private void addColumns() {
3853
// columns
3954
List<String> columns = getFromJson(JsonKey.COLUMN);
@@ -44,6 +59,9 @@ private void addColumns() {
4459
}
4560
}
4661

62+
/**
63+
* add values to insert statement
64+
*/
4765
private void addValues() {
4866
// values
4967
List<String> values = getFromJson(JsonKey.VALUE);

0 commit comments

Comments
 (0)