Skip to content

Commit 4c8fc82

Browse files
committed
Tests & other major improvements and fixes
1 parent 5f34ff7 commit 4c8fc82

18 files changed

Lines changed: 175 additions & 52 deletions
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package me.zort.sqllib;
2+
3+
import java.sql.Connection;
4+
5+
public final class Logger {
6+
7+
private Logger() {
8+
}
9+
10+
public static void debug(Connection connection, String message) {
11+
SQLConnectionPool.find(connection)
12+
.filter(c -> c instanceof SQLDatabaseConnectionImpl)
13+
.ifPresent(c -> debug((SQLDatabaseConnectionImpl) c, message));
14+
}
15+
16+
public static void debug(SQLDatabaseConnectionImpl connection, String message) {
17+
if (connection.isDebug())
18+
connection.debug(message);
19+
}
20+
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package me.zort.sqllib;
2+
3+
import java.sql.Connection;
4+
5+
public final class SQLClient {
6+
7+
private SQLClient() {
8+
}
9+
10+
public static boolean isDebug(Connection connection) {
11+
return SQLConnectionPool.find(connection)
12+
.map(SQLDatabaseConnection::isDebug)
13+
.orElse(false);
14+
}
15+
16+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package me.zort.sqllib;
2+
3+
import java.sql.Connection;
4+
import java.util.List;
5+
import java.util.Optional;
6+
import java.util.concurrent.CopyOnWriteArrayList;
7+
8+
public final class SQLConnectionPool {
9+
10+
private SQLConnectionPool() {
11+
}
12+
13+
private static final List<SQLDatabaseConnection> CONNECTIONS = new CopyOnWriteArrayList<>();
14+
15+
static void register(SQLDatabaseConnection connection) {
16+
CONNECTIONS.add(connection);
17+
}
18+
19+
static Optional<SQLDatabaseConnection> find(Connection connection) {
20+
return CONNECTIONS.stream().filter(c -> c.getConnection() == connection).findFirst();
21+
}
22+
23+
}

core/src/main/java/me/zort/sqllib/api/SQLDatabaseConnection.java renamed to core/src/main/java/me/zort/sqllib/SQLDatabaseConnection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package me.zort.sqllib.api;
1+
package me.zort.sqllib;
22

33
import lombok.Getter;
4+
import me.zort.sqllib.api.Query;
5+
import me.zort.sqllib.api.SQLConnection;
46
import me.zort.sqllib.api.data.QueryResult;
57
import me.zort.sqllib.api.data.QueryRowsResult;
68
import me.zort.sqllib.api.data.Row;
@@ -26,6 +28,8 @@ public abstract class SQLDatabaseConnection implements SQLConnection {
2628
public SQLDatabaseConnection(SQLConnectionFactory connectionFactory) {
2729
this.connectionFactory = connectionFactory;
2830
this.connection = null;
31+
32+
SQLConnectionPool.register(this);
2933
}
3034

3135
/**
@@ -79,6 +83,7 @@ public SQLDatabaseConnection(SQLConnectionFactory connectionFactory) {
7983
*/
8084
public abstract QueryResult exec(Query query);
8185
public abstract boolean isLogSqlErrors();
86+
public abstract boolean isDebug();
8287

8388
public abstract SelectQuery select(String... cols);
8489
public abstract UpdateQuery update();

core/src/main/java/me/zort/sqllib/SQLDatabaseConnectionImpl.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import lombok.Getter;
77
import lombok.RequiredArgsConstructor;
88
import me.zort.sqllib.api.Query;
9-
import me.zort.sqllib.api.SQLConnection;
10-
import me.zort.sqllib.api.SQLDatabaseConnection;
119
import me.zort.sqllib.api.StatementFactory;
1210
import me.zort.sqllib.api.data.QueryResult;
1311
import me.zort.sqllib.api.data.QueryRowsResult;
@@ -161,7 +159,7 @@ protected Pair<String[], UnknownValueWrapper[]> buildDefsVals(Object obj) {
161159
*/
162160
@Override
163161
public <T> QueryRowsResult<T> query(Query query, Class<T> typeClass) {
164-
QueryRowsResult<Row> resultRows = query(query);
162+
QueryRowsResult<Row> resultRows = query(query.getAncestor());
165163
QueryRowsResult<T> result = new QueryRowsResult<>(resultRows.isSuccessful());
166164
for(Row row : resultRows) {
167165
Optional.ofNullable(assignValues(row, typeClass))
@@ -227,6 +225,7 @@ private <T> T assignValues(Row row, Class<T> typeClass) {
227225
try {
228226
try {
229227
Constructor<T> c = typeClass.getConstructor();
228+
c.setAccessible(true);
230229
instance = c.newInstance();
231230
} catch (NoSuchMethodException e) {
232231
for(Constructor<?> c : typeClass.getConstructors()) {
@@ -277,7 +276,7 @@ private Object buildElementValue(AnnotatedElement element, Row row) {
277276
if(element instanceof Field) {
278277
name = ((Field) element).getName();
279278
type = ((Field) element).getGenericType();
280-
} else if(element instanceof Parameter) {
279+
} else if(element instanceof Parameter) { // TODO: Parameter names are arg[a-zA-Z0-9]+, use different strategy.
281280
name = ((Parameter) element).getName();
282281
type = ((Parameter) element).getType();
283282
} else {
@@ -363,6 +362,11 @@ public boolean isLogSqlErrors() {
363362
return options.isLogSqlErrors();
364363
}
365364

365+
@Override
366+
public boolean isDebug() {
367+
return options.isDebug();
368+
}
369+
366370
@SuppressWarnings("unchecked")
367371
private PreparedStatement buildStatement(Query query) throws SQLException {
368372
StatementFactory<PreparedStatement> factory = new DefaultStatementFactory(query);

core/src/main/java/me/zort/sqllib/SQLTableRepositoryBuilder.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package me.zort.sqllib;
22

33
import com.google.gson.internal.Primitives;
4-
import me.zort.sqllib.api.SQLDatabaseConnection;
54
import me.zort.sqllib.api.repository.CachingSQLTableRepository;
65
import me.zort.sqllib.api.repository.SQLTableRepository;
76
import me.zort.sqllib.internal.annotation.JsonField;

core/src/main/java/me/zort/sqllib/SQLiteDatabaseConnectionImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public SQLiteDatabaseConnectionImpl(SQLConnectionFactory connectionFactory, SQLD
3636

3737
/**
3838
* Performs an upsert query for defined object
39-
* as stated in {@link me.zort.sqllib.api.SQLDatabaseConnection#save(String, Object)}.
39+
* as stated in {@link SQLDatabaseConnection#save(String, Object)}.
4040
* <p>
4141
* Object needs to have {@link me.zort.sqllib.internal.annotation.PrimaryKey} annotation
4242
* set to determine which column is a primary key.

core/src/main/java/me/zort/sqllib/api/repository/CachingSQLTableRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import lombok.Getter;
44
import lombok.Setter;
5-
import me.zort.sqllib.api.SQLDatabaseConnection;
5+
import me.zort.sqllib.SQLDatabaseConnection;
66

77
import java.util.Map;
88
import java.util.Optional;

core/src/main/java/me/zort/sqllib/api/repository/SQLTableRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import lombok.Data;
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
7-
import me.zort.sqllib.api.SQLDatabaseConnection;
7+
import me.zort.sqllib.SQLDatabaseConnection;
88
import me.zort.sqllib.api.provider.Select;
99
import me.zort.sqllib.internal.annotation.Id;
1010
import me.zort.sqllib.internal.annotation.PrimaryKey;

core/src/main/java/me/zort/sqllib/internal/query/DeleteQuery.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import lombok.Getter;
44
import me.zort.sqllib.api.Executive;
5-
import me.zort.sqllib.api.SQLDatabaseConnection;
5+
import me.zort.sqllib.SQLDatabaseConnection;
66
import org.jetbrains.annotations.Nullable;
77

88
import java.util.ArrayList;
@@ -34,8 +34,7 @@ public DeleteQuery from(String table) {
3434
public QueryDetails buildQueryDetails() {
3535
Objects.requireNonNull(table, "Table cannot be null!");
3636

37-
return new QueryDetails.Builder("DELETE FROM <table>")
38-
.placeholder("table", table)
37+
return new QueryDetails.Builder("DELETE FROM " + table)
3938
.build()
4039
.append(buildInnerQuery());
4140
}

0 commit comments

Comments
 (0)