package org.ovirt.engine.ui.uicommonweb.models.profiles;
import java.util.List;
import org.ovirt.engine.core.common.action.DiskProfileParameters;
import org.ovirt.engine.core.common.action.ProfileParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
import org.ovirt.engine.core.common.businessentities.qos.QosType;
import org.ovirt.engine.core.common.businessentities.qos.StorageQos;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.uicommonweb.models.IModel;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
public abstract class DiskProfileBaseModel extends ProfileBaseModel<DiskProfile, StorageQos, StorageDomain> {
private static final StorageQos EMPTY_QOS;
static {
EMPTY_QOS = new StorageQos();
EMPTY_QOS.setName(ConstantsManager.getInstance().getConstants().unlimitedQoSTitle());
EMPTY_QOS.setId(Guid.Empty);
}
public DiskProfileBaseModel(IModel sourceModel,
Guid dcId,
Guid defaultQosId,
VdcActionType vdcActionType) {
super(sourceModel, dcId, defaultQosId, vdcActionType);
}
@Override
public void flush() {
if (getProfile() == null) {
setProfile(new DiskProfile());
}
DiskProfile diskProfile = getProfile();
diskProfile.setName(getName().getEntity());
diskProfile.setDescription(getDescription().getEntity());
StorageDomain storageDomain = getParentListModel().getSelectedItem();
diskProfile.setStorageDomainId(storageDomain != null ? storageDomain.getId() : null);
StorageQos storageQos = getQos().getSelectedItem();
diskProfile.setQosId(storageQos != null
&& storageQos.getId() != null
&& !storageQos.getId().equals(Guid.Empty)
? storageQos.getId() : null);
}
@Override
protected void postInitQosList(List<StorageQos> qosList) {
qosList.add(0, EMPTY_QOS);
getQos().setItems(qosList);
if (getDefaultQosId() != null) {
for (StorageQos storageQos : qosList) {
if (getDefaultQosId().equals(storageQos.getId())) {
getQos().setSelectedItem(storageQos);
break;
}
}
}
}
@Override
protected QosType getQosType() {
return QosType.STORAGE;
}
@Override
protected ProfileParametersBase<DiskProfile> getParameters() {
return new DiskProfileParameters(getProfile());
}
}