package it.cavallium.data.generator.plugin; import static it.cavallium.data.generator.plugin.DataModel.joinPackage; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.StringJoiner; import org.jetbrains.annotations.NotNull; public class ComputedVersion implements Comparable { private final String name; private final int version; private final boolean current; public DetailsConfiguration details; public List transformations; public ComputedVersion(ParsedVersion value, int version, boolean current, String versionName) { this.details = value.details; this.transformations = value.transformations; this.name = versionName; this.version = version; this.current = current; } public int getVersion() { return version; } public String getName() { return name; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ComputedVersion that = (ComputedVersion) o; return Objects.equals(version, that.version); } @Override public int hashCode() { return ConfigUtils.hashCode(version); } public String getPackage(String basePackageName) { if (current) { return joinPackage(basePackageName, "current"); } else { return joinPackage(basePackageName, "v" + version); } } public String getDataPackage(String basePackageName) { return joinPackage(getPackage(basePackageName), "data"); } public String getUpgradersPackage(String basePackageName) { return joinPackage(getPackage(basePackageName), "upgraders"); } public String getSerializersPackage(String basePackageName) { return joinPackage(getPackage(basePackageName), "serializers"); } public String getDataNullablesPackage(String basePackageName) { return joinPackage(getDataPackage(basePackageName), "nullables"); } public String getVersionVarName() { return "V" + version; } public String getVersionShortInt() { return Integer.toString(version); } public boolean isCurrent() { return current; } @Override public int compareTo(@NotNull ComputedVersion o) { return Integer.compare(version, o.version); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(version); sb.append(" ("); sb.append(name); if (current) { sb.append(", current"); } sb.append(")"); return sb.toString(); } }