Skip to content

Commit e5c2663

Browse files
authored
Merge pull request #390 from tunglxfast/development
update benerator Wizard for issue #388
2 parents 0aa7a06 + 8d39847 commit e5c2663

File tree

7 files changed

+86
-48
lines changed

7 files changed

+86
-48
lines changed

pom.xml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,18 @@
207207
<version>${mongodb.version}</version>
208208
<scope>provided</scope>
209209
</dependency>
210+
<dependency>
211+
<groupId>org.postgresql</groupId>
212+
<artifactId>postgresql</artifactId>
213+
<version>${database_postgresql.version}</version>
214+
<scope>provided</scope>
215+
</dependency>
216+
<dependency>
217+
<groupId>com.ibm.db2</groupId>
218+
<artifactId>jcc</artifactId>
219+
<version>11.5.8.0</version>
220+
<scope>provided</scope>
221+
</dependency>
210222

211223

212224
<!-- rapiddweller dependencies -->
@@ -317,12 +329,6 @@
317329
<artifactId>graal-sdk</artifactId>
318330
<version>${scriptengine_graalvm.version}</version>
319331
</dependency>
320-
<dependency>
321-
<groupId>org.postgresql</groupId>
322-
<artifactId>postgresql</artifactId>
323-
<version>${database_postgresql.version}</version>
324-
<scope>provided</scope>
325-
</dependency>
326332
<!-- xml support -->
327333
<dependency>
328334
<groupId>xml-apis</groupId>

src/main/assembly/dist-assembly.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
<include>org.firebirdsql.jdbc:jaybird:jar</include>
171171
<include>javax.resource:connector-api:jar</include>
172172
<include>org.mongodb:mongo-java-driver:jar</include>
173+
<include>com.ibm.db2:jcc:jar</include>
173174
</includes>
174175
</dependencySet>
175176
<dependencySet>

src/main/assembly/jar-only.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<include>org.firebirdsql.jdbc:jaybird:jar</include>
3838
<include>javax.resource:connector-api:jar</include>
3939
<include>org.mongodb:mongo-java-driver:jar</include>
40+
<include>com.ibm.db2:jcc:jar</include>
4041
</includes>
4142
</dependencySet>
4243
<dependencySet>

src/main/java/com/rapiddweller/benerator/gui/CreateProjectPanel.java

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,8 @@
4949
import org.slf4j.LoggerFactory;
5050
import org.slf4j.Logger;
5151

52-
import javax.swing.BorderFactory;
53-
import javax.swing.Box;
54-
import javax.swing.DefaultListCellRenderer;
55-
import javax.swing.Icon;
56-
import javax.swing.ImageIcon;
57-
import javax.swing.JButton;
58-
import javax.swing.JComboBox;
59-
import javax.swing.JComponent;
60-
import javax.swing.JFrame;
61-
import javax.swing.JLabel;
62-
import javax.swing.JList;
63-
import javax.swing.JOptionPane;
64-
import javax.swing.JPanel;
65-
import javax.swing.JTextField;
66-
import javax.swing.KeyStroke;
67-
import javax.swing.SwingConstants;
68-
import javax.swing.SwingUtilities;
69-
import java.awt.BorderLayout;
70-
import java.awt.Component;
71-
import java.awt.Container;
72-
import java.awt.TextArea;
52+
import javax.swing.*;
53+
import java.awt.*;
7354
import java.awt.event.ActionEvent;
7455
import java.awt.event.ActionListener;
7556
import java.awt.event.KeyEvent;
@@ -310,7 +291,15 @@ void showErrors(Object... errors) {
310291
messages[i] = ToStringConverter.convert(error, "null");
311292
}
312293
}
313-
JOptionPane.showMessageDialog(CreateProjectPanel.this, messages, "Error", JOptionPane.ERROR_MESSAGE);
294+
String errorMessage = "";
295+
for (String s : messages){
296+
errorMessage = String.format("%s%s\n", errorMessage, s);
297+
}
298+
299+
JLabel jLabel = new JLabel();
300+
jLabel.setText(String.format("<html><div WIDTH=%d>%s</div></html>", 400, errorMessage));
301+
302+
JOptionPane.showMessageDialog(CreateProjectPanel.this, jLabel, "Error", JOptionPane.ERROR_MESSAGE);
314303
}
315304

316305

src/main/java/com/rapiddweller/benerator/gui/ProjectBuilder.java

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.rapiddweller.format.html.parser.DefaultHTMLTokenizer;
4848
import com.rapiddweller.format.html.parser.HTMLTokenizer;
4949
import com.rapiddweller.format.text.LFNormalizingStringBuilder;
50+
import com.rapiddweller.jdbacl.JDBCDriverInfo;
5051
import com.rapiddweller.model.data.ComplexTypeDescriptor;
5152
import com.rapiddweller.model.data.ComponentDescriptor;
5253
import com.rapiddweller.model.data.DataModel;
@@ -64,15 +65,10 @@
6465
import org.slf4j.Logger;
6566
import org.slf4j.LoggerFactory;
6667

67-
import java.io.BufferedReader;
68-
import java.io.File;
69-
import java.io.FileNotFoundException;
70-
import java.io.IOException;
68+
import java.io.*;
69+
import java.nio.file.Files;
7170
import java.text.ParseException;
72-
import java.util.ArrayList;
73-
import java.util.List;
74-
import java.util.Map;
75-
import java.util.Set;
71+
import java.util.*;
7672

7773
import static com.rapiddweller.benerator.engine.DescriptorConstants.ATT_CONSUMER;
7874
import static com.rapiddweller.benerator.engine.DescriptorConstants.ATT_NAME;
@@ -197,6 +193,42 @@ private static void copyToProject(File srcFile, File projectFolder) {
197193
FileUtil.copy(srcFile, dstFile, true);
198194
}
199195

196+
private static void appendDatabase(String nodeName, Setup setup, DefaultHTMLTokenizer tokenizer, LFNormalizingStringBuilder writer) {
197+
198+
// create environment file "conf.env.properties"
199+
String envName = "environment";
200+
File envFile = new File(setup.getProjectFolder(), envName + ".env.properties");
201+
StringBuilder builder = new StringBuilder();
202+
203+
// must set attributes Map first to avoid tokenizer change after call defineDbAttributes() functions
204+
Map<String, String> attributes = new HashMap<>(tokenizer.attributes());
205+
Map<String, String> elements = defineDbAttributes(setup, tokenizer);
206+
String DBMS = "";
207+
208+
JDBCDriverInfo jdbcDriverInfo = setup.getJdbcDriverType();
209+
if (jdbcDriverInfo != null){
210+
DBMS = jdbcDriverInfo.getId().toLowerCase();
211+
}
212+
for (Map.Entry<String, String> element : elements.entrySet()){
213+
if (element.getKey().equals("id")){
214+
continue;
215+
}
216+
builder.append(String.format("%s.db.%s=%s\n", DBMS, element.getKey(), element.getValue()));
217+
}
218+
try (FileWriter envWriter = new FileWriter(envFile)){
219+
envWriter.write(builder.toString());
220+
} catch (IOException e) {
221+
throw new RuntimeException(e);
222+
}
223+
224+
// config database tag attributes
225+
attributes.put("environment", envName);
226+
attributes.put("system", DBMS);
227+
228+
// continues to write project.ben.xml
229+
appendElement(nodeName, attributes, writer, true);
230+
}
231+
200232
private static void processComment(DefaultHTMLTokenizer tokenizer, Setup setup, LFNormalizingStringBuilder writer) {
201233
try {
202234
String startText = tokenizer.text();
@@ -267,7 +299,7 @@ public void run() {
267299
// create db snapshot project.dbunit.xml
268300
Exception exception = createSnapshotIfNecessary();
269301

270-
// create project.ben.xml (including imports)
302+
// create project.ben.xml (including imports, environment)
271303
createBeneratorXml();
272304

273305
createEclipseProject();
@@ -480,7 +512,11 @@ private void processToken(Setup setup, DefaultHTMLTokenizer tokenizer, LFNormali
480512
case HTMLTokenizer.CLOSED_TAG: {
481513
String nodeName = tokenizer.name();
482514
if (EL_DATABASE.equals(nodeName) && setup.isDatabaseProject()) {
483-
appendElement(nodeName, defineDbAttributes(setup, tokenizer), writer, true);
515+
// create env properties file and config database by using environment
516+
appendDatabase(nodeName, setup, tokenizer, writer);
517+
518+
// old way to config database configuration - not using anymore
519+
// appendElement(nodeName, defineDbAttributes(setup, tokenizer), writer, true);
484520
} else if (EL_EXECUTE.equals(nodeName)) {
485521
processExecute(setup, tokenizer, writer, nodeName);
486522
} else if (EL_GENERATE.equals(nodeName)) {

src/main/java/com/rapiddweller/platform/db/AbstractDBSystem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -971,7 +971,7 @@ private List<String> getSpecialDataTypes() {
971971
regularTypes.add(value);
972972
}
973973
} catch (IOException e) {
974-
e.printStackTrace();
974+
throw new RuntimeException(e);
975975
}
976976

977977
// set postgresql special data types to list

src/main/resources/com/rapiddweller/benerator/archetype/simpledb_shopdb/benerator.xml

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,30 @@
1212
<database id="db"/>
1313

1414

15-
<echo>Drop the testtable if it already exist. If it does not exist yet, the error message is ignored</echo>
15+
<echo>Drop the simpledb if it already exist. If it does not exist yet, the error message is ignored</echo>
1616
<execute target="db" type="sql" onError="ignore">
17-
DROP TABLE IF EXISTS accounts;
17+
DROP TABLE IF EXISTS simpledb;
1818
</execute>
1919

20-
<echo>Creating testtable</echo>
20+
<echo>Creating simpledb</echo>
2121
<execute target="db" type="sql">
22-
CREATE TABLE accounts (
23-
user_id serial PRIMARY KEY,
22+
CREATE TABLE simpledb (
23+
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
24+
user_id INT NOT NULL,
2425
username VARCHAR ( 50 ) UNIQUE NOT NULL,
2526
password VARCHAR ( 50 ) NOT NULL,
2627
email VARCHAR ( 255 ) UNIQUE NOT NULL,
2728
created_on TIMESTAMP NOT NULL,
28-
last_login TIMESTAMP
29+
last_login TIMESTAMP,
30+
PRIMARY KEY (id)
2931
);
3032
</execute>
3133

32-
<echo>Generating 100 entries for testtable</echo>
33-
<generate type="accounts" consumer="db,ConsoleExporter" count="100">
34-
<id name="user_id" generator="IncrementGenerator"/>
34+
<echo>Generating 100 entries for simpledb</echo>
35+
<generate type="simpledb" consumer="db,ConsoleExporter" count="100">
36+
<id name="id" mode="ignored" />
37+
<attribute name="user_id" generator="IncrementGenerator"/>
38+
<attribute name="username" unique="true"/>
39+
<attribute name="email" unique="true" />
3540
</generate>
3641
</setup>

0 commit comments

Comments
 (0)