package org.ovirt.engine.ui.uicommonweb.models.providers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet; import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.validation.AsciiNameValidation; import org.ovirt.engine.ui.uicommonweb.validation.CidrValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.Ipv4AddressValidation; import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; import org.ovirt.engine.ui.uicompat.external.StringUtils; public class ExternalSubnetModel extends Model { private EntityModel<String> name; private EntityModel<String> cidr; private ListModel<IpVersion> ipVersion; private EntityModel<String> gateway; private ListModel<EntityModel<String>> dnsServers; private ExternalSubnet subnet; private ProviderNetwork externalNetwork; public ExternalSubnetModel() { setName(new EntityModel<String>()); setCidr(new EntityModel<String>()); setIpVersion(new ListModel<IpVersion>()); getIpVersion().setItems(Arrays.asList(IpVersion.values())); setGateway(new EntityModel<String>()); setDnsServers(new ListModel<EntityModel<String>>()); } public EntityModel<String> getName() { return name; } private void setName(EntityModel<String> name) { this.name = name; } public EntityModel<String> getCidr() { return cidr; } private void setCidr(EntityModel<String> cidr) { this.cidr = cidr; } public ListModel<IpVersion> getIpVersion() { return ipVersion; } private void setIpVersion(ListModel<IpVersion> ipVersion) { this.ipVersion = ipVersion; } public EntityModel<String> getGateway() { return gateway; } private void setGateway(EntityModel<String> gateway) { this.gateway = gateway; } public ListModel<EntityModel<String>> getDnsServers() { return dnsServers; } private void setDnsServers(ListModel<EntityModel<String>> dnsServers) { this.dnsServers = dnsServers; } public ExternalSubnet getSubnet() { return subnet; } public ProviderNetwork getExternalNetwork() { return externalNetwork; } public void setExternalNetwork(ProviderNetwork externalNetwork) { this.externalNetwork = externalNetwork; } public void toggleChangeability(boolean value) { getName().setIsChangeable(value); getCidr().setIsChangeable(value); getIpVersion().setIsChangeable(value); getGateway().setIsChangeable(value); getDnsServers().setIsChangeable(value); } public void flush() { subnet = new ExternalSubnet(); subnet.setName(getName().getEntity()); subnet.setExternalNetwork(getExternalNetwork()); subnet.setCidr(getCidr().getEntity()); subnet.setIpVersion(getIpVersion().getSelectedItem()); subnet.setGateway(getGateway().getEntity()); List<String> dnsServers = new ArrayList<>(); for (EntityModel<String> dnsServer : getDnsServers().getItems()) { if (StringUtils.isNotEmpty(dnsServer.getEntity())) { dnsServers.add(dnsServer.getEntity()); } } subnet.setDnsServers(dnsServers); } public boolean validate() { getName().validateEntity(new IValidation[] { new NotEmptyValidation(), new AsciiNameValidation() }); boolean ipv4 = getIpVersion().getSelectedItem() == IpVersion.IPV4; getCidr().validateEntity(new IValidation[] { ipv4 ? new CidrValidation() : new NotEmptyValidation() }); getIpVersion().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); getGateway().setIsValid(true); if (StringUtils.isNotEmpty(getGateway().getEntity()) && ipv4) { getGateway().validateEntity(new IValidation[] { new Ipv4AddressValidation() }); } boolean dnsServersValid = true; for (EntityModel<String> dnsServer : getDnsServers().getItems()) { dnsServer.setIsValid(true); if (StringUtils.isNotEmpty(dnsServer.getEntity()) && ipv4) { dnsServer.validateEntity(new IValidation[] { new Ipv4AddressValidation() }); } dnsServersValid &= dnsServer.getIsValid(); } return getName().getIsValid() && getCidr().getIsValid() && getIpVersion().getIsValid() && getGateway().getIsValid() && dnsServersValid; } }