package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.ListModel; public abstract class ProfileBehavior { private List<Network> clusterNetworks = new ArrayList<>(); private String managementNetworkName; public void initProfiles(final Guid clusterId, final Guid dcId, final AsyncQuery<List<VnicProfileView>> profilesQuery) { AsyncQuery<List<Network>> networksQuery = new AsyncQuery<>(clusterNetworks -> { managementNetworkName = clusterNetworks.stream() .filter(n -> n.getCluster().isManagement()) .map(Network::getName) .findFirst() .orElse(null); profilesQuery.converterCallback = returnValue -> { ProfileBehavior.this.clusterNetworks = clusterNetworks; List<VnicProfileView> vnicProfiles = new ArrayList<>(); vnicProfiles.add(VnicProfileView.EMPTY); if (returnValue == null) { return vnicProfiles; } for (VnicProfileView vnicProfile : (List<VnicProfileView>) returnValue) { Network network = findNetworkById(vnicProfile.getNetworkId()); if (network != null && network.isVmNetwork()) { vnicProfiles.add(vnicProfile); } } Collections.sort(vnicProfiles, Linq.VnicProfileViewComparator); return vnicProfiles; }; AsyncDataProvider.getInstance().getVnicProfilesByDcId(profilesQuery, dcId); }); AsyncDataProvider.getInstance().getClusterNetworkList(networksQuery, clusterId); } public abstract void initSelectedProfile(ListModel profileLists, VmNetworkInterface networkInterface); public Network findNetworkById(Guid networkId) { for (Network network : clusterNetworks) { if (network.getId().equals(networkId)) { return network; } } return null; } protected String getManagementNetworkName() { return managementNetworkName; } }