package io.qameta.allure.bamboo; import com.atlassian.bamboo.plan.PlanKeys; import com.atlassian.bamboo.resultsummary.ResultsSummary; import com.atlassian.bamboo.resultsummary.ResultsSummaryManager; import com.atlassian.plugin.PluginParseException; import com.atlassian.plugin.web.Condition; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Map; public class AllureViewReportCondition implements Condition { private static final Logger LOGGER = LoggerFactory.getLogger(AllureViewReportCondition.class); private final ResultsSummaryManager resultsSummaryManager; public AllureViewReportCondition(ResultsSummaryManager resultsSummaryManager) { this.resultsSummaryManager = resultsSummaryManager; } @Override public void init(Map<String, String> context) throws PluginParseException { } @Override public boolean shouldDisplay(Map<String, Object> context) { final String buildKey = StringUtils.defaultString((String) context.get("planKey"), (String) context.get("buildKey")); final String buildNumberString = (String) context.get("buildNumber"); if (buildKey != null && buildNumberString != null) { try { int buildNumber = Integer.parseInt(buildNumberString); final ResultsSummary resultsSummary = this.resultsSummaryManager.getResultsSummary(PlanKeys.getPlanResultKey(buildKey, buildNumber)); if (resultsSummary != null) { final AllureBuildResult buildResult = AllureBuildResult.fromCustomData(resultsSummary.getCustomBuildData()); return (buildResult.hasInfo() && (resultsSummary.isFinished() || resultsSummary.isNotBuilt())); } } catch (Exception e) { LOGGER.error("Failed to evaluate condition", e); } } return false; } }