Skip to content

Commit

Permalink
edit
Browse files Browse the repository at this point in the history
  • Loading branch information
usfalami committed Aug 28, 2024
1 parent 9419996 commit 91884fe
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 16 deletions.
18 changes: 9 additions & 9 deletions src/main/java/org/usf/jquery/core/KeyValueMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@ public final class KeyValueMapper implements ResultSetMapper<List<DynamicModel>>
@Override
public List<DynamicModel> map(ResultSet rs) throws SQLException {
log.trace("mapping results...");
var bg = currentTimeMillis();
var results = new LinkedList<DynamicModel>();
var columnNames = declaredColumns(rs);
var t = currentTimeMillis();
var res = new LinkedList<DynamicModel>();
var cols = declaredColumns(rs);
while(rs.next()) {
var model = new DynamicModel();
for(var i=0; i<columnNames.length; i++) {
model.put(columnNames[i], rs.getObject(i+1));
var m = new DynamicModel();
for(var i=0; i<cols.length; i++) {
m.put(cols[i], rs.getObject(i+1));
}
results.add(model);
res.add(m);
}
log.trace("{} rows mapped in {} ms", results.size(), currentTimeMillis() - bg);
return results;
log.trace("{} rows mapped in {} ms", res.size(), currentTimeMillis()-t);
return res;
}
}
4 changes: 2 additions & 2 deletions src/main/java/org/usf/jquery/core/QueryParameterBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@ public QueryParameterBuilder withValue() {
return new QueryParameterBuilder(schema, vPrefix, null, null, views, overView);
}

public QueryParameterBuilder subQuery() {
return new QueryParameterBuilder(schema, vPrefix + "_s", args, argTypes, new ArrayList<>(), emptyMap());
public QueryParameterBuilder subQuery(Map<DBView, ? extends DBView> overView) {
return new QueryParameterBuilder(schema, vPrefix + "_s", args, argTypes, new ArrayList<>(), unmodifiableMap(overView));
}

public static QueryParameterBuilder addWithValue() {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/usf/jquery/core/QueryView.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public final class QueryView implements DBView {
@Override
public String sql(QueryParameterBuilder param) {
var s = new SqlStringBuilder(100).append("(");
builder.build(s, param.subQuery());
builder.build(s, param.subQuery(builder.getOverView()));
return s.append(")").toString();
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/usf/jquery/core/RequestQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public final class RequestQuery {
public List<DynamicModel> execute(DataSource ds) throws SQLException {
return execute(ds, new KeyValueMapper());
}

public <T> T execute(DataSource ds, ResultSetMapper<T> mapper) throws SQLException { // overload with sql types
try(var cn = ds.getConnection()){
return execute(cn, mapper);
Expand All @@ -43,8 +43,8 @@ public <T> T execute(DataSource ds, ResultSetMapper<T> mapper) throws SQLExcepti

public <T> T execute(Connection cn, ResultSetMapper<T> mapper) throws SQLException {
log.debug("preparing statement : {}", query);
log.debug("using arguments : {}", Arrays.toString(args)); //before prepare
try(var ps = cn.prepareStatement(query)){
log.debug("with parameters : {}", Arrays.toString(args));
if(!isEmpty(args)) {
for(var i=0; i<args.length; i++) {
if(isNull(args[i])) {
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/org/usf/jquery/core/ResultSetConsumer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.usf.jquery.core;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
*
* @author u$f
*
*/
@FunctionalInterface
public interface ResultSetConsumer extends ResultSetMapper<Void> {

void fetch(ResultSet rs) throws SQLException;

@Override
default Void map(ResultSet rs) throws SQLException {
this.fetch(rs);
return null;
}
}
4 changes: 2 additions & 2 deletions src/main/java/org/usf/jquery/web/ViewMetadata.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import org.usf.jquery.core.DBView;
import org.usf.jquery.core.RequestQueryBuilder;
import org.usf.jquery.core.ResultSetConsumer;
import org.usf.jquery.core.TableView;

import lombok.AccessLevel;
Expand Down Expand Up @@ -101,7 +102,7 @@ void fetchView(DatabaseMetaData metadata, TableView view, String schema) throws

void fetch(DatabaseMetaData metadata, DBView qr, String schema) throws SQLException {
var query = new RequestQueryBuilder().columns(allColumns(qr)).filters(constant(1).eq(constant(0))); //no data
query.build(schema).execute(metadata.getConnection(), rs->{
query.build(schema).execute(metadata.getConnection(), (ResultSetConsumer) rs->{
var db = reverseMapKeys();
var meta = rs.getMetaData();
for(var i=1; i<=meta.getColumnCount(); i++) {
Expand All @@ -113,7 +114,6 @@ void fetch(DatabaseMetaData metadata, DBView qr, String schema) throws SQLExcept
if(!db.isEmpty()) { //no such columns
throw columnsNotFoundException(db.keySet());
}
return null;
});
}

Expand Down

0 comments on commit 91884fe

Please sign in to comment.