Skip to content

Commit d22fd66

Browse files
committed
2.0.5
various fixes, builder-like setter methods for fields, more restrictive checking if SQL definition is valid
1 parent 0b6d795 commit d22fd66

File tree

14 files changed

+919
-478
lines changed

14 files changed

+919
-478
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ configure(subprojects - project(':android')) {
2929
}
3030

3131
subprojects {
32-
version = '2.0.3'
32+
version = '2.0.5'
3333
ext.appName = 'Desku-App'
3434
repositories {
3535
mavenCentral()

core/build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@ dependencies {
1616
implementation "mysql:mysql-connector-java:8.0.24"
1717
implementation 'net.java.dev.jna:jna:5.14.0'
1818
implementation 'net.java.dev.jna:jna-platform:5.14.0'
19+
implementation "ru.lanwen.verbalregex:java-verbal-expressions:1.8"
1920

2021

2122
testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.0"
2223
testImplementation "org.junit.jupiter:junit-jupiter-engine:5.3.0"
24+
testImplementation "com.vaadin:vaadin-bom:24.4.7"
25+
testImplementation "com.vaadin:vaadin-core:24.4.7"
2326

2427

2528
}
@@ -37,3 +40,7 @@ sourceSets {
3740
}
3841
// This must also be included if you want to generate the sources jar without issues
3942
tasks.withType(Jar).configureEach { duplicatesStrategy = DuplicatesStrategy.EXCLUDE }
43+
44+
tasks.test {
45+
useJUnitPlatform() // For JUnit 5
46+
}

core/src/main/java/com/osiris/jsqlgen/MainView.java

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -930,46 +930,12 @@ private void updateColumn(Vertical listColumns, String dbName, String tableName,
930930
Objects.requireNonNull(t);
931931
Column col = Data.findColumn(t.columns, oldName);
932932
Objects.requireNonNull(col);
933-
col.updateName(newName);
934-
String oldDefinition = col.definition;
935-
col.definition = newDefinition;
936-
col.comment = newComment;
933+
Column colOld = col.duplicate();
937934

938-
// Update current change
939-
t.currentChange.deletedColumnNames.remove(oldName);
940-
if(t.currentChange.addedColumnNames.contains(oldName)){
941-
int i = t.currentChange.addedColumnNames.indexOf(oldName);
942-
t.currentChange.addedColumnNames.set(i, newName);
943-
t.currentChange.addedColumnDefinitions.set(i, newDefinition);
944-
} else{
945-
// Existing column, check for changes
946-
int i = t.currentChange.newColumnNames.indexOf(oldName);
947-
if(i >= 0){
948-
t.currentChange.newColumnNames.remove(i);
949-
t.currentChange.newColumnNames_Definitions.remove(i);
950-
t.currentChange.oldColumnNames.remove(i);
951-
}
952-
if(!newName.equals(oldName)) {
953-
t.currentChange.newColumnNames.add(newName);
954-
t.currentChange.newColumnNames_Definitions.add(newDefinition);
955-
t.currentChange.oldColumnNames.add(oldName);
956-
}
957-
958-
i = t.currentChange.newColumnDefinitions.indexOf(oldDefinition);
959-
if(i >= 0){
960-
t.currentChange.newColumnDefinitions.remove(i);
961-
t.currentChange.oldColumnDefinitions.remove(i);
962-
t.currentChange.newColumnDefinitions_Names.remove(i);
963-
}
964-
if(!newDefinition.equals(oldDefinition)) {
965-
t.currentChange.newColumnDefinitions.add(newDefinition);
966-
t.currentChange.oldColumnDefinitions.add(oldDefinition);
967-
t.currentChange.newColumnDefinitions_Names.add(newName);
968-
}
969-
}
935+
t.updateCol(col, oldName, newName, newDefinition, newComment);
970936

971-
if(!oldDefinition.equals(newDefinition))
972-
AL.info("Updating column definition "+oldDefinition+ " -> " + newDefinition);
937+
if(!colOld.definition.equals(newDefinition))
938+
AL.info("Updating column definition "+colOld.definition+ " -> " + newDefinition);
973939
Data.save();
974940
AL.info("OK!");
975941
}
@@ -979,14 +945,7 @@ private void addNewColumn(Vertical listColumns, String dbName, String tableName,
979945
Table t = Data.findTable(db.tables, tableName);
980946
Objects.requireNonNull(t);
981947
col.id = Main.idCounter.getAndIncrement();
982-
t.columns.add(col);
983-
984-
// Update current change
985-
if(!t.currentChange.addedColumnNames.contains(col.name)){
986-
t.currentChange.addedColumnNames.add(col.name);
987-
t.currentChange.addedColumnDefinitions.add(col.definition);
988-
t.currentChange.deletedColumnNames.remove(col.name);
989-
}
948+
t.addCol(col);
990949

991950
Data.save();
992951
updateColumnsList(listColumns, dbName, tableName);
@@ -998,17 +957,8 @@ private void deleteColumn(Vertical listColumns, String dbName, String tableName,
998957
Objects.requireNonNull(t);
999958
Column col = Data.findColumn(t.columns, columnName);
1000959
Objects.requireNonNull(col);
1001-
t.columns.remove(col);
1002960

1003-
// Update current change
1004-
if(!t.currentChange.deletedColumnNames.contains(col.name)){
1005-
t.currentChange.deletedColumnNames.add(col.name);
1006-
int i = t.currentChange.addedColumnNames.indexOf(col.name);
1007-
if(i >= 0) {
1008-
t.currentChange.addedColumnNames.remove(i);
1009-
t.currentChange.addedColumnDefinitions.remove(i);
1010-
}
1011-
}
961+
t.removeCol(col);
1012962

1013963
Data.save();
1014964
updateColumnsList(listColumns, dbName, tableName);

core/src/main/java/com/osiris/jsqlgen/generator/GenCreateMethods.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.osiris.jsqlgen.model.Column;
44
import com.osiris.jsqlgen.model.Table;
55

6+
import static com.osiris.jsqlgen.utils.UString.containsIgnoreCase;
7+
68
public class GenCreateMethods {
79
public static String s(Table t, String tNameQuoted, JavaCodeGenerator.Constructor constructor, JavaCodeGenerator.Constructor minimalConstructor, boolean hasMoreFields) {
810
StringBuilder sb = new StringBuilder();

core/src/main/java/com/osiris/jsqlgen/generator/GenDatabaseFile.java

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,21 @@
77
import java.io.IOException;
88
import java.nio.file.Files;
99
import java.util.ArrayList;
10+
import java.util.HashSet;
11+
import java.util.LinkedHashSet;
1012
import java.util.concurrent.CopyOnWriteArrayList;
1113

1214
public class GenDatabaseFile {
1315
public static void s(Database db, File databaseFile, String rawUrl, String url, String name, String username, String password) throws IOException {
1416
databaseFile.getParentFile().mkdirs();
1517
databaseFile.createNewFile();
1618

17-
StringBuilder s = new StringBuilder((!db.getJavaProjectDirs().isEmpty() ? "package com.osiris.jsqlgen." + db.name + ";\n" : "") +
18-
"import java.sql.*;\n" +
19-
"import java.util.*;\n" +
20-
"import java.io.File;\n" +
21-
(db.isWithMariadb4j ? "" +
22-
"import ch.vorburger.exec.ManagedProcessException;\n" +
23-
"import ch.vorburger.mariadb4j.DB;\n" +
24-
"import ch.vorburger.mariadb4j.DBConfigurationBuilder;\n" : "")+
25-
"\n"+
19+
LinkedHashSet<String> imports = new LinkedHashSet<>();
20+
imports.add("import java.sql.*;");
21+
imports.add("import java.util.*;");
22+
imports.add("import java.io.File;");
23+
24+
StringBuilder s = new StringBuilder(
2625
"/*\n" +
2726
"Auto-generated class that is used by all table classes to create connections. <br>\n" +
2827
"It holds the database credentials (set by you at first run of jSQL-Gen).<br>\n" +
@@ -330,9 +329,27 @@ public static void initIntegratedMariaDB() {
330329
""");
331330
}
332331

332+
// Add other dependencies
333+
s.append(GenDefBlobClass.s(imports));
334+
333335
s.append("}\n");
334336

335337

336-
Files.writeString(databaseFile.toPath(), s.toString());
338+
339+
String sNoImports = s.toString();
340+
341+
String finalS = (!db.getJavaProjectDirs().isEmpty() ? "package com.osiris.jsqlgen." + db.name + ";\n" : "") +
342+
(db.isWithMariadb4j ? "" +
343+
"import ch.vorburger.exec.ManagedProcessException;\n" +
344+
"import ch.vorburger.mariadb4j.DB;\n" +
345+
"import ch.vorburger.mariadb4j.DBConfigurationBuilder;\n" : "")+
346+
"\n";
347+
for (String anImport : imports) {
348+
finalS += anImport+"\n";
349+
}
350+
finalS += sNoImports;
351+
352+
353+
Files.writeString(databaseFile.toPath(), finalS.toString());
337354
}
338355
}

core/src/main/java/com/osiris/jsqlgen/generator/GenDefBlobClass.java

Lines changed: 64 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -10,67 +10,69 @@ public static String s(LinkedHashSet<String> imports) {
1010
imports.add("import java.sql.Blob;");
1111
imports.add("import java.sql.SQLException;");
1212

13-
return "public static class DefaultBlob implements Blob{\n" +
14-
" private byte[] data;\n" +
15-
"\n" +
16-
" // Constructor that accepts a byte array\n" +
17-
" public DefaultBlob(byte[] data) {\n" +
18-
" this.data = data;\n" +
19-
" }\n" +
20-
" @Override\n" +
21-
" public long length() throws SQLException {\n" +
22-
" return data.length;\n" +
23-
" }\n" +
24-
"\n" +
25-
" @Override\n" +
26-
" public byte[] getBytes(long pos, int length) throws SQLException {\n" +
27-
" return data;\n" +
28-
" }\n" +
29-
"\n" +
30-
" @Override\n" +
31-
" public InputStream getBinaryStream() throws SQLException {\n" +
32-
" return new ByteArrayInputStream(data);\n" +
33-
" }\n" +
34-
"\n" +
35-
" @Override\n" +
36-
" public long position(byte[] pattern, long start) throws SQLException {\n" +
37-
" return 0;\n" +
38-
" }\n" +
39-
"\n" +
40-
" @Override\n" +
41-
" public long position(Blob pattern, long start) throws SQLException {\n" +
42-
" return 0;\n" +
43-
" }\n" +
44-
"\n" +
45-
" @Override\n" +
46-
" public int setBytes(long pos, byte[] bytes) throws SQLException {\n" +
47-
" return 0;\n" +
48-
" }\n" +
49-
"\n" +
50-
" @Override\n" +
51-
" public int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException {\n" +
52-
" return 0;\n" +
53-
" }\n" +
54-
"\n" +
55-
" @Override\n" +
56-
" public OutputStream setBinaryStream(long pos) throws SQLException {\n" +
57-
" return null;\n" +
58-
" }\n" +
59-
"\n" +
60-
" @Override\n" +
61-
" public void truncate(long len) throws SQLException {\n" +
62-
"\n" +
63-
" }\n" +
64-
"\n" +
65-
" @Override\n" +
66-
" public void free() throws SQLException {\n" +
67-
"\n" +
68-
" }\n" +
69-
"\n" +
70-
" @Override\n" +
71-
" public InputStream getBinaryStream(long pos, long length) throws SQLException {\n" +
72-
" return new ByteArrayInputStream(data);\n" +
73-
" }\n" +
74-
"}\n";
13+
return """
14+
public static class DefaultBlob implements Blob{
15+
private byte[] data;
16+
17+
// Constructor that accepts a byte array
18+
public DefaultBlob(byte[] data) {
19+
this.data = data;
20+
}
21+
@Override
22+
public long length() throws SQLException {
23+
return data.length;
24+
}
25+
26+
@Override
27+
public byte[] getBytes(long pos, int length) throws SQLException {
28+
return data;
29+
}
30+
31+
@Override
32+
public InputStream getBinaryStream() throws SQLException {
33+
return new ByteArrayInputStream(data);
34+
}
35+
36+
@Override
37+
public long position(byte[] pattern, long start) throws SQLException {
38+
return 0;
39+
}
40+
41+
@Override
42+
public long position(Blob pattern, long start) throws SQLException {
43+
return 0;
44+
}
45+
46+
@Override
47+
public int setBytes(long pos, byte[] bytes) throws SQLException {
48+
return 0;
49+
}
50+
51+
@Override
52+
public int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException {
53+
return 0;
54+
}
55+
56+
@Override
57+
public OutputStream setBinaryStream(long pos) throws SQLException {
58+
return null;
59+
}
60+
61+
@Override
62+
public void truncate(long len) throws SQLException {
63+
64+
}
65+
66+
@Override
67+
public void free() throws SQLException {
68+
69+
}
70+
71+
@Override
72+
public InputStream getBinaryStream(long pos, long length) throws SQLException {
73+
return new ByteArrayInputStream(data);
74+
}
75+
}
76+
""";
7577
}
7678
}

0 commit comments

Comments
 (0)