package org.ovirt.engine.ui.webadmin.widget.table.column; import java.util.Comparator; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.utils.PairQueryable; import org.ovirt.engine.ui.common.widget.table.column.AbstractColumn; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.widget.table.cell.HostStatusCell; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlUtils; public class HostStatusColumn<S> extends AbstractColumn<S, VDS> { private static final ApplicationConstants constants = AssetProvider.getConstants(); public HostStatusColumn() { super(new HostStatusCell()); } @Override public VDS getValue(S object) { if (object instanceof VDS){ return (VDS) object; } if (object instanceof PairQueryable){ if (((PairQueryable) object).getSecond() instanceof VDS){ return (VDS) ((PairQueryable) object).getSecond(); } } return null; } public void makeSortable() { makeSortable(Comparator.comparing( o -> getValue(o) == null ? null : getValue(o).getStatus(), Linq.IdentifiableComparator)); } @Override public SafeHtml getTooltip(S object) { VDS vds = getValue(object); if (vds != null) { VDSStatus status = vds.getStatus(); String tooltip = getTooltipText(status); if (tooltip != null) { return SafeHtmlUtils.fromSafeConstant(tooltip); } } return null; } private String getTooltipText(VDSStatus status) { switch (status) { case Up: return constants.up(); case Down: return constants.down(); case Unassigned: return constants.unassigned(); case Maintenance: return constants.maintenance(); case NonResponsive: return constants.nonResponsive(); case Error: return constants.error(); case Installing: return constants.installing(); case InstallFailed: return constants.installFailed(); case Reboot: return constants.reboot(); case PreparingForMaintenance: return constants.preparingForMaintenance(); case NonOperational: return constants.nonOperational(); case PendingApproval: return constants.pendingApproval(); case Initializing: return constants.initializing(); case Connecting: return constants.connecting(); case InstallingOS: return constants.installingOS(); case Kdumping: return constants.kdumping(); default: break; } return null; } }