/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import java.util.Map;
import com.emc.storageos.db.client.model.FilePolicy.FilePolicyApplyLevel;
import com.emc.storageos.model.NamedRelatedResourceRep;
import com.emc.storageos.model.file.policy.FilePolicyRestRep;
import com.google.common.collect.Maps;
import util.datatable.DataTable;
public class ScheculePoliciesDataTable extends DataTable {
public ScheculePoliciesDataTable() {
addColumn("policyName").setRenderFunction("renderLink");
addColumn("policyType");
addColumn("appliedAt");
addColumn("vPools");
addColumn("projects");
addColumn("priority");
addColumn("description");
sortAll();
setDefaultSortField("policyName");
}
// Suppressing sonar violation for need of accessor methods. Accessor methods are not needed and we use public variables
@SuppressWarnings("ClassVariableVisibilityCheck")
public static class FileProtectionPolicy {
public String id;
public String policyName;
public String policyType;
public String appliedAt;
public String vPools;
public String projects;
public String priority;
public String description;
public boolean isAssigned;
public FileProtectionPolicy(FilePolicyRestRep policy) {
id = policy.getId().toString();
policyName = policy.getName();
policyType = getTranslatedPolicyType(policy.getType());
appliedAt = policy.getAppliedAt();
priority = policy.getPriority();
description = policy.getDescription();
setAssignedResFromPolicy(policy);
}
private void setAssignedResFromPolicy(FilePolicyRestRep policy) {
StringBuffer assignRes = new StringBuffer();
boolean first = true;
isAssigned = false;
if (policy.getAssignedResources() != null) {
isAssigned = true;
for (NamedRelatedResourceRep res : policy.getAssignedResources()) {
if (first) {
assignRes.append(res.getName());
first = false;
} else {
assignRes.append(",").append(res.getName());
}
}
if (FilePolicyApplyLevel.project.name().equals(policy.getAppliedAt())) {
if (policy.getVpool() != null) {
vPools = policy.getVpool().getName();
}
projects = assignRes.toString();
} else if (FilePolicyApplyLevel.vpool.name().equals(policy.getAppliedAt())) {
vPools = assignRes.toString();
} else if (FilePolicyApplyLevel.file_system.name().equals(policy.getAppliedAt())) {
if (policy.getVpool() != null) {
vPools = policy.getVpool().getName();
}
}
}
}
private String getTranslatedPolicyType(String key) {
Map<String, String> translatedProlicyType = Maps.newLinkedHashMap();
if (key != null && key.contains("snapshot")) {
translatedProlicyType.put("file_snapshot", "Snapshot");
} else {
translatedProlicyType.put("file_replication", "Replication");
}
return translatedProlicyType.get(key);
}
}
}