package org.ovirt.engine.core.bll.network.host; import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.BusinessEntityMap; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.network.NetworkDao; @Singleton public class NetworkIdNetworkNameCompleter { private final NetworkDao networkDao; @Inject public NetworkIdNetworkNameCompleter(NetworkDao networkDao) { this.networkDao = networkDao; } public void completeNetworkAttachment(NetworkAttachment networkAttachment) { completeNetworkAttachment(networkAttachment, null); } public void completeNetworkAttachments(List<NetworkAttachment> networkAttachments, BusinessEntityMap<Network> clusterNetworks) { for (NetworkAttachment networkAttachment : networkAttachments) { completeNetworkAttachment(networkAttachment, clusterNetworks); } } private void completeNetworkAttachment(NetworkAttachment networkAttachment, BusinessEntityMap<Network> clusterNetworks) { Guid networkId = networkAttachment.getNetworkId(); String networkName = networkAttachment.getNetworkName(); boolean networkNameSpecified = networkName != null; boolean networkIdSpecified = networkId != null; if (!networkIdSpecified && !networkNameSpecified || networkIdSpecified && networkNameSpecified) { return; } if (networkNameSpecified) { Network network = getNetworkByName(networkName, clusterNetworks); boolean networkByNameExists = network != null; if (networkByNameExists) { networkAttachment.setNetworkId(network.getId()); } } if (networkIdSpecified) { Network network = getNetworkById(networkId, clusterNetworks); boolean networkByIdExists = network != null; if (networkByIdExists) { networkAttachment.setNetworkName(network.getName()); } } } private Network getNetworkById(Guid networkId, BusinessEntityMap<Network> clusterNetworks) { if (clusterNetworks != null) { return clusterNetworks.get(networkId); } else { return networkDao.get(networkId); } } private Network getNetworkByName(String networkName, BusinessEntityMap<Network> clusterNetworks) { if (clusterNetworks != null) { return clusterNetworks.get(networkName); } else { return networkDao.getByName(networkName); } } }