package org.ovirt.engine.ui.uicommonweb.models.datacenters;
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.models.Model;
import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation;
import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
import org.ovirt.engine.ui.uicompat.Event;
import org.ovirt.engine.ui.uicompat.EventArgs;
public class NetworkQosParametersModel extends Model {
private EntityModel<Integer> average;
private EntityModel<Integer> peak;
private EntityModel<Integer> burst;
private EntityModel<Boolean> enabled;
public EntityModel<Integer> getAverage() {
return average;
}
private void setAverage(EntityModel<Integer> average) {
this.average = average;
}
public EntityModel<Integer> getPeak() {
return peak;
}
private void setPeak(EntityModel<Integer> peak) {
this.peak = peak;
}
public EntityModel<Integer> getBurst() {
return burst;
}
private void setBurst(EntityModel<Integer> burst) {
this.burst = burst;
}
public EntityModel<Boolean> getEnabled() {
return enabled;
}
private void setEnabled(EntityModel<Boolean> enabled) {
this.enabled = enabled;
}
public NetworkQosParametersModel() {
setAverage(new EntityModel<Integer>());
setPeak(new EntityModel<Integer>());
setBurst(new EntityModel<Integer>());
setEnabled(new EntityModel<>(true));
getEnabled().getPropertyChangedEvent().addListener(this);
getPropertyChangedEvent().addListener(this);
}
public boolean validate() {
if (!getEnabled().getEntity()) {
return true;
}
getAverage().validateEntity(new IValidation[] {
new NotEmptyValidation(),
new IntegerValidation(0,
(Integer) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.MaxAverageNetworkQoSValue)) });
getPeak().validateEntity(new IValidation[] {
new NotEmptyValidation(),
new IntegerValidation(0,
(Integer) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.MaxPeakNetworkQoSValue)) });
getBurst().validateEntity(new IValidation[] {
new NotEmptyValidation(),
new IntegerValidation(0,
(Integer) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.MaxBurstNetworkQoSValue)) });
setIsValid(getAverage().getIsValid() && getPeak().getIsValid() && getBurst().getIsValid());
return getIsValid();
}
@Override
public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) {
super.eventRaised(ev, sender, args);
if (getEnabled().equals(sender)) {
updateChangeability();
} else if (this.equals(sender)) {
getEnabled().setIsChangeable(getIsChangable());
}
}
private void updateChangeability() {
boolean enabled = getIsChangable() && getEnabled().getEntity();
getAverage().setIsChangeable(enabled);
getPeak().setIsChangeable(enabled);
getBurst().setIsChangeable(enabled);
}
}