Skip to content

Commit

Permalink
added support View
Browse files Browse the repository at this point in the history
  • Loading branch information
vzakharchenko committed Mar 10, 2020
1 parent 387d2d3 commit da88293
Show file tree
Hide file tree
Showing 49 changed files with 889 additions and 327 deletions.
2 changes: 1 addition & 1 deletion analizers/exclude-pmd.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ com.github.vzakharchenko.dynamic.orm.core.query.crud.InsertBuilderImpl=NPathComp
com.github.vzakharchenko.dynamic.orm.core.query.crud.ModifyItem=NullAssignment
com.github.vzakharchenko.dynamic.orm.core.query.crud.UpdateModelBuilderImpl=TooManyMethods,LooseCoupling
com.github.vzakharchenko.dynamic.orm.core.statistic.resolver.QueryResolverFactory=CyclomaticComplexity
com.github.vzakharchenko.dynamic.orm.structure.LiquibaseStructure=ExcessiveImports
com.github.vzakharchenko.dynamic.orm.structure.LiquibaseStructure=ExcessiveImports,CouplingBetweenObjects
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,6 @@ private boolean searchQModel(SQLCommonQuery<?> sqlQuery, RelationalPath<?> qTabl
return false;
}

@Override
public String showSql(SQLCommonQuery<?> sqlQuery, Expression expression) {
SQLQuery<?> clone = DBHelper.castProjectionQueryToSqlQuery(sqlQuery).clone();
clone.setUseLiterals(true);
return clone.select(expression).getSQL().getSQL();
}

@Override
public <MODEL extends DMLModel> String showSql(SQLCommonQuery<?> sqlQuery,
RelationalPath<?> qTable,
Expand All @@ -80,4 +73,10 @@ public <MODEL extends DMLModel> String showSql(SQLCommonQuery<?> sqlQuery,
return showSql(sqlQuery, qTableFromModel, modelClass);
}

@Override
public String showSql(SQLCommonQuery<?> sqlQuery, Expression<?>... expressions) {
SQLQuery<?> clone = DBHelper.castProjectionQueryToSqlQuery(sqlQuery).clone();
clone.setUseLiterals(true);
return clone.select(expressions).getSQL().getSQL();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ public interface ShowSqlBuilder {
* creates the sql query from querydsl object query.
*
* @param sqlQuery querydsl query
* @param expression column or any other expression
* @param expressions column or any other expression
* @return sql query string
*/

String showSql(SQLCommonQuery<?> sqlQuery, Expression expression);
String showSql(SQLCommonQuery<?> sqlQuery, Expression<?>... expressions);

/**
* creates the sql query from querydsl object query.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,16 @@ public QDynamicTable createQTable(String tableName) {
QDynamicTable qDynamicTable = dynamicTableMap.get(StringUtils.upperCase(tableName));
return qDynamicTable != null ? qDynamicTable : new QDynamicTable(tableName);
}

public OrmQueryFactory getOrmQueryFactory() {
return ormQueryFactory;
}

public void registerViews(Collection<ViewModel> viewModels) {
viewModels.forEach(viewModel -> {
QDynamicTable qDynamicTable = QViewUtils.transform(database, viewModel);
registerQTable(qDynamicTable);
});

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public class QBlobBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


public QBlobBuilder(QTableColumnContext qTableColumn, String columnName) {
super(qTableColumn, columnName);
public QBlobBuilder(QTableColumnContext qTableColumn,
QDynamicTable dynamicTable,
String columnName) {
super(qTableColumn, dynamicTable, columnName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public class QBooleanBuilder extends QDefaultColumnBuilder<QDefaultColumn,
QSizeColumnBuilder<QTableColumn, ?>> {


public QBooleanBuilder(QTableColumnContext qTableColumn, String columnName) {
super(qTableColumn, columnName);
public QBooleanBuilder(QTableColumnContext qTableColumn,
QDynamicTable dynamicTable,
String columnName) {
super(qTableColumn, dynamicTable, columnName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public class QCharBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


public QCharBuilder(QTableColumnContext qTableColumn, String columnName) {
super(qTableColumn, columnName);
public QCharBuilder(QTableColumnContext qTableColumn,
QDynamicTable dynamicTable,
String columnName) {
super(qTableColumn, dynamicTable, columnName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public class QClobBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


public QClobBuilder(QTableColumnContext qTableColumn, String columnName) {
super(qTableColumn, columnName);
public QClobBuilder(QTableColumnContext qTableColumn,
QDynamicTable dynamicTable,
String columnName) {
super(qTableColumn, dynamicTable, columnName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public class QDateBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


public QDateBuilder(QTableColumnContext qTableColumn, String columnName) {
super(qTableColumn, columnName);
public QDateBuilder(QTableColumnContext qTableColumn,
QDynamicTable dynamicTable,
String columnName) {
super(qTableColumn, dynamicTable, columnName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public class QDateTimeBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


public QDateTimeBuilder(QTableColumnContext qTableColumn, String columnName) {
super(qTableColumn, columnName);
public QDateTimeBuilder(QTableColumnContext qTableColumn,
QDynamicTable dynamicTable,
String columnName) {
super(qTableColumn, dynamicTable, columnName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.vzakharchenko.dynamic.orm.core.dynamic;

public interface QDynamicBuilderContext extends QTableBuilder, QDynamicContextHolder {
public interface QDynamicBuilderContext extends QDynamicTableFactory, QDynamicContextHolder {
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
public interface QDynamicContextHolder {
DataSource getDataSource();

QDynamicTable getDynamicTable();

DynamicContext getDynamicContext();

Map<String, QDynamicTable> getContextTables();

Map<String, SequanceModel> getContextSequances();

Map<String, ViewModel> getViewSequances();
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@
import com.github.vzakharchenko.dynamic.orm.core.pk.PKGenerator;
import com.github.vzakharchenko.dynamic.orm.core.query.crud.SoftDelete;
import com.github.vzakharchenko.dynamic.orm.core.query.crud.SoftDeleteFactory;
import com.google.common.collect.ImmutableMap;
import com.querydsl.core.types.Path;
import com.querydsl.sql.RelationalPath;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;

import java.io.Serializable;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
*
*/
public final class QDynamicTable extends QAbstractDynamicTable<QDynamicTable> {

public static final String WRONG_COLUMN = "Wrong column ";
private final Map<Serializable, Serializable> customFields = new HashMap<>();
private final List<IndexData> indexDatas = new ArrayList<>();
private PKGenerator<?> pkGenerator;
private Path<?> versionColumn;
private SoftDelete<?> softDelete;
private final List<IndexData> indexDatas = new ArrayList<>();

protected QDynamicTable(String tableName) {
super(StringUtils.upperCase(tableName));
Expand Down Expand Up @@ -158,13 +158,4 @@ protected List<IndexData> getIndexDatas() {
return Collections
.unmodifiableList(indexDatas);
}

protected QDynamicTable registerCustomFields(Serializable key, Serializable value) {
customFields.put(key, value);
return this;
}

public Map<Serializable, Serializable> getCustomFields() {
return ImmutableMap.copyOf(customFields);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,79 +6,60 @@
import com.github.vzakharchenko.dynamic.orm.core.dynamic.fk.QForeignKeyBuilder;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.index.QIndexBuilder;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.pk.QPrimaryKeyBuilder;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.structure.DynamicStructureSaver;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.structure.DynamicStructureUpdater;
import com.querydsl.core.types.Path;
import org.apache.commons.lang3.StringUtils;

import javax.sql.DataSource;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
*
*/
public final class QDynamicTableBuilder implements QDynamicBuilderContext {
public final class QDynamicTableBuilder implements QTableBuilder {

private final DynamicContext dynamicContext;
private final QDynamicBuilderContext dynamicContextHolder;
private final DataSource dataSource;
private DynamicStructureUpdater dynamicStructureUpdater;
private QDynamicTable qDynamicTable;

private Map<String, QDynamicTable> dynamicTableMap = new HashMap<>();

private QDynamicTableBuilder(
QDynamicTable qDynamicTable, DataSource dataSource,
DynamicContext dynamicContext, Map<String, QDynamicTable> dynamicTableMap) {
this(qDynamicTable, dataSource, dynamicContext);
this.dynamicTableMap = dynamicTableMap;
}

private QDynamicTableBuilder(QDynamicTable qDynamicTable,
DataSource dataSource,
DynamicContext dynamicContext) {
QDynamicBuilderContext dynamicContextHolder) {
this.qDynamicTable = qDynamicTable;
this.dynamicStructureUpdater = new DynamicStructureSaver(dataSource);
this.dynamicContext = dynamicContext;
this.dynamicContextHolder = dynamicContextHolder;
this.dataSource = dataSource;
}


private static QTableBuilder createBuilder(
public static QTableBuilder createBuilder(
String tableName,
DataSource dataSource,
DynamicContext dynamicContext,
Map<String, QDynamicTable> dynamicTableMap) {
QDynamicBuilderContext dynamicContextHolder) {
return new QDynamicTableBuilder(
dynamicContext.createQTable(tableName),
dataSource, dynamicContext, dynamicTableMap);
}

public static QTableBuilder createBuilder(
String tableName, DataSource dataSource, DynamicContext dynamicContext) {
return new QDynamicTableBuilder(dynamicContext.createQTable(tableName), dataSource, dynamicContext);
dynamicContextHolder.getDynamicContext().createQTable(tableName),
dataSource, dynamicContextHolder);
}


@Override
public QTableColumn addColumns() {
return new QTableColumnContextImpl(this);
return new QTableColumnContextImpl(dynamicContextHolder,
this, qDynamicTable);
}

@Override
public QPrimaryKeyBuilder addPrimaryKey() {
return new QPrimaryKeyBuilderImpl(this);
return new QPrimaryKeyBuilderImpl(this, qDynamicTable);
}

@Override
public QForeignKeyBuilder addForeignKey() {
return new QForeignKeyBuilderImpl(this);
return new QForeignKeyBuilderImpl(this, qDynamicTable, dynamicContextHolder);
}

@Override
public QIndexBuilder addIndex() {
return new QIndexBuilderImpl(this);
return new QIndexBuilderImpl(this, qDynamicTable);
}

@Override
Expand All @@ -100,67 +81,19 @@ public QTableBuilder addSoftDeleteColumn(
return this;
}

@Override
public QTableBuilder addCustomField(Serializable key, Serializable value) {
qDynamicTable = qDynamicTable.registerCustomFields(key, value);
return this;
}

@Override
public <TYPE extends Serializable> QTableBuilder addSoftDeleteColumn(
Path<TYPE> column, TYPE value, TYPE defaultValue) {
qDynamicTable = qDynamicTable.addSoftDeleteColumn(column, value, defaultValue);
return this;
}

@Override
public QTableBuilder buildNextTable(String tableName) {
dynamicTableMap.put(StringUtils.upperCase(
qDynamicTable.getTableName()), qDynamicTable);
return createBuilder(tableName, dataSource, dynamicContext, dynamicTableMap);
}


@Override
public void buildSchema() {
dynamicTableMap.put(StringUtils.upperCase(
dynamicContextHolder.getContextTables().put(StringUtils.upperCase(
qDynamicTable.getTableName()), qDynamicTable);
dynamicStructureUpdater.update(dynamicTableMap);
dynamicContext.registerQTables(dynamicTableMap.values());
}

@Override
public void support() {
dynamicTableMap.put(StringUtils.upperCase(
qDynamicTable.getTableName()), qDynamicTable);
dynamicContext.registerQTables(dynamicTableMap.values());
}

@Override
public void clear() {
dynamicTableMap.clear();
dynamicStructureUpdater = new DynamicStructureSaver(dataSource);
return createBuilder(tableName, dataSource, dynamicContextHolder);
}

@Override
public DataSource getDataSource() {
return dataSource;
public QDynamicTableFactory finish() {
dynamicContextHolder.getContextTables().put(qDynamicTable.getTableName(), qDynamicTable);
return dynamicContextHolder;
}

@Override
public QDynamicTable getDynamicTable() {
return qDynamicTable;
}

@Override
public DynamicContext getDynamicContext() {
return dynamicContext;
}

@Override
public Map<String, QDynamicTable> getContextTables() {
return dynamicTableMap;
}
}


Loading

0 comments on commit da88293

Please sign in to comment.