/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import com.emc.vipr.model.sys.licensing.License;
import com.emc.vipr.model.sys.licensing.LicenseFeature;
import com.google.common.collect.Lists;
import util.LicenseUtils;
import util.MessagesUtils;
import util.SetupUtils;
import util.StorageStatsWrapper;
import util.datatable.DataTable;
import java.util.List;
public class LicenseFeatureDataTable extends DataTable {
public static final String STATUS_OVER_CAPACITY = "OVER_CAPACITY";
public static final String STATUS_EXPIRED = "EXPIRED";
public static final String STATUS_OK = "OK";
public static final String STATUS_UNKNOWN = "UNKNOWN";
public static final String STATUS_OPEN_SOURCE = "OPEN_SOURCE";
public LicenseFeatureDataTable() {
addColumn("name");
addColumn("type");
addColumn("status").setRenderFunction("renderLicenseStatus");
addColumn("serial");
addColumn("expiry").setRenderFunction("render.expiryStatus");
}
public static List<FeatureInfo> features(License license, StorageStatsWrapper stats) {
List<FeatureInfo> features = Lists.newArrayList();
for (LicenseFeature lf : license.getLicenseFeatures()) {
features.add(new FeatureInfo(lf, stats));
}
return features;
}
public static class FeatureInfo {
private String id;
private String name;
private String type;
private String expiry;
private String status;
private String serial;
public FeatureInfo(LicenseFeature lf, StorageStatsWrapper stats) {
this.id = lf.getModelId();
this.name = LicenseUtils.getLabel(lf);
this.type = LicenseUtils.getType(lf);
this.serial = lf.getSerial();
if (lf.getDateExpires() == null) {
this.expiry = MessagesUtils.get("license.permenant.notice", lf.getDateIssued());
}
else {
this.expiry = MessagesUtils.get("license.expires.notice", lf.getDateIssued(), lf.getDateExpires());
}
if (lf.isTrialLicense()) {
this.expiry = this.expiry + " " + MessagesUtils.get("license.trial.notice");
}
if (SetupUtils.isOssBuild()) {
this.status = STATUS_OPEN_SOURCE;
}
else if (stats.isOverCapacity(lf)) {
this.status = STATUS_OVER_CAPACITY;
}
else if (lf.isExpired()) {
this.status = STATUS_EXPIRED;
}
else if (lf.isLicensed()) {
this.status = STATUS_OK;
}
else {
this.status = STATUS_UNKNOWN;
}
}
}
}