Skip to content

Commit

Permalink
update dynamic builder
Browse files Browse the repository at this point in the history
  • Loading branch information
vzakharchenko committed Mar 10, 2020
1 parent 8779d48 commit 387d2d3
Show file tree
Hide file tree
Showing 47 changed files with 1,224 additions and 397 deletions.
1 change: 0 additions & 1 deletion analizers/exclude-pmd.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ com.github.vzakharchenko.dynamic.orm.core.dynamic.QDynamicTable=CyclomaticComple
com.github.vzakharchenko.dynamic.orm.core.cache.event.ModifyEvent=NullAssignment,CloneMethodReturnTypeMustMatchClassName
com.github.vzakharchenko.dynamic.orm.core.dynamic.QAbstractDynamicTable=TooManyMethods
com.github.vzakharchenko.dynamic.orm.core.dynamic.QDynamicTableBuilder=TooManyMethods
com.github.vzakharchenko.dynamic.orm.core.dynamic.QTableBuilder=TooManyMethods
com.github.vzakharchenko.dynamic.orm.core.dynamic.dml.DynamicModel=CloneMethodReturnTypeMustMatchClassName
com.github.vzakharchenko.dynamic.orm.core.helper.ModelHelper=GodClass
com.github.vzakharchenko.dynamic.orm.core.helper.VersionHelper=UnnecessaryLocalBeforeReturn
Expand Down
7 changes: 7 additions & 0 deletions analizers/findbugs-exclude.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
<Match>
<Bug pattern="PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS"/>
</Match>
<Match>
<Bug pattern="BC_UNCONFIRMED_CAST"/>
</Match>
<Match>
<Class name="com.github.vzakharchenko.dynamic.orm.core.RawModelImpl"/>
<Bug pattern="SE_TRANSIENT_FIELD_NOT_RESTORED"/>
Expand Down Expand Up @@ -93,4 +96,8 @@
<Class name="com.github.vzakharchenko.dynamic.orm.structure.DbStructureServiceImpl"/>
<Bug pattern="JPAI_NON_PROXIED_TRANSACTION_CALL"/>
</Match>
<Match>
<Class name="com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QDefaultColumnBuilder"/>
<Bug pattern="PCOA_PARTIALLY_CONSTRUCTED_OBJECT_ACCESS"/>
</Match>
</FindBugsFilter>
Original file line number Diff line number Diff line change
Expand Up @@ -8,54 +8,17 @@
/**
*
*/
public class ColumnMetaDataInfo implements Serializable {
public interface ColumnMetaDataInfo extends Serializable {

Path getColumn();

private final Path column;
Integer getSize();

private final Integer size;
String getJdbcType();

private final String jdbcType;
Integer getDecimalDigits();

private Integer decimalDigits;

private final boolean nullable;
// CHECKSTYLE:OFF
protected ColumnMetaDataInfo(Path column, String type, Integer size,
boolean nullable, Integer decimalDigits) {
this.column = column;
this.jdbcType = type;
this.nullable = nullable;
this.size = size;
this.decimalDigits = decimalDigits;
}
// CHECKSTYLE:ON
protected ColumnMetaDataInfo(Path column, String type,
Integer size, boolean nullable) {
this.column = column;
this.jdbcType = type;
this.size = size;
this.nullable = nullable;
}

public Path getColumn() {
return column;
}

public Integer getSize() {
return size;
}

public String getJdbcType() {
return jdbcType;
}

public Integer getDecimalDigits() {
return decimalDigits;
}

public Boolean isNullable() {
return nullable;
}
Boolean isNullable();

Boolean isPrimaryKey();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.github.vzakharchenko.dynamic.orm.core.dynamic;


import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QNumberColumn;
import com.querydsl.core.types.Path;

/**
*
*/
public class NumberColumnMetaDataInfo implements ColumnMetaDataInfo {


private final Path column;

private final Integer size;

private final String jdbcType;

private final Boolean nullable;

private final Integer decimalDigits;

private final Boolean primaryKey;

protected NumberColumnMetaDataInfo(Path column, String type,
QNumberColumn numberColumn) {
this.column = column;
this.jdbcType = type;
this.size = numberColumn.size();
this.nullable = !numberColumn.notNull();
this.decimalDigits = numberColumn.decimalDigits();
this.primaryKey = numberColumn.isPrimaryKey();
}

@Override
public Path getColumn() {
return column;
}

@Override
public Integer getSize() {
return size;
}

@Override
public String getJdbcType() {
return jdbcType;
}

@Override
public Integer getDecimalDigits() {
return decimalDigits;
}

@Override
public Boolean isNullable() {
return nullable;
}

@Override
public Boolean isPrimaryKey() {
return primaryKey;
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.github.vzakharchenko.dynamic.orm.core.dynamic;

import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QColumn;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QNumberColumn;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QSizeColumn;
import com.github.vzakharchenko.dynamic.orm.core.helper.ModelHelper;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.PathMetadataFactory;
Expand All @@ -11,6 +14,7 @@
import liquibase.database.Database;
import liquibase.datatype.DatabaseDataType;
import liquibase.datatype.core.*;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;

Expand All @@ -33,70 +37,73 @@ protected QAbstractDynamicTable(String tableName) {
}

protected DYNAMIC_TABLE createStringColumn(
Database database, String columnName, int size, boolean notNull) {
Database database, QSizeColumn sizeColumn) {
DatabaseDataType databaseDataType = new VarcharType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createString(columnName),
databaseDataType.getType(), size, !notNull));
return addColumn(new SizeColumnMetaDataInfo(createString(sizeColumn.columnName()),
databaseDataType.getType(), sizeColumn));
}

protected DYNAMIC_TABLE createCharColumn(
Database database, String columnName, int size, boolean notNull) {
Database database, QSizeColumn sizeColumn) {
DatabaseDataType databaseDataType = new CharType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createString(columnName),
databaseDataType.getType(), size, !notNull));
return addColumn(new SizeColumnMetaDataInfo(createString(sizeColumn.columnName()),
databaseDataType.getType(), sizeColumn));
}

protected DYNAMIC_TABLE createClobColumn(
Database database, String columnName, int size, boolean notNull) {
Database database, QSizeColumn sizeColumn) {
DatabaseDataType databaseDataType = new ClobType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createString(columnName),
databaseDataType.getType(), size, !notNull));
return addColumn(new SizeColumnMetaDataInfo(createString(sizeColumn.columnName()),
databaseDataType.getType(), sizeColumn));
}

protected DYNAMIC_TABLE createBooleanColumn(
Database database, String columnName, boolean notNull) {
Database database, QColumn column) {
DatabaseDataType databaseDataType = new BooleanType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createBoolean(columnName),
databaseDataType.getType(), 1, !notNull));
return addColumn(new SizeColumnMetaDataInfo(createBoolean(column.columnName()),
databaseDataType.getType(), 1, column));
}


protected DYNAMIC_TABLE createBlobColumn(
Database database, String columnName, int size, boolean notNull) {
Database database, QSizeColumn sizeColumn) {
DatabaseDataType dataType = new BlobType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createSimple(columnName, byte[].class),
dataType.getType(), size, !notNull));
return addColumn(new SizeColumnMetaDataInfo(
createSimple(sizeColumn.columnName(), byte[].class),
dataType.getType(), sizeColumn));
}

// CHECKSTYLE:OFF
protected <T extends Number & Comparable<?>> DYNAMIC_TABLE createNumberColumn(
Database database, String columnName, Class<T> typeClass, Integer size,
Integer decimalDigits, boolean notNull) {
protected DYNAMIC_TABLE createNumberColumn(
Database database, QNumberColumn numberColumn) {
DatabaseDataType databaseDataType = new NumberType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createNumber(columnName, typeClass),
databaseDataType.getType(), size, !notNull, decimalDigits));
return addColumn(new NumberColumnMetaDataInfo(
createNumber(numberColumn.columnName(),
numberColumn.numberClass()),
databaseDataType.getType(), numberColumn));
}

// CHECKSTYLE:ON
protected DYNAMIC_TABLE createDateColumn(
Database database, String columnName, boolean notNull) {
DatabaseDataType databaseDataType = new DateType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createDate(columnName, Date.class),
databaseDataType.getType(), null, !notNull));
Database database, QSizeColumn sizeColumn) {
DatabaseDataType dataType = new DateType().toDatabaseDataType(database);
return addColumn(new SizeColumnMetaDataInfo(
createDate(sizeColumn.columnName(), Date.class),
dataType.getType(), sizeColumn));
}

protected DYNAMIC_TABLE createDateTimeColumn(
Database database, String columnName, boolean notNull) {
DatabaseDataType databaseDataType = new TimestampType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createDateTime(columnName, Date.class),
databaseDataType.getType(), null, !notNull));
Database database, QSizeColumn sizeColumn) {
DatabaseDataType dataType = new TimestampType().toDatabaseDataType(database);
return addColumn(new SizeColumnMetaDataInfo(
createDateTime(sizeColumn.columnName(), Date.class),
dataType.getType(), sizeColumn));
}

protected DYNAMIC_TABLE createTimeColumn(
Database database, String columnName, boolean notNull) {
DatabaseDataType databaseDataType = new TimeType().toDatabaseDataType(database);
return addColumn(new ColumnMetaDataInfo(createTime(columnName, Date.class),
databaseDataType.getType(), null, !notNull));
Database database, QSizeColumn sizeColumn) {
DatabaseDataType dataType = new TimeType().toDatabaseDataType(database);
return addColumn(new SizeColumnMetaDataInfo(
createTime(sizeColumn.columnName(), Date.class),
dataType.getType(), sizeColumn));
}


Expand Down Expand Up @@ -149,6 +156,9 @@ private DYNAMIC_TABLE addColumn(
Assert.notNull(columnMetaDataInfo);
addMetadata(columnMetaDataInfo);
Path column = columnMetaDataInfo.getColumn();
if (BooleanUtils.isTrue(columnMetaDataInfo.isPrimaryKey())) {
addPrimaryKey(column);
}
columns.put(ModelHelper.getColumnRealName(column), column);
columnMetaDataInfoMap.put(column, columnMetaDataInfo);
Assert.notNull(add(column));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.github.vzakharchenko.dynamic.orm.core.dynamic;

import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QSizeColumnImpl;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QTableColumn;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QTableColumnContext;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QSizeColumnBuilder;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QSizeColumnBuilderImpl;
import liquibase.database.Database;

public class QBlobBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


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

@Override
protected QSizeColumnImpl construct(String columnName) {
return new QSizeColumnImpl(columnName);
}

@Override
protected void createColumn(QDynamicTable dynamicTable, Database database) {
dynamicTable
.createBlobColumn(database, columnType);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.github.vzakharchenko.dynamic.orm.core.dynamic;

import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QDefaultColumn;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QTableColumn;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QTableColumnContext;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QDefaultColumnBuilder;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QSizeColumnBuilder;
import liquibase.database.Database;

public class QBooleanBuilder extends QDefaultColumnBuilder<QDefaultColumn,
QSizeColumnBuilder<QTableColumn, ?>> {


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

@Override
protected QDefaultColumn construct(String columnName) {
return new QDefaultColumn(columnName);
}

@Override
protected void createColumn(QDynamicTable dynamicTable,
Database database) {
dynamicTable
.createBooleanColumn(database, columnType);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.github.vzakharchenko.dynamic.orm.core.dynamic;

import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QSizeColumnImpl;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QTableColumn;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.QTableColumnContext;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QSizeColumnBuilder;
import com.github.vzakharchenko.dynamic.orm.core.dynamic.column.builder.QSizeColumnBuilderImpl;
import liquibase.database.Database;

public class QCharBuilder extends QSizeColumnBuilderImpl<QSizeColumnImpl,
QSizeColumnBuilder<QTableColumn, ?>> {


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

@Override
protected QSizeColumnImpl construct(String columnName) {
return new QSizeColumnImpl(columnName);
}

@Override
protected void createColumn(QDynamicTable dynamicTable,
Database database) {
dynamicTable
.createCharColumn(database, columnType);
}

}
Loading

0 comments on commit 387d2d3

Please sign in to comment.