package org.jfrog.bamboo.release.action.condition;
import com.atlassian.bamboo.build.DefaultJob;
import com.atlassian.bamboo.build.Job;
import com.atlassian.bamboo.plan.PlanKeys;
import com.atlassian.bamboo.plan.PlanManager;
import com.atlassian.bamboo.plugins.web.conditions.AbstractPlanPermissionCondition;
import com.atlassian.bamboo.security.acegi.acls.BambooPermission;
import com.atlassian.bamboo.task.TaskDefinition;
import org.jfrog.bamboo.context.AbstractBuildContext;
import java.util.List;
import java.util.Map;
/**
* A condition that checks whether the action of {@link org.jfrog.bamboo.release.action.ReleaseAndPromotionAction},
* which is the "Artifactory Release & Promotion" tab should be displayed.
*
* @author Tomer Cohen
*/
public class ReleaseAndPromotionActionCondition extends AbstractPlanPermissionCondition {
private PlanManager planManager;
@Override
public boolean shouldDisplay(Map<String, Object> context) {
String planKey = (String) context.get("planKey");
Job job = (DefaultJob) planManager.getPlanByKey(PlanKeys.getPlanKey(planKey));
if (job == null) {
return false;
}
List<TaskDefinition> taskDefs = job.getBuildDefinition().getTaskDefinitions();
for (TaskDefinition taskDef : taskDefs) {
AbstractBuildContext buildContext = AbstractBuildContext.createContextFromMap(taskDef.getConfiguration());
if (buildContext != null) {
if (checkPlanPermission(context, BambooPermission.BUILD) &&
buildContext.releaseManagementContext.isReleaseMgmtEnabled()) {
return true;
}
}
}
return false;
}
public void setPlanManager(PlanManager planManager) {
this.planManager = planManager;
}
}