Rework hashcode generation (#1684)

* Rework hashcode generation

* Compile fix

* Hashcoode refactoring

* FIx compile errors
This commit is contained in:
James Agnew 2020-01-26 22:23:06 -05:00 committed by GitHub
parent ba0048aade
commit 3edeb03edc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 212 additions and 338 deletions

View File

@ -74,7 +74,7 @@ public class AddForeignKeyTask extends BaseTableColumnTask<AddForeignKeyTask> {
return; return;
} }
String sql = null; String sql;
switch (getDriverType()) { switch (getDriverType()) {
case MARIADB_10_1: case MARIADB_10_1:
case MYSQL_5_7: case MYSQL_5_7:
@ -105,28 +105,20 @@ public class AddForeignKeyTask extends BaseTableColumnTask<AddForeignKeyTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateHashCode(HashCodeBuilder theBuilder) {
if (this == theO) return true; super.generateHashCode(theBuilder);
theBuilder.append(myConstraintName);
if (theO == null || getClass() != theO.getClass()) return false; theBuilder.append(myForeignTableName);
theBuilder.append(myForeignColumnName);
AddForeignKeyTask that = (AddForeignKeyTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myConstraintName, that.myConstraintName)
.append(myForeignTableName, that.myForeignTableName)
.append(myForeignColumnName, that.myForeignColumnName)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateEquals(EqualsBuilder theBuilder, BaseTask theOtherObject) {
return new HashCodeBuilder(17, 37) AddForeignKeyTask otherObject = (AddForeignKeyTask) theOtherObject;
.appendSuper(super.hashCode()) super.generateEquals(theBuilder, otherObject);
.append(myConstraintName) theBuilder.append(myConstraintName, otherObject.myConstraintName);
.append(myForeignTableName) theBuilder.append(myForeignTableName, otherObject.myForeignTableName);
.append(myForeignColumnName) theBuilder.append(myForeignColumnName, otherObject.myForeignColumnName);
.toHashCode();
} }
} }

View File

@ -103,22 +103,13 @@ public class AddIdGeneratorTask extends BaseTask<AddIdGeneratorTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<AddIdGeneratorTask> theOtherObject) {
if (this == theO) return true; AddIdGeneratorTask otherObject = (AddIdGeneratorTask) theOtherObject;
theBuilder.append(myGeneratorName, otherObject.myGeneratorName);
if (!(theO instanceof AddIdGeneratorTask)) return false;
AddIdGeneratorTask that = (AddIdGeneratorTask) theO;
return new EqualsBuilder()
.append(myGeneratorName, that.myGeneratorName)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) theBuilder.append(myGeneratorName);
.append(myGeneratorName)
.toHashCode();
} }
} }

View File

@ -97,28 +97,21 @@ public class AddIndexTask extends BaseTableTask<AddIndexTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<AddIndexTask> theOtherObject) {
if (this == theO) return true; super.generateEquals(theBuilder, theOtherObject);
if (theO == null || getClass() != theO.getClass()) return false; AddIndexTask otherObject = (AddIndexTask) theOtherObject;
theBuilder.append(myIndexName, otherObject.myIndexName);
theBuilder.append(myColumns, otherObject.myColumns);
theBuilder.append(myUnique, otherObject.myUnique);
AddIndexTask that = (AddIndexTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myIndexName, that.myIndexName)
.append(myColumns, that.myColumns)
.append(myUnique, that.myUnique)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) super.generateHashCode(theBuilder);
.appendSuper(super.hashCode()) theBuilder.append(myIndexName);
.append(myIndexName) theBuilder.append(myColumns);
.append(myColumns) theBuilder.append(myUnique);
.append(myUnique)
.toHashCode();
} }
} }

View File

@ -110,26 +110,17 @@ public class AddTableByColumnTask extends BaseTableTask<AddTableByColumnTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<AddTableByColumnTask> theOtherObject) {
if (this == theO) return true; super.generateEquals(theBuilder, theOtherObject);
AddTableByColumnTask otherObject = (AddTableByColumnTask) theOtherObject;
if (theO == null || getClass() != theO.getClass()) return false; theBuilder.append(myAddColumnTasks, otherObject.myAddColumnTasks);
theBuilder.append(myPkColumns, otherObject.myPkColumns);
AddTableByColumnTask that = (AddTableByColumnTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myAddColumnTasks, that.myAddColumnTasks)
.append(myPkColumns, that.myPkColumns)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) super.generateHashCode(theBuilder);
.appendSuper(super.hashCode()) theBuilder.append(myAddColumnTasks);
.append(myAddColumnTasks) theBuilder.append(myPkColumns);
.append(myPkColumns)
.toHashCode();
} }
} }

View File

@ -31,7 +31,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class AddTableRawSqlTask extends BaseTableTask<AddTableRawSqlTask> { public class AddTableRawSqlTask extends BaseTableTask<AddTableRawSqlTask> {
@ -87,24 +91,15 @@ public class AddTableRawSqlTask extends BaseTableTask<AddTableRawSqlTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<AddTableRawSqlTask> theOtherObject) {
if (this == theO) return true; super.generateEquals(theBuilder, theOtherObject);
AddTableRawSqlTask otherObject = (AddTableRawSqlTask) theOtherObject;
if (theO == null || getClass() != theO.getClass()) return false; theBuilder.append(myDriverNeutralSqls, otherObject.myDriverNeutralSqls);
AddTableRawSqlTask that = (AddTableRawSqlTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myDriverNeutralSqls, that.myDriverNeutralSqls)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) super.generateHashCode(theBuilder);
.appendSuper(super.hashCode()) theBuilder.append(myDriverNeutralSqls);
.append(myDriverNeutralSqls)
.toHashCode();
} }
} }

View File

@ -103,6 +103,17 @@ public class ArbitrarySqlTask extends BaseTask<ArbitrarySqlTask> {
myConditionalOnExistenceOf.add(new TableAndColumn(theTableName, theColumnName)); myConditionalOnExistenceOf.add(new TableAndColumn(theTableName, theColumnName));
} }
@Override
protected void generateEquals(EqualsBuilder theBuilder, BaseTask<ArbitrarySqlTask> theOtherObject) {
ArbitrarySqlTask otherObject = (ArbitrarySqlTask) theOtherObject;
theBuilder.append(myTableName, otherObject.myTableName);
}
@Override
protected void generateHashCode(HashCodeBuilder theBuilder) {
theBuilder.append(myTableName);
}
public enum QueryModeEnum { public enum QueryModeEnum {
BATCH_UNTIL_NO_MORE BATCH_UNTIL_NO_MORE
} }
@ -134,7 +145,7 @@ public class ArbitrarySqlTask extends BaseTask<ArbitrarySqlTask> {
do { do {
logInfo(ourLog, "Querying for up to {} rows", myBatchSize); logInfo(ourLog, "Querying for up to {} rows", myBatchSize);
rows = getTxTemplate().execute(t -> { rows = getTxTemplate().execute(t -> {
JdbcTemplate jdbcTemplate = newJdbcTemnplate(); JdbcTemplate jdbcTemplate = newJdbcTemplate();
jdbcTemplate.setMaxRows(myBatchSize); jdbcTemplate.setMaxRows(myBatchSize);
return jdbcTemplate.query(mySql, new ColumnMapRowMapper()); return jdbcTemplate.query(mySql, new ColumnMapRowMapper());
}); });
@ -168,25 +179,4 @@ public class ArbitrarySqlTask extends BaseTask<ArbitrarySqlTask> {
return myColumn; return myColumn;
} }
} }
@Override
public boolean equals(Object theO) {
if (this == theO) return true;
if (!(theO instanceof ArbitrarySqlTask)) return false;
ArbitrarySqlTask that = (ArbitrarySqlTask) theO;
return new EqualsBuilder()
.append(myTableName, that.myTableName)
.append(myExecuteOnlyIfTableExists, that.myExecuteOnlyIfTableExists)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(myTableName)
.toHashCode();
}
} }

View File

@ -27,7 +27,7 @@ import org.thymeleaf.util.StringUtils;
import java.util.Locale; import java.util.Locale;
public abstract class BaseTableColumnTask<T extends BaseTableTask> extends BaseTableTask<T> { public abstract class BaseTableColumnTask<T extends BaseTableTask<T>> extends BaseTableTask<T> {
private String myColumnName; private String myColumnName;
@ -53,24 +53,15 @@ public abstract class BaseTableColumnTask<T extends BaseTableTask> extends BaseT
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<T> theOtherObject) {
if (this == theO) return true; BaseTableColumnTask<T> otherObject = (BaseTableColumnTask<T>) theOtherObject;
super.generateEquals(theBuilder, otherObject);
if (!(theO instanceof BaseTableColumnTask)) return false; theBuilder.append(myColumnName, otherObject.myColumnName);
BaseTableColumnTask<?> that = (BaseTableColumnTask<?>) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myColumnName, that.myColumnName)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) super.generateHashCode(theBuilder);
.appendSuper(super.hashCode()) theBuilder.append(myColumnName);
.append(myColumnName)
.toHashCode();
} }
} }

View File

@ -25,17 +25,12 @@ import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
public abstract class BaseTableColumnTypeTask<T extends BaseTableTask> extends BaseTableColumnTask<T> { public abstract class BaseTableColumnTypeTask<T extends BaseTableColumnTypeTask<T>> extends BaseTableColumnTask<T> {
private static final Logger ourLog = LoggerFactory.getLogger(BaseTableColumnTypeTask.class);
private ColumnTypeEnum myColumnType; private ColumnTypeEnum myColumnType;
private Map<ColumnTypeEnum, Map<DriverTypeEnum, String>> myColumnTypeToDriverTypeToSqlType = new HashMap<>(); private Map<ColumnTypeEnum, Map<DriverTypeEnum, String>> myColumnTypeToDriverTypeToSqlType = new HashMap<>();
private Boolean myNullable; private Boolean myNullable;
@ -116,6 +111,12 @@ public abstract class BaseTableColumnTypeTask<T extends BaseTableTask> extends B
return myColumnType; return myColumnType;
} }
@SuppressWarnings("unchecked")
public T setColumnType(ColumnTypeEnum theColumnType) {
myColumnType = theColumnType;
return (T) this;
}
private void setColumnType(ColumnTypeEnum theColumnType, DriverTypeEnum theDriverType, String theColumnTypeSql) { private void setColumnType(ColumnTypeEnum theColumnType, DriverTypeEnum theDriverType, String theColumnTypeSql) {
Map<DriverTypeEnum, String> columnSqlType = myColumnTypeToDriverTypeToSqlType.computeIfAbsent(theColumnType, k -> new HashMap<>()); Map<DriverTypeEnum, String> columnSqlType = myColumnTypeToDriverTypeToSqlType.computeIfAbsent(theColumnType, k -> new HashMap<>());
if (columnSqlType.containsKey(theDriverType)) { if (columnSqlType.containsKey(theDriverType)) {
@ -124,7 +125,6 @@ public abstract class BaseTableColumnTypeTask<T extends BaseTableTask> extends B
columnSqlType.put(theDriverType, theColumnTypeSql); columnSqlType.put(theDriverType, theColumnTypeSql);
} }
@Override @Override
public void validate() { public void validate() {
super.validate(); super.validate();
@ -138,12 +138,6 @@ public abstract class BaseTableColumnTypeTask<T extends BaseTableTask> extends B
} }
} }
@SuppressWarnings("unchecked")
public T setColumnType(ColumnTypeEnum theColumnType) {
myColumnType = theColumnType;
return (T) this;
}
protected String getSqlType() { protected String getSqlType() {
return getSqlType(getColumnLength()); return getSqlType(getColumnLength());
} }
@ -181,6 +175,30 @@ public abstract class BaseTableColumnTypeTask<T extends BaseTableTask> extends B
return this; return this;
} }
@Override
protected void generateHashCode(HashCodeBuilder theBuilder) {
super.generateHashCode(theBuilder);
theBuilder.append(getColumnTypeName(myColumnType));
theBuilder.append(myNullable);
theBuilder.append(myColumnLength);
}
@Override
protected void generateEquals(EqualsBuilder theBuilder, BaseTask<T> theOtherObject) {
BaseTableColumnTypeTask otherObject = (BaseTableColumnTypeTask) theOtherObject;
super.generateEquals(theBuilder, otherObject);
theBuilder.append(getColumnTypeName(myColumnType), getColumnTypeName(otherObject.myColumnType));
theBuilder.append(myNullable, otherObject.myNullable);
theBuilder.append(myColumnLength, otherObject.myColumnLength);
}
@Nullable
private Object getColumnTypeName(ColumnTypeEnum theColumnType) {
if (theColumnType == null) {
return null;
}
return myColumnType.name();
}
public enum ColumnTypeEnum { public enum ColumnTypeEnum {
@ -191,42 +209,7 @@ public abstract class BaseTableColumnTypeTask<T extends BaseTableTask> extends B
FLOAT, FLOAT,
INT, INT,
BLOB, BLOB,
CLOB CLOB;
;
} }
@Override
public boolean equals(Object theO) {
if (this == theO) return true;
if (!(theO instanceof BaseTableColumnTypeTask)) return false;
BaseTableColumnTypeTask<?> that = (BaseTableColumnTypeTask<?>) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(getColumnTypeName(myColumnType), getColumnTypeName(that.myColumnType))
.append(myNullable, that.myNullable)
.append(myColumnLength, that.myColumnLength)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.appendSuper(super.hashCode())
.append(getColumnTypeName(myColumnType))
.append(myNullable)
.append(myColumnLength)
.toHashCode();
}
@Nullable
private Object getColumnTypeName(ColumnTypeEnum theColumnType) {
if (theColumnType == null) {
return null;
}
return myColumnType.name();
}
} }

View File

@ -24,7 +24,7 @@ import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder;
public abstract class BaseTableTask<T extends BaseTableTask> extends BaseTask { public abstract class BaseTableTask<T extends BaseTableTask<T>> extends BaseTask<T> {
private String myTableName; private String myTableName;
public BaseTableTask(String theProductVersion, String theSchemaVersion) { public BaseTableTask(String theProductVersion, String theSchemaVersion) {
@ -38,6 +38,7 @@ public abstract class BaseTableTask<T extends BaseTableTask> extends BaseTask {
public T setTableName(String theTableName) { public T setTableName(String theTableName) {
Validate.notBlank(theTableName); Validate.notBlank(theTableName);
myTableName = theTableName; myTableName = theTableName;
//noinspection unchecked
return (T) this; return (T) this;
} }
@ -47,22 +48,13 @@ public abstract class BaseTableTask<T extends BaseTableTask> extends BaseTask {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<T> theOtherObject) {
if (this == theO) return true; BaseTableTask<T> otherObject = (BaseTableTask<T>) theOtherObject;
theBuilder.append(myTableName, otherObject.myTableName);
if (!(theO instanceof BaseTableTask)) return false;
BaseTableTask<?> that = (BaseTableTask<?>) theO;
return new EqualsBuilder()
.append(myTableName, that.myTableName)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) theBuilder.append(myTableName);
.append(myTableName)
.toHashCode();
} }
} }

View File

@ -21,6 +21,8 @@ package ca.uhn.fhir.jpa.migrate.taskdef;
*/ */
import ca.uhn.fhir.jpa.migrate.DriverTypeEnum; import ca.uhn.fhir.jpa.migrate.DriverTypeEnum;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.intellij.lang.annotations.Language; import org.intellij.lang.annotations.Language;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -38,9 +40,11 @@ import java.util.regex.Pattern;
public abstract class BaseTask<T extends BaseTask> { public abstract class BaseTask<T extends BaseTask> {
private static final Logger ourLog = LoggerFactory.getLogger(BaseTask.class);
public static final String MIGRATION_VERSION_PATTERN = "\\d{8}\\.\\d+"; public static final String MIGRATION_VERSION_PATTERN = "\\d{8}\\.\\d+";
private static final Logger ourLog = LoggerFactory.getLogger(BaseTask.class);
private static final Pattern versionPattern = Pattern.compile(MIGRATION_VERSION_PATTERN); private static final Pattern versionPattern = Pattern.compile(MIGRATION_VERSION_PATTERN);
private final String myProductVersion;
private final String mySchemaVersion;
private DriverTypeEnum.ConnectionProperties myConnectionProperties; private DriverTypeEnum.ConnectionProperties myConnectionProperties;
private DriverTypeEnum myDriverType; private DriverTypeEnum myDriverType;
private String myDescription; private String myDescription;
@ -50,8 +54,6 @@ public abstract class BaseTask<T extends BaseTask> {
private List<ExecutedStatement> myExecutedStatements = new ArrayList<>(); private List<ExecutedStatement> myExecutedStatements = new ArrayList<>();
private boolean myNoColumnShrink; private boolean myNoColumnShrink;
private boolean myFailureAllowed; private boolean myFailureAllowed;
private final String myProductVersion;
private final String mySchemaVersion;
protected BaseTask(String theProductVersion, String theSchemaVersion) { protected BaseTask(String theProductVersion, String theSchemaVersion) {
myProductVersion = theProductVersion; myProductVersion = theProductVersion;
@ -151,7 +153,7 @@ public abstract class BaseTask<T extends BaseTask> {
return getConnectionProperties().getTxTemplate(); return getConnectionProperties().getTxTemplate();
} }
public JdbcTemplate newJdbcTemnplate() { public JdbcTemplate newJdbcTemplate() {
return getConnectionProperties().newJdbcTemplate(); return getConnectionProperties().newJdbcTemplate();
} }
@ -197,6 +199,30 @@ public abstract class BaseTask<T extends BaseTask> {
return this; return this;
} }
@Override
public final int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder();
generateHashCode(builder);
return builder.hashCode();
}
protected abstract void generateHashCode(HashCodeBuilder theBuilder);
@Override
public final boolean equals(Object theObject) {
if (theObject == null || getClass().equals(theObject.getClass()) == false) {
return false;
}
@SuppressWarnings("unchecked")
T otherObject = (T) theObject;
EqualsBuilder b = new EqualsBuilder();
generateEquals(b, otherObject);
return b.isEquals();
}
protected abstract void generateEquals(EqualsBuilder theBuilder, BaseTask<T> theOtherObject);
public static class ExecutedStatement { public static class ExecutedStatement {
private final String mySql; private final String mySql;
private final List<Object> myArguments; private final List<Object> myArguments;

View File

@ -77,7 +77,7 @@ public class CalculateHashesTask extends BaseTableColumnTask<CalculateHashesTask
while(true) { while(true) {
MyRowCallbackHandler rch = new MyRowCallbackHandler(); MyRowCallbackHandler rch = new MyRowCallbackHandler();
getTxTemplate().execute(t -> { getTxTemplate().execute(t -> {
JdbcTemplate jdbcTemplate = newJdbcTemnplate(); JdbcTemplate jdbcTemplate = newJdbcTemplate();
jdbcTemplate.setMaxRows(100000); jdbcTemplate.setMaxRows(100000);
String sql = "SELECT * FROM " + getTableName() + " WHERE " + getColumnName() + " IS NULL"; String sql = "SELECT * FROM " + getTableName() + " WHERE " + getColumnName() + " IS NULL";
logInfo(ourLog, "Finding up to {} rows in {} that requires hashes", myBatchSize, getTableName()); logInfo(ourLog, "Finding up to {} rows in {} that requires hashes", myBatchSize, getTableName());
@ -184,7 +184,7 @@ public class CalculateHashesTask extends BaseTableColumnTask<CalculateHashesTask
arguments.add((Number) nextRow.get("SP_ID")); arguments.add((Number) nextRow.get("SP_ID"));
// Apply update SQL // Apply update SQL
newJdbcTemnplate().update(sqlBuilder.toString(), arguments.toArray()); newJdbcTemplate().update(sqlBuilder.toString(), arguments.toArray());
} }

View File

@ -81,6 +81,21 @@ public class DropForeignKeyTask extends BaseTableTask<DropForeignKeyTask> {
} }
@Override
protected void generateEquals(EqualsBuilder theBuilder, BaseTask theOtherObject) {
DropForeignKeyTask otherObject = (DropForeignKeyTask) theOtherObject;
super.generateEquals(theBuilder, otherObject);
theBuilder.append(myConstraintName, otherObject.myConstraintName);
theBuilder.append(myParentTableName, otherObject.myParentTableName);
}
@Override
protected void generateHashCode(HashCodeBuilder theBuilder) {
super.generateHashCode(theBuilder);
theBuilder.append(myConstraintName);
theBuilder.append(myParentTableName);
}
@Nonnull @Nonnull
static List<String> generateSql(String theTableName, String theConstraintName, DriverTypeEnum theDriverType) { static List<String> generateSql(String theTableName, String theConstraintName, DriverTypeEnum theDriverType) {
List<String> sqls = new ArrayList<>(); List<String> sqls = new ArrayList<>();
@ -103,28 +118,4 @@ public class DropForeignKeyTask extends BaseTableTask<DropForeignKeyTask> {
} }
return sqls; return sqls;
} }
@Override
public boolean equals(Object theO) {
if (this == theO) return true;
if (theO == null || getClass() != theO.getClass()) return false;
DropForeignKeyTask that = (DropForeignKeyTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myConstraintName, that.myConstraintName)
.append(myParentTableName, that.myParentTableName)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.appendSuper(super.hashCode())
.append(myConstraintName)
.append(myParentTableName)
.toHashCode();
}
} }

View File

@ -103,22 +103,13 @@ public class DropIdGeneratorTask extends BaseTask<DropIdGeneratorTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<DropIdGeneratorTask> theOtherObject) {
if (this == theO) return true; DropIdGeneratorTask otherObject = (DropIdGeneratorTask) theOtherObject;
theBuilder.append(myGeneratorName, otherObject.myGeneratorName);
if (!(theO instanceof DropIdGeneratorTask)) return false;
DropIdGeneratorTask that = (DropIdGeneratorTask) theO;
return new EqualsBuilder()
.append(myGeneratorName, that.myGeneratorName)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) theBuilder.append(myGeneratorName);
.append(myGeneratorName)
.toHashCode();
} }
} }

View File

@ -78,6 +78,19 @@ public class DropIndexTask extends BaseTableTask<DropIndexTask> {
return this; return this;
} }
@Override
protected void generateEquals(EqualsBuilder theBuilder, BaseTask theOtherObject) {
DropIndexTask otherObject = (DropIndexTask) theOtherObject;
super.generateEquals(theBuilder, otherObject);
theBuilder.append(myIndexName, otherObject.myIndexName);
}
@Override
protected void generateHashCode(HashCodeBuilder theBuilder) {
super.generateHashCode(theBuilder);
theBuilder.append(myIndexName);
}
static List<String> createDropIndexSql(DriverTypeEnum.ConnectionProperties theConnectionProperties, String theTableName, String theIndexName, DriverTypeEnum theDriverType) throws SQLException { static List<String> createDropIndexSql(DriverTypeEnum.ConnectionProperties theConnectionProperties, String theTableName, String theIndexName, DriverTypeEnum theDriverType) throws SQLException {
Validate.notBlank(theIndexName, "theIndexName must not be blank"); Validate.notBlank(theIndexName, "theIndexName must not be blank");
Validate.notBlank(theTableName, "theTableName must not be blank"); Validate.notBlank(theTableName, "theTableName must not be blank");
@ -130,26 +143,4 @@ public class DropIndexTask extends BaseTableTask<DropIndexTask> {
} }
return sql; return sql;
} }
@Override
public boolean equals(Object theO) {
if (this == theO) return true;
if (theO == null || getClass() != theO.getClass()) return false;
DropIndexTask that = (DropIndexTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myIndexName, that.myIndexName)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.appendSuper(super.hashCode())
.append(myIndexName)
.toHashCode();
}
} }

View File

@ -80,22 +80,15 @@ public class ExecuteRawSqlTask extends BaseTask<ExecuteRawSqlTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<ExecuteRawSqlTask> theOtherObject) {
if (this == theO) return true; ExecuteRawSqlTask otherObject = (ExecuteRawSqlTask) theOtherObject;
theBuilder.append(myDriverNeutralSqls, otherObject.myDriverNeutralSqls);
if (!(theO instanceof ExecuteRawSqlTask)) return false; theBuilder.append(myDriverToSqls, otherObject.myDriverToSqls);
ExecuteRawSqlTask that = (ExecuteRawSqlTask) theO;
return new EqualsBuilder()
.append(myDriverNeutralSqls, that.myDriverNeutralSqls)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) theBuilder.append(myDriverNeutralSqls);
.append(myDriverNeutralSqls) theBuilder.append(myDriverToSqls);
.toHashCode();
} }
} }

View File

@ -68,22 +68,13 @@ public class InitializeSchemaTask extends BaseTask<InitializeSchemaTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateEquals(EqualsBuilder theBuilder, BaseTask<InitializeSchemaTask> theOtherObject) {
if (this == theO) return true; InitializeSchemaTask otherObject = (InitializeSchemaTask) theOtherObject;
theBuilder.append(mySchemaInitializationProvider, otherObject.mySchemaInitializationProvider);
if (theO == null || getClass() != theO.getClass()) return false;
InitializeSchemaTask that = (InitializeSchemaTask) theO;
return new EqualsBuilder()
.append(mySchemaInitializationProvider, that.mySchemaInitializationProvider)
.isEquals();
} }
@Override @Override
public int hashCode() { protected void generateHashCode(HashCodeBuilder theBuilder) {
return new HashCodeBuilder(17, 37) theBuilder.append(mySchemaInitializationProvider);
.append(mySchemaInitializationProvider)
.toHashCode();
} }
} }

View File

@ -22,7 +22,6 @@ package ca.uhn.fhir.jpa.migrate.taskdef;
import ca.uhn.fhir.jpa.migrate.JdbcUtils; import ca.uhn.fhir.jpa.migrate.JdbcUtils;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -137,26 +136,9 @@ public class RenameColumnTask extends BaseTableTask<RenameColumnTask> {
} }
@Override @Override
public boolean equals(Object theO) { protected void generateHashCode(HashCodeBuilder theBuilder) {
if (this == theO) return true; super.generateHashCode(theBuilder);
theBuilder.append(myOldName);
if (theO == null || getClass() != theO.getClass()) return false; theBuilder.append(myNewName);
RenameColumnTask that = (RenameColumnTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myOldName, that.myOldName)
.append(myNewName, that.myNewName)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.appendSuper(super.hashCode())
.append(myOldName)
.append(myNewName)
.toHashCode();
} }
} }

View File

@ -81,6 +81,21 @@ public class RenameIndexTask extends BaseTableTask<RenameIndexTask> {
return this; return this;
} }
@Override
protected void generateEquals(EqualsBuilder theBuilder, BaseTask theOtherObject) {
RenameIndexTask otherObject = (RenameIndexTask) theOtherObject;
super.generateEquals(theBuilder, otherObject);
theBuilder.append(myOldIndexName, otherObject.myOldIndexName);
theBuilder.append(myNewIndexName, otherObject.myNewIndexName);
}
@Override
protected void generateHashCode(HashCodeBuilder theBuilder) {
super.generateHashCode(theBuilder);
theBuilder.append(myOldIndexName);
theBuilder.append(myNewIndexName);
}
static List<String> createRenameIndexSql(DriverTypeEnum.ConnectionProperties theConnectionProperties, String theTableName, String theOldIndexName, String theNewIndexName, DriverTypeEnum theDriverType) throws SQLException { static List<String> createRenameIndexSql(DriverTypeEnum.ConnectionProperties theConnectionProperties, String theTableName, String theOldIndexName, String theNewIndexName, DriverTypeEnum theDriverType) throws SQLException {
Validate.notBlank(theOldIndexName, "theOldIndexName must not be blank"); Validate.notBlank(theOldIndexName, "theOldIndexName must not be blank");
Validate.notBlank(theNewIndexName, "theNewIndexName must not be blank"); Validate.notBlank(theNewIndexName, "theNewIndexName must not be blank");
@ -110,28 +125,4 @@ public class RenameIndexTask extends BaseTableTask<RenameIndexTask> {
} }
return sql; return sql;
} }
@Override
public boolean equals(Object theO) {
if (this == theO) return true;
if (theO == null || getClass() != theO.getClass()) return false;
RenameIndexTask that = (RenameIndexTask) theO;
return new EqualsBuilder()
.appendSuper(super.equals(theO))
.append(myOldIndexName, that.myOldIndexName)
.append(myNewIndexName, that.myNewIndexName)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.appendSuper(super.hashCode())
.append(myOldIndexName)
.append(myNewIndexName)
.toHashCode();
}
} }