package org.ovirt.engine.ui.webadmin.widget.table.column;
import org.ovirt.engine.core.common.job.Job;
import org.ovirt.engine.core.common.job.JobExecutionStatus;
import org.ovirt.engine.core.common.job.Step;
import org.ovirt.engine.ui.common.widget.table.column.AbstractImageResourceColumn;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicompat.EnumTranslator;
import org.ovirt.engine.ui.webadmin.ApplicationResources;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
/**
* Image column that corresponds to XAML {@code HistorySeverityTemplate}.
*/
public class TaskStatusColumn extends AbstractImageResourceColumn<EntityModel> {
private static final ApplicationResources resources = AssetProvider.getResources();
@Override
public ImageResource getValue(EntityModel jobOrStep) {
JobExecutionStatus jobExecutionStatus = null;
if (jobOrStep.getEntity() instanceof Job) {
jobExecutionStatus = ((Job) jobOrStep.getEntity()).getStatus();
} else if (jobOrStep.getEntity() instanceof Step) {
jobExecutionStatus = ((Step) jobOrStep.getEntity()).getStatus();
} else {
return null;
}
switch (jobExecutionStatus) {
case STARTED:
return resources.waitImage();
case FINISHED:
return resources.logNormalImage();
case FAILED:
return resources.logErrorImage();
case ABORTED:
return resources.alertImage();
case UNKNOWN:
return resources.questionMarkImage();
default:
return null;
}
}
@Override
public SafeHtml getTooltip(EntityModel jobOrStep) {
JobExecutionStatus jobExecutionStatus = null;
if (jobOrStep.getEntity() instanceof Job) {
jobExecutionStatus = ((Job) jobOrStep.getEntity()).getStatus();
} else if (jobOrStep.getEntity() instanceof Step) {
jobExecutionStatus = ((Step) jobOrStep.getEntity()).getStatus();
} else {
return null;
}
String tooltipContent = EnumTranslator.getInstance().translate(jobExecutionStatus);
return SafeHtmlUtils.fromString(tooltipContent);
}
}