package org.ovirt.engine.ui.webadmin.widget.table.column;
import org.ovirt.engine.core.common.businessentities.QuotaCluster;
import org.ovirt.engine.core.common.businessentities.QuotaStorage;
import org.ovirt.engine.ui.common.widget.table.column.AbstractImageResourceColumn;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
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;
public class QuotaUtilizationStatusColumn<IVdcQueryable> extends AbstractImageResourceColumn<IVdcQueryable> {
private static final ApplicationResources resources = AssetProvider.getResources();
private static final ApplicationConstants constants = AssetProvider.getConstants();
@Override
public ImageResource getValue(IVdcQueryable quota) {
boolean quotaExceeded = false;
if (quota instanceof QuotaStorage) {
quotaExceeded = getQuotaExceeded((QuotaStorage)quota);
} else if (quota instanceof QuotaCluster) {
quotaExceeded = getQuotaExceeded((QuotaCluster)quota);
} else {
return null;
}
return quotaExceeded ? resources.alertImage() : null;
}
@Override
public SafeHtml getTooltip(IVdcQueryable quota) {
boolean quotaExceeded = false;
if (quota instanceof QuotaStorage) {
quotaExceeded = getQuotaExceeded((QuotaStorage)quota);
} else if (quota instanceof QuotaCluster) {
quotaExceeded = getQuotaExceeded((QuotaCluster)quota);
}
if (quotaExceeded) {
return SafeHtmlUtils.fromSafeConstant(constants.quotaExceeded());
}
return null;
}
private boolean getQuotaExceeded(QuotaStorage quota) {
if (quota.getStorageSizeGB() == null) {
return false;
}
return quota.getStorageSizeGB().longValue() != QuotaStorage.UNLIMITED.longValue()
&& quota.getStorageSizeGB() < quota.getStorageSizeGBUsage();
}
private boolean getQuotaExceeded(QuotaCluster quota) {
return (quota.getMemSizeMB() != null && !quota.getMemSizeMB().equals(QuotaCluster.UNLIMITED_MEM)
&& quota.getMemSizeMB() < quota.getMemSizeMBUsage())
|| (quota.getVirtualCpu() != null && !quota.getVirtualCpu().equals(QuotaCluster.UNLIMITED_VCPU)
&& quota.getVirtualCpu() < quota.getVirtualCpuUsage());
}
}