package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; import java.util.ArrayList; import java.util.Collection; import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation; import org.ovirt.engine.ui.uicompat.external.StringUtils; public class HostNetworkQosParametersModel extends QosParametersModel<HostNetworkQos> { private EntityModel<String> outAverageLinkshare = new EntityModel<>(); private EntityModel<String> outAverageUpperlimit = new EntityModel<>(); private EntityModel<String> outAverageRealtime = new EntityModel<>(); public EntityModel<String> getOutAverageLinkshare() { return outAverageLinkshare; } public EntityModel<String> getOutAverageUpperlimit() { return outAverageUpperlimit; } public EntityModel<String> getOutAverageRealtime() { return outAverageRealtime; } @Override public void init(HostNetworkQos qos) { if (qos == null) { qos = new HostNetworkQos(); } getOutAverageLinkshare().setEntity(StringUtils.render(qos.getOutAverageLinkshare())); getOutAverageUpperlimit().setEntity(StringUtils.render(qos.getOutAverageUpperlimit())); getOutAverageRealtime().setEntity(StringUtils.render(qos.getOutAverageRealtime())); } @Override public void flush(HostNetworkQos qos) { qos.setOutAverageLinkshare(StringUtils.parseInteger(getOutAverageLinkshare().getEntity())); qos.setOutAverageUpperlimit(StringUtils.parseInteger(getOutAverageUpperlimit().getEntity())); qos.setOutAverageRealtime(StringUtils.parseInteger(getOutAverageRealtime().getEntity())); } protected Collection<IValidation> getOutLinkshareValidations() { Collection<IValidation> validations = new ArrayList<>(); validations.add(new IntegerValidation(1, (Integer) AsyncDataProvider.getInstance() .getConfigValuePreConverted(ConfigurationValues.MaxHostNetworkQosShares))); return validations; } @Override public boolean validate() { if (!getIsChangable() || !getIsAvailable()) { return true; } Collection<IValidation> outLinkshareValidations = getOutLinkshareValidations(); getOutAverageLinkshare().validateEntity(outLinkshareValidations.toArray(new IValidation[outLinkshareValidations.size()])); IValidation[] rateRangeValidation = new IValidation[] { new IntegerValidation(1, (Integer) AsyncDataProvider.getInstance() .getConfigValuePreConverted(ConfigurationValues.MaxAverageNetworkQoSValue)) }; getOutAverageUpperlimit().validateEntity(rateRangeValidation); getOutAverageRealtime().validateEntity(rateRangeValidation); setIsValid(getOutAverageLinkshare().getIsValid() && getOutAverageUpperlimit().getIsValid() && getOutAverageRealtime().getIsValid()); return getIsValid(); } }