/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.systemservices.impl.licensing;
import static com.emc.storageos.coordinator.client.service.LicenseInfo.TARGET_PROPERTY_ID;
import java.util.ArrayList;
import java.util.List;
import com.emc.storageos.coordinator.client.service.LicenseInfo;
import com.emc.storageos.coordinator.client.model.CoordinatorClassInfo;
import com.emc.storageos.coordinator.client.model.CoordinatorSerializable;
import com.emc.storageos.coordinator.exceptions.DecodingException;
/**
* Represent the list of license features stored in coordinator.
* Starting vipr 1.1, all license features' info are stored in coordinator together in one data node.
* This will facilitate upgrade and make sure all existing license features to be removed when
* importing a new license file.
*/
public class LicenseInfoListExt implements CoordinatorSerializable {
private List<LicenseInfoExt> _licenseList = new ArrayList<LicenseInfoExt>();
// default constructor
public LicenseInfoListExt() {
}
public LicenseInfoListExt(List<LicenseInfoExt> licenseList) {
setLicenseList(licenseList);
}
public List<LicenseInfoExt> getLicenseList() {
return _licenseList;
}
public void setLicenseList(List<LicenseInfoExt> _licenseList) {
this._licenseList = _licenseList;
}
// helper function for updating license info for a specific license type
public void updateLicense(LicenseInfoExt licenseInfo) {
for (int i = 0; i < _licenseList.size(); i++) {
if (_licenseList.get(i).getModelId().compareTo(licenseInfo.getModelId()) == 0) {
_licenseList.set(i, licenseInfo);
}
}
}
@Override
public String encodeAsString() {
final StringBuilder sb = new StringBuilder();
for (LicenseInfoExt licenseInfo : getLicenseList()) {
sb.append(licenseInfo.encodeAsString());
sb.append(LicenseInfo.LICENSE_SEPARATOR);
}
return sb.toString();
}
@Override
public LicenseInfoListExt decodeFromString(String infoStr) throws DecodingException
{
if (infoStr == null) {
return null;
}
String[] licenseStrs = infoStr.split(LicenseInfo.LICENSE_SEPARATOR);
for (String licenseStr : licenseStrs) {
getLicenseList().add((new LicenseInfoExt().decodeFromString(licenseStr)));
}
return this;
}
@Override
public CoordinatorClassInfo getCoordinatorClassInfo() {
return new CoordinatorClassInfo(TARGET_PROPERTY_ID,
LicenseInfo.LICENSE_INFO_TARGET_PROPERTY, LicenseInfo.LICENSE_INFO);
}
}