package hudson.plugins.emailext.plugins.content;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Result;
import hudson.plugins.emailext.EmailType;
import hudson.plugins.emailext.ExtendedEmailPublisher;
import hudson.plugins.emailext.plugins.EmailContent;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class BuildStatusContent implements EmailContent {
private static final String TOKEN = "BUILD_STATUS";
public String getToken() {
return TOKEN;
}
public List<String> getArguments() {
return Collections.emptyList();
}
public String getHelpText() {
return "Displays the status of the current build. (failing, success, etc...)";
}
public <P extends AbstractProject<P, B>, B extends AbstractBuild<P, B>>
String getContent(AbstractBuild<P, B> build, ExtendedEmailPublisher publisher,
EmailType emailType, Map<String, ?> args) {
// Build can be "building" when the pre-build trigger is used.
// Reporting "success", "still failing", etc doesn't make sense in this case.
if (build.isBuilding()) {
return "Building";
}
Result buildResult = build.getResult();
if (buildResult == Result.FAILURE) {
B prevBuild = build.getPreviousBuild();
if (prevBuild != null && (prevBuild.getResult() == Result.FAILURE)) {
return "Still Failing";
} else {
return "Failure";
}
} else if (buildResult == Result.UNSTABLE) {
B prevBuild = build.getPreviousBuild();
if (prevBuild != null && (prevBuild.getResult() == Result.UNSTABLE)) {
return "Still Unstable";
} else {
return "Unstable";
}
} else if (buildResult == Result.SUCCESS) {
B prevBuild = build.getPreviousBuild();
if (prevBuild != null && (prevBuild.getResult() == Result.UNSTABLE || prevBuild.getResult() == Result.FAILURE)) {
return "Fixed";
} else {
return "Successful";
}
}
return "Unknown";
}
public boolean hasNestedContent() {
return false;
}
}