Skip to content

Commit fa0bd65

Browse files
committed
Start of generating tests for SQLite3
1 parent 664670e commit fa0bd65

3 files changed

Lines changed: 137 additions & 175 deletions

File tree

src/main/java/synapticloop/h2zero/generator/JavaTestGenerator.java

Lines changed: 4 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -49,137 +49,15 @@ public void generate() throws RenderException, ParseException {
4949

5050
try {
5151
TemplarContext templarContext = getDefaultTemplarContext();
52-
generateTables(templarContext);
53-
generateViews(templarContext);
52+
generateDatabaseTestBase(templarContext);
5453
} catch (FunctionException fex) {
5554
throw new RenderException("Could not instantiate the function.", fex);
5655
}
57-
5856
}
5957

60-
private void generateTables(TemplarContext templarContext) throws ParseException, RenderException {
61-
Parser javaCreateConstantsParser = getParser("/java-create-constants.templar");
62-
63-
// The model
64-
Parser javaCreateModelParser = getParser("/java-create-model.templar");
65-
Parser javaCreateModelStatisticsParser = getParser("/java-create-model-statistics.templar");
66-
67-
// The table actions
68-
Parser javaCreateFinderParser = getParser("/java-create-finder.templar");
69-
Parser javaCreateInserterParser = getParser("/java-create-inserter.templar");
70-
Parser javaCreateCounterParser = getParser("/java-create-counter.templar");
71-
Parser javaCreateQuestionParser = getParser("/java-create-question.templar");
72-
Parser javaCreateUpdaterParser = getParser("/java-create-updater.templar");
73-
Parser javaCreateDeleterParser = getParser("/java-create-deleter.templar");
74-
Parser javaCreateUpserterParser = getParser("/java-create-upserter.templar");
75-
76-
// the select clause bean
77-
Parser javaCreateSelectClauseBeanParser = getParser("/java-create-select-clause-bean.templar");
78-
58+
private void generateDatabaseTestBase(TemplarContext templarContext) throws ParseException, RenderException {
59+
Parser javaGenerateDatabaseTestBaseParser = getParser("/tests/java-sqlite3-database-test-base.templar");
7960
String pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/model/util/Constants.java";
80-
renderToFile(templarContext, javaCreateConstantsParser, pathname);
81-
82-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/model/util/Statistics.java";
83-
renderToFile(templarContext, javaCreateModelStatisticsParser, pathname);
84-
85-
// now for the tables
86-
List<Table> tables = database.getTables();
87-
88-
for (Table table : tables) {
89-
templarContext.add("table", table);
90-
SimpleLogger.logInfo(LoggerType.GENERATE_JAVA, "Generating for table '" + table.getName() + "'.");
91-
92-
// the model
93-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/model/" + table.getJavaClassName() + ".java";
94-
renderToFile(templarContext, javaCreateModelParser, pathname);
95-
96-
// the finder
97-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/finder/" + table.getJavaClassName() + "Finder.java";
98-
renderToFile(templarContext, javaCreateFinderParser, pathname);
99-
100-
if (!table.getIsConstant()) {
101-
// the inserter
102-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/inserter/" + table.getJavaClassName() + "Inserter.java";
103-
renderToFile(templarContext, javaCreateInserterParser, pathname);
104-
105-
// the upserter
106-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/upserter/" + table.getJavaClassName() + "Upserter.java";
107-
renderToFile(templarContext, javaCreateUpserterParser, pathname);
108-
}
109-
110-
111-
// the counters
112-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/counter/" + table.getJavaClassName() + "Counter.java";
113-
renderToFile(templarContext, javaCreateCounterParser, pathname);
114-
115-
// the questions - we always have an internal question
116-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/question/" + table.getJavaClassName() + "Question.java";
117-
renderToFile(templarContext, javaCreateQuestionParser, pathname);
118-
119-
List<Finder> finders = table.getFinders();
120-
121-
for (Finder finder : finders) {
122-
templarContext.add("finder", finder);
123-
124-
// don't forget the beans for the selectClause finders
125-
if (null != finder.getSelectClause()) {
126-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/bean/" + table.getJavaClassName() + finder.getTagName() + "Bean.java";
127-
renderToFile(templarContext, javaCreateSelectClauseBeanParser, pathname);
128-
}
129-
}
130-
131-
if (!table.getIsConstant()) {
132-
// the updater
133-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/updater/" + table.getJavaClassName() + "Updater.java";
134-
renderToFile(templarContext, javaCreateUpdaterParser, pathname);
135-
136-
// the deleter
137-
pathname = outFile + options.getOutputCode() + database.getPackagePath() + "/deleter/" + table.getJavaClassName() + "Deleter.java";
138-
renderToFile(templarContext, javaCreateDeleterParser, pathname);
139-
}
140-
}
141-
}
142-
143-
private void generateViews(TemplarContext templarContext) throws ParseException, RenderException {
144-
Parser javaCreateViewModelParser = getParser("/java-create-view-model.templar");
145-
Parser javaCreateViewFinderParser = getParser("/java-create-view-finder.templar");
146-
Parser javaCreateSelectClauseBeanParser = getParser("/java-create-select-clause-bean.templar");
147-
Parser javaCreateViewCounterParser = getParser("/java-create-view-counter.templar");
148-
Parser javaCreateViewQuestionParser = getParser("/java-create-view-question.templar");
149-
150-
String pathname;
151-
152-
// now for the views
153-
List<View> views = database.getViews();
154-
for (View view : views) {
155-
templarContext.add("view", view);
156-
157-
// hack for finder taglibs for views - should be split out
158-
templarContext.add("table", view);
159-
160-
String pathPrefix = outFile + options.getOutputCode() + database.getPackagePath();
161-
String viewJavaClassName = view.getJavaClassName();
162-
163-
pathname = pathPrefix + "/view/" + viewJavaClassName + ".java";
164-
renderToFile(templarContext, javaCreateViewModelParser, pathname);
165-
166-
pathname = pathPrefix + "/finder/" + viewJavaClassName + "ViewFinder.java";
167-
renderToFile(templarContext, javaCreateViewFinderParser, pathname);
168-
169-
pathname = pathPrefix + "/counter/" + viewJavaClassName + "ViewCounter.java";
170-
renderToFile(templarContext, javaCreateViewCounterParser, pathname);
171-
172-
pathname = pathPrefix + "/question/" + viewJavaClassName + "ViewQuestion.java";
173-
renderToFile(templarContext, javaCreateViewQuestionParser, pathname);
174-
175-
List<Finder> finders = view.getFinders();
176-
for (Finder finder : finders) {
177-
templarContext.add("finder", finder);
178-
if (null != finder.getSelectClause()) {
179-
pathname = pathPrefix + "/bean/" + finder.getTagName() + "Bean.java";
180-
renderToFile(templarContext, javaCreateSelectClauseBeanParser, pathname);
181-
}
182-
}
183-
}
61+
renderToFile(templarContext, javaGenerateDatabaseTestBaseParser, pathname);
18462
}
18563
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package {database.package}.model;{\n}{\n}
2+
3+
// - - - - thoughtfully generated by synapticloop h2zero - - - - {\n}
4+
// with the use of synapticloop templar templating language{\n}
5+
// (tests/java-sqlite3-database-test-base.templar){\n}{\n}
6+
{\n}
7+
import static org.junit.Assert.*;{\n}
8+
{\n}
9+
import com.mchange.v2.c3p0.ComboPooledDataSource;{\n}
10+
import org.json.JSONException;{\n}
11+
import org.json.JSONObject;{\n}
12+
import org.junit.After;{\n}
13+
import org.junit.Before;{\n}
14+
import org.junit.Test;{\n}
15+
import synapticloop.h2zero.base.manager.sqlite3.ConnectionManager;{\n}
16+
import synapticloop.h2zero.base.manager.BaseConnectionManager;{\n}
17+
import synapticloop.sample.h2zero.sqlite3.deleter.AuthorDeleter;{\n}
18+
{\n}
19+
import java.beans.PropertyVetoException;{\n}
20+
import java.io.BufferedReader;{\n}
21+
import java.io.IOException;{\n}
22+
import java.io.InputStreamReader;{\n}
23+
import java.sql.Connection;{\n}
24+
import java.sql.PreparedStatement;{\n}
25+
import java.sql.SQLException;{\n}
26+
{\n}
27+
public class DatabaseTest extends BaseConnectionManager {{{\n}
28+
{\t}private static final String DB_DRIVER_CLASS = "org.sqlite.JDBC";{\n}
29+
{\t}private static final ComboPooledDataSource comboPooledDataSource = BaseConnectionManager.comboPooledDataSource;{\n}
30+
{\n}
31+
{\t}@Before{\n}
32+
{\t}public void setup() {{{\n}
33+
// setup the database{\n}
34+
{\t}{\t}try {{{\n}
35+
{\t}{\t}{\t}comboPooledDataSource.setDriverClass(DB_DRIVER_CLASS);{\n}
36+
{\t}{\t}} catch (PropertyVetoException e) {{ // runtime exception{\n}
37+
{\t}{\t}{\t}throw new RuntimeException(e);{\n}
38+
{\t}{\t}}{\n}
39+
// now we need to check for backups and whatnot{\n}
40+
{\n}
41+
{\t}{\t}comboPooledDataSource.setJdbcUrl("jdbc:sqlite:/test.db");{\n}
42+
{\t}}{\n}
43+
{\n}
44+
{\t}@After{\n}
45+
{\t}public void teardown() {{{\n}
46+
{\t}{\t}AuthorDeleter.deleteAllSilent();{\n}
47+
{\t}}{\n}
48+
{\n}
49+
{\t}@Test{\n}
50+
{\t}public void createDatabase() {{{\n}
51+
{\t}{\t}try {{{\n}
52+
{\t}{\t}{\t}Connection connection = ConnectionManager.getConnection();{\n}
53+
{\t}{\t}{\t}BufferedReader bufferedReader = new BufferedReader({\n}
54+
{\t}{\t}{\t}{\t}{\t}new InputStreamReader({\n}
55+
{\t}{\t}{\t}{\t}{\t}{\t}{\t}DatabaseTest.class.getResourceAsStream("/create-database-sqlite3.sql")));{\n}
56+
{\t}{\t}{\t}String line = null;{\n}
57+
{\t}{\t}{\t}StringBuilder query = new StringBuilder();{\n}
58+
{\n}
59+
{\t}{\t}{\t}while ((line = bufferedReader.readLine()) != null) {{{\n}
60+
{\t}{\t}{\t}{\t}if (!line.startsWith("--") && !line.trim().isEmpty()) {{{\n}
61+
{\t}{\t}{\t}{\t}{\t}query.append(line);{\n}
62+
{\t}{\t}{\t}{\t}} else {{{\n}
63+
{\t}{\t}{\t}{\t}{\t}continue;{\n}
64+
{\t}{\t}{\t}{\t}}{\n}
65+
{\n}
66+
{\t}{\t}{\t}{\t}if (line.trim().endsWith(";")) {{{\n}
67+
// execute the query and{\n}
68+
{\t}{\t}{\t}{\t}{\t}if (line.trim().isEmpty()) {{{\n}
69+
// we don't want to run an empty query{\n}
70+
{\t}{\t}{\t}{\t}{\t}{\t}continue;{\n}
71+
{\t}{\t}{\t}{\t}{\t}}{\n}
72+
{\t}{\t}{\t}{\t}{\t}PreparedStatement preparedStatement = connection.prepareStatement(query.toString());{\n}
73+
{\t}{\t}{\t}{\t}{\t}preparedStatement.execute();{\n}
74+
{\t}{\t}{\t}{\t}{\t}preparedStatement.close();{\n}
75+
{\t}{\t}{\t}{\t}{\t}query.setLength(0);{\n}
76+
{\t}{\t}{\t}{\t}}{\n}
77+
{\t}{\t}{\t}}{\n}
78+
{\n}
79+
{\t}{\t}} catch (IOException | SQLException e) {{{\n}
80+
// TODO - this is going to be a problem{\n}
81+
{\t}{\t}{\t}e.printStackTrace();{\n}
82+
{\t}{\t}}{\n}
83+
{\t}}{\n}
84+
}{\n}

src/test/java/synapticloop/h2zero/sqlite3/DatabaseTest.java

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,60 +21,60 @@
2121
import java.sql.SQLException;
2222

2323
public class DatabaseTest extends BaseConnectionManager {
24-
private static final String DB_DRIVER_CLASS = "org.sqlite.JDBC";
25-
private static final ComboPooledDataSource comboPooledDataSource = BaseConnectionManager.comboPooledDataSource;
24+
private static final String DB_DRIVER_CLASS = "org.sqlite.JDBC";
25+
private static final ComboPooledDataSource comboPooledDataSource = BaseConnectionManager.comboPooledDataSource;
2626

27-
@Before
28-
public void setup() {
29-
// setup the database
30-
try {
31-
comboPooledDataSource.setDriverClass(DB_DRIVER_CLASS);
32-
} catch (PropertyVetoException e) { // runtime exception
33-
throw new RuntimeException(e);
34-
}
35-
// now we need to check for backups and whatnot
27+
@Before
28+
public void setup() {
29+
// setup the database
30+
try {
31+
comboPooledDataSource.setDriverClass(DB_DRIVER_CLASS);
32+
} catch (PropertyVetoException e) { // runtime exception
33+
throw new RuntimeException(e);
34+
}
35+
// now we need to check for backups and whatnot
3636

37-
comboPooledDataSource.setJdbcUrl("jdbc:sqlite:/test.db");
38-
}
37+
comboPooledDataSource.setJdbcUrl("jdbc:sqlite:/test.db");
38+
}
3939

40-
@After
41-
public void teardown() {
42-
AuthorDeleter.deleteAllSilent();
43-
}
40+
@After
41+
public void teardown() {
42+
AuthorDeleter.deleteAllSilent();
43+
}
4444

45-
@Test
46-
public void createDatabase() {
47-
try {
48-
Connection connection = ConnectionManager.getConnection();
49-
BufferedReader bufferedReader = new BufferedReader(
50-
new InputStreamReader(
51-
DatabaseTest.class.getResourceAsStream("/create-database-sqlite3.sql")));
52-
String line = null;
53-
StringBuilder query = new StringBuilder();
45+
@Test
46+
public void createDatabase() {
47+
try {
48+
Connection connection = ConnectionManager.getConnection();
49+
BufferedReader bufferedReader = new BufferedReader(
50+
new InputStreamReader(
51+
DatabaseTest.class.getResourceAsStream("/create-database-sqlite3.sql")));
52+
String line = null;
53+
StringBuilder query = new StringBuilder();
5454

55-
while ((line = bufferedReader.readLine()) != null) {
56-
if (!line.startsWith("--") && !line.trim().isEmpty()) {
57-
query.append(line);
58-
} else {
59-
continue;
60-
}
55+
while ((line = bufferedReader.readLine()) != null) {
56+
if (!line.startsWith("--") && !line.trim().isEmpty()) {
57+
query.append(line);
58+
} else {
59+
continue;
60+
}
6161

62-
if (line.trim().endsWith(";")) {
63-
// execute the query and
64-
if (line.trim().isEmpty()) {
65-
// we don't want to run an empty query
66-
continue;
67-
}
68-
PreparedStatement preparedStatement = connection.prepareStatement(query.toString());
69-
preparedStatement.execute();
70-
preparedStatement.close();
71-
query.setLength(0);
72-
}
73-
}
62+
if (line.trim().endsWith(";")) {
63+
// execute the query and
64+
if (line.trim().isEmpty()) {
65+
// we don't want to run an empty query
66+
continue;
67+
}
68+
PreparedStatement preparedStatement = connection.prepareStatement(query.toString());
69+
preparedStatement.execute();
70+
preparedStatement.close();
71+
query.setLength(0);
72+
}
73+
}
7474

75-
} catch (IOException | SQLException e) {
76-
// TODO - this is going to be a problem
77-
e.printStackTrace();
78-
}
79-
}
75+
} catch (IOException | SQLException e) {
76+
// TODO - this is going to be a problem
77+
e.printStackTrace();
78+
}
79+
}
8080
}

0 commit comments

Comments
 (0)