org.activiti.engine.impl.db.ActivitiVersion Maven / Gradle / Ivy
package org.activiti.engine.impl.db;
import java.util.Collections;
import java.util.List;
/**
* This class is used for auto-upgrade purposes.
*
* The idea is that instances of this class are put in a sequential order, and that the current version is determined from the ACT_GE_PROPERTY table.
*
* Since sometimes in the past, a version is ambiguous (eg. 5.12 => 5.12, 5.12.1, 5.12T) this class act as a wrapper with a smarter matches() method.
*
*/
public class ActivitiVersion {
protected String mainVersion;
protected List alternativeVersionStrings;
public ActivitiVersion(String mainVersion) {
this.mainVersion = mainVersion;
this.alternativeVersionStrings = Collections.singletonList(mainVersion);
}
public ActivitiVersion(String mainVersion, List alternativeVersionStrings) {
this.mainVersion = mainVersion;
this.alternativeVersionStrings = alternativeVersionStrings;
}
public String getMainVersion() {
return mainVersion;
}
public boolean matches(String version) {
if (version.equals(mainVersion)) {
return true;
} else if (!alternativeVersionStrings.isEmpty()) {
return alternativeVersionStrings.contains(version);
} else {
return false;
}
}
public boolean equals(Object obj) {
if (!(obj instanceof ActivitiVersion)) {
return false;
}
ActivitiVersion other = (ActivitiVersion) obj;
boolean mainVersionEqual = mainVersion.equals(other.mainVersion);
if (!mainVersionEqual) {
return false;
} else {
if (alternativeVersionStrings != null) {
return alternativeVersionStrings.equals(other.alternativeVersionStrings);
} else {
return other.alternativeVersionStrings == null;
}
}
}
}