Skip to content

Commit

Permalink
feat: update database manager
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Mar 2, 2024
1 parent cebcedd commit 60ed360
Show file tree
Hide file tree
Showing 34 changed files with 932 additions and 934 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,76 +29,76 @@ abstract class BaseQueryBuilder {

protected boolean and;

protected ColumnCondition condition;
protected CriteriaCondition condition;

protected <T> void eqImpl(T value) {
requireNonNull(value, "value is required");
ColumnCondition newCondition = ColumnCondition.eq(Element.of(name, value));
CriteriaCondition newCondition = CriteriaCondition.eq(Element.of(name, value));
appendCondition(newCondition);
}

protected <T> void gtImpl(T value) {
requireNonNull(value, "value is required");
ColumnCondition newCondition = ColumnCondition.gt(Element.of(name, value));
CriteriaCondition newCondition = CriteriaCondition.gt(Element.of(name, value));
appendCondition(newCondition);
}

protected void likeImpl(String value) {
requireNonNull(value, "value is required");
ColumnCondition newCondition = ColumnCondition.like(Element.of(name, value));
CriteriaCondition newCondition = CriteriaCondition.like(Element.of(name, value));
appendCondition(newCondition);
}

protected <T> void ltImpl(T value) {
requireNonNull(value, "value is required");
ColumnCondition newCondition = ColumnCondition.lt(Element.of(name, value));
CriteriaCondition newCondition = CriteriaCondition.lt(Element.of(name, value));
appendCondition(newCondition);
}

protected <T> void lteImpl(T value) {
requireNonNull(value, "value is required");
ColumnCondition newCondition = ColumnCondition.lte(Element.of(name, value));
CriteriaCondition newCondition = CriteriaCondition.lte(Element.of(name, value));
appendCondition(newCondition);
}

protected <T> void gteImpl(T value) {
requireNonNull(value, "value is required");
ColumnCondition newCondition = ColumnCondition.gte(Element.of(name, value));
CriteriaCondition newCondition = CriteriaCondition.gte(Element.of(name, value));
appendCondition(newCondition);
}

protected <T> void betweenImpl(T valueA, T valueB) {
requireNonNull(valueA, "valueA is required");
requireNonNull(valueB, "valueB is required");
ColumnCondition newCondition = ColumnCondition.between(Element.of(name, asList(valueA, valueB)));
CriteriaCondition newCondition = CriteriaCondition.between(Element.of(name, asList(valueA, valueB)));
appendCondition(newCondition);
}

protected <T> void inImpl(Iterable<T> values) {
requireNonNull(values, "values is required");
ColumnCondition newCondition = ColumnCondition.in(Element.of(name, values));
CriteriaCondition newCondition = CriteriaCondition.in(Element.of(name, values));
appendCondition(newCondition);
}


protected void appendCondition(ColumnCondition newCondition) {
protected void appendCondition(CriteriaCondition newCondition) {

ColumnCondition columnCondition = getColumnCondition(newCondition);
CriteriaCondition criteriaCondition = getColumnCondition(newCondition);

if (nonNull(condition)) {
if (and) {
this.condition = condition.and(columnCondition);
this.condition = condition.and(criteriaCondition);
} else {
this.condition = condition.or(columnCondition);
this.condition = condition.or(criteriaCondition);
}
} else {
this.condition = columnCondition;
this.condition = criteriaCondition;
}
this.negate = false;
this.name = null;
}

private ColumnCondition getColumnCondition(ColumnCondition newCondition) {
private CriteriaCondition getColumnCondition(CriteriaCondition newCondition) {
if (negate) {
return newCondition.negate();
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@


/**
* The result of {@link ColumnDeleteQueryParams} that has {@link ColumnDeleteQuery} and {@link Params}.
* The result of {@link ColumnDeleteQueryParams} that has {@link DeleteQuery} and {@link Params}.
*/
public record ColumnDeleteQueryParams(ColumnDeleteQuery query, Params params) {
public record ColumnDeleteQueryParams(DeleteQuery query, Params params) {

/**
* The {@link ColumnDeleteQuery}
* The {@link DeleteQuery}
*
* @return a {@link ColumnDeleteQuery} instance
* @return a {@link DeleteQuery} instance
*/
@Override
public ColumnDeleteQuery query() {
public DeleteQuery query() {
return query;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@


/**
* The result of {@link org.eclipse.jnosql.communication.query.SelectQueryConverter} that has {@link ColumnQuery} and {@link Params}.
* The result of {@link org.eclipse.jnosql.communication.query.SelectQueryConverter} that has {@link SelectQuery} and {@link Params}.
*/
public record ColumnQueryParams(ColumnQuery query, Params params) {
public record ColumnQueryParams(SelectQuery query, Params params) {

/**
* The {@link ColumnQuery}
* The {@link SelectQuery}
*
* @return a {@link ColumnQuery} instance
* @return a {@link SelectQuery} instance
*/
@Override
public ColumnQuery query() {
public SelectQuery query() {
return query;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,18 @@ public Stream<CommunicationEntity> query(String query, DatabaseManager manager,
}

/**
* Executes a query and returns a {@link ColumnPreparedStatement}, when the operations are <b>insert</b>, <b>update</b> and <b>select</b>
* Executes a query and returns a {@link CommunicationPreparedStatement}, when the operations are <b>insert</b>, <b>update</b> and <b>select</b>
* command it will return the result of the operation when the command is <b>delete</b> it will return an empty collection.
*
* @param query the query as {@link String}
* @param manager the manager
* @param observer the observer
* @return a {@link ColumnPreparedStatement} instance
* @return a {@link CommunicationPreparedStatement} instance
* @throws NullPointerException when there is parameter null
* @throws IllegalArgumentException when the query has value parameters
* @throws QueryException when there is error in the syntax
*/
public ColumnPreparedStatement prepare(String query, DatabaseManager manager, ColumnObserverParser observer) {
public CommunicationPreparedStatement prepare(String query, DatabaseManager manager, ColumnObserverParser observer) {
validation(query, manager, observer);
String command = query.substring(0, 6);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@
/**
* An object that represents a precompiled Query statement.
*/
public final class ColumnPreparedStatement {
public final class CommunicationPreparedStatement {

private final CommunicationEntity entity;

private final ColumnQuery columnQuery;
private final SelectQuery selectQuery;

private final ColumnDeleteQuery columnDeleteQuery;
private final DeleteQuery deleteQuery;

private final PreparedStatementType type;

Expand All @@ -52,18 +52,18 @@ public final class ColumnPreparedStatement {

private final DatabaseManager manager;

private ColumnPreparedStatement(CommunicationEntity entity,
ColumnQuery columnQuery,
ColumnDeleteQuery columnDeleteQuery,
PreparedStatementType type,
Params params,
String query,
List<String> paramsLeft,
Duration duration,
DatabaseManager manager) {
private CommunicationPreparedStatement(CommunicationEntity entity,
SelectQuery selectQuery,
DeleteQuery deleteQuery,
PreparedStatementType type,
Params params,
String query,
List<String> paramsLeft,
Duration duration,
DatabaseManager manager) {
this.entity = entity;
this.columnQuery = columnQuery;
this.columnDeleteQuery = columnDeleteQuery;
this.selectQuery = selectQuery;
this.deleteQuery = deleteQuery;
this.type = type;
this.params = params;
this.query = query;
Expand All @@ -80,7 +80,7 @@ private ColumnPreparedStatement(CommunicationEntity entity,
* @return the same query instance
* @throws NullPointerException when there is null parameter
*/
public ColumnPreparedStatement bind(String name, Object value) {
public CommunicationPreparedStatement bind(String name, Object value) {
Objects.requireNonNull(name, "name is required");
Objects.requireNonNull(value, "value is required");

Expand All @@ -100,10 +100,10 @@ public Stream<CommunicationEntity> result() {
}
switch (type) {
case SELECT -> {
return manager.select(columnQuery);
return manager.select(selectQuery);
}
case DELETE -> {
manager.delete(columnDeleteQuery);
manager.delete(deleteQuery);
return Stream.empty();
}
case UPDATE -> {
Expand Down Expand Up @@ -145,44 +145,44 @@ public String toString() {
return query;
}

static ColumnPreparedStatement select(
ColumnQuery columnQuery,
static CommunicationPreparedStatement select(
SelectQuery selectQuery,
Params params,
String query,
DatabaseManager manager) {
return new ColumnPreparedStatement(null, columnQuery,
return new CommunicationPreparedStatement(null, selectQuery,
null, PreparedStatementType.SELECT, params, query,
params.getParametersNames(), null, manager);

}

static ColumnPreparedStatement delete(ColumnDeleteQuery columnDeleteQuery,
Params params,
String query,
DatabaseManager manager) {
static CommunicationPreparedStatement delete(DeleteQuery deleteQuery,
Params params,
String query,
DatabaseManager manager) {

return new ColumnPreparedStatement(null, null,
columnDeleteQuery, PreparedStatementType.DELETE, params, query,
return new CommunicationPreparedStatement(null, null,
deleteQuery, PreparedStatementType.DELETE, params, query,
params.getParametersNames(), null, manager);

}

static ColumnPreparedStatement insert(CommunicationEntity entity,
Params params,
String query,
Duration duration,
DatabaseManager manager) {
return new ColumnPreparedStatement(entity, null,
static CommunicationPreparedStatement insert(CommunicationEntity entity,
Params params,
String query,
Duration duration,
DatabaseManager manager) {
return new CommunicationPreparedStatement(entity, null,
null, PreparedStatementType.INSERT, params, query,
params.getParametersNames(), duration, manager);

}

static ColumnPreparedStatement update(CommunicationEntity entity,
Params params,
String query,
DatabaseManager manager) {
return new ColumnPreparedStatement(entity, null,
static CommunicationPreparedStatement update(CommunicationEntity entity,
Params params,
String query,
DatabaseManager manager) {
return new CommunicationPreparedStatement(entity, null,
null, PreparedStatementType.UPDATE, params, query,
params.getParametersNames(), null, manager);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ protected CommunicationEntity getEntity(ConditionQuerySupplier query, String col
query.conditions()
.stream()
.map(c -> Conditions.getCondition(c, params, observer, columnFamily))
.map(ColumnCondition::column)
.map(CriteriaCondition::column)
.forEach(entity::add);
return entity;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,42 +28,42 @@ final class Conditions {
private Conditions() {
}

static ColumnCondition getCondition(Where where, Params params, ColumnObserverParser observer, String entity) {
static CriteriaCondition getCondition(Where where, Params params, ColumnObserverParser observer, String entity) {
QueryCondition condition = where.condition();
return getCondition(condition, params, observer, entity);
}

static ColumnCondition getCondition(QueryCondition condition, Params parameters, ColumnObserverParser observer, String entity) {
static CriteriaCondition getCondition(QueryCondition condition, Params parameters, ColumnObserverParser observer, String entity) {
return switch (condition.condition()) {
case EQUALS -> ColumnCondition.eq(Element.of(getName(condition, observer, entity),
case EQUALS -> CriteriaCondition.eq(Element.of(getName(condition, observer, entity),
Values.get(condition.value(), parameters)));
case GREATER_THAN -> ColumnCondition.gt(Element.of(getName(condition, observer, entity),
case GREATER_THAN -> CriteriaCondition.gt(Element.of(getName(condition, observer, entity),
Values.get(condition.value(), parameters)));
case GREATER_EQUALS_THAN -> ColumnCondition.gte(Element.of(getName(condition, observer, entity),
case GREATER_EQUALS_THAN -> CriteriaCondition.gte(Element.of(getName(condition, observer, entity),
Values.get(condition.value(), parameters)));
case LESSER_THAN -> ColumnCondition.lt(Element.of(getName(condition, observer, entity),
case LESSER_THAN -> CriteriaCondition.lt(Element.of(getName(condition, observer, entity),
Values.get(condition.value(), parameters)));
case LESSER_EQUALS_THAN -> ColumnCondition.lte(Element.of(getName(condition, observer, entity),
case LESSER_EQUALS_THAN -> CriteriaCondition.lte(Element.of(getName(condition, observer, entity),
Values.get(condition.value(), parameters)));
case IN -> ColumnCondition.in(Element.of(getName(condition, observer, entity),
case IN -> CriteriaCondition.in(Element.of(getName(condition, observer, entity),
Values.get(condition.value(), parameters)));
case LIKE -> ColumnCondition.like(Element.of(getName(condition, observer, entity),
case LIKE -> CriteriaCondition.like(Element.of(getName(condition, observer, entity),
Values.get(condition.value(),
parameters)));
case BETWEEN -> ColumnCondition.between(Element.of(getName(condition, observer, entity),
case BETWEEN -> CriteriaCondition.between(Element.of(getName(condition, observer, entity),
Values.get(condition.value(),
parameters)));
case NOT -> getCondition(ConditionQueryValue.class.cast(condition.value()).get().get(0),
parameters, observer,
entity).negate();
case OR -> ColumnCondition.or(ConditionQueryValue.class.cast(condition.value())
case OR -> CriteriaCondition.or(ConditionQueryValue.class.cast(condition.value())
.get()
.stream().map(v -> getCondition(v, parameters, observer, entity))
.toArray(ColumnCondition[]::new));
case AND -> ColumnCondition.and(ConditionQueryValue.class.cast(condition.value())
.toArray(CriteriaCondition[]::new));
case AND -> CriteriaCondition.and(ConditionQueryValue.class.cast(condition.value())
.get()
.stream().map(v -> getCondition(v, parameters, observer, entity))
.toArray(ColumnCondition[]::new));
.toArray(CriteriaCondition[]::new));
default -> throw new QueryException("There is not support the type: " + condition.condition());
};
}
Expand Down
Loading

0 comments on commit 60ed360

Please sign in to comment.