package org.jfrog.bamboo.release.action; import com.google.common.collect.Lists; import org.jfrog.bamboo.util.Utils; import java.io.Serializable; import java.util.List; import java.util.Map; /** * Holder object that holds information about module versions. It will hold the key or module depending on the type of * build, the value that is there now, and whether this is a release prop (relevant for a Gradle build). It will also * store the new value that is to be replaced. * * @author Tomer Cohen */ public class ModuleVersionHolder implements Serializable { private final String key; private final String originalValue; private boolean releaseProp; private String releaseValue; private String nextIntegValue; public ModuleVersionHolder(String key, String originalValue, boolean releaseProp) { this.key = key; this.originalValue = originalValue; this.releaseProp = releaseProp; this.releaseValue = ""; this.nextIntegValue = ""; } public ModuleVersionHolder(String key, String originalValue) { this(key, originalValue, false); } public String getKey() { return key; } public String getOriginalValue() { return originalValue; } public boolean isReleaseProp() { return releaseProp; } public void setReleaseProp(boolean releaseProp) { this.releaseProp = releaseProp; } public String getReleaseValue() { return releaseValue; } public void setReleaseValue(String releaseValue) { this.releaseValue = releaseValue; } public String getNextIntegValue() { if (releaseProp) { return originalValue; } return nextIntegValue; } public void setNextIntegValue(String nextIntegValue) { this.nextIntegValue = nextIntegValue; } public static List<ModuleVersionHolder> buildFromConf(Map<String, String> conf) { List<ModuleVersionHolder> result = Lists.newArrayList(); int size = getNumberOfModules(conf); for (int i = 0; i < size; i++) { String moduleKey = conf.get(ReleaseAndPromotionAction.MODULE_KEY + "." + i); String currentValue = conf.get(ReleaseAndPromotionAction.CURRENT_VALUE_KEY + "." + i); String integValue = conf.get(ReleaseAndPromotionAction.NEXT_INTEG_KEY + "." + i); String releaseValue = conf.get(ReleaseAndPromotionAction.RELEASE_VALUE_KEY + "." + i); String releaseProp = conf.get(ReleaseAndPromotionAction.RELEASE_PROP_KEY + "." + i); boolean isReleaseProp = Boolean.parseBoolean(releaseProp); ModuleVersionHolder holder = new ModuleVersionHolder(moduleKey, currentValue, isReleaseProp); holder.setReleaseValue(releaseValue); holder.setNextIntegValue(integValue); result.add(holder); } return result; } private static int getNumberOfModules(Map<String, String> conf) { return Utils.filterMapKeysByPrefix(conf, ReleaseAndPromotionAction.MODULE_KEY).size(); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ModuleVersionHolder holder = (ModuleVersionHolder) o; return key.equals(holder.key); } @Override public int hashCode() { return key.hashCode(); } }