package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.Network; import org.ovirt.engine.api.model.Networks; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public abstract class AbstractBackendNetworksResource extends AbstractBackendCollectionResource<Network, org.ovirt.engine.core.common.businessentities.network.Network> { protected VdcQueryType queryType; protected VdcActionType addAction; public AbstractBackendNetworksResource(VdcQueryType queryType, VdcActionType addAction) { super(Network.class, org.ovirt.engine.core.common.businessentities.network.Network.class); this.queryType = queryType; this.addAction = addAction; } protected abstract VdcQueryParametersBase getQueryParameters(); protected abstract VdcActionParametersBase getAddParameters(Network network, org.ovirt.engine.core.common.businessentities.network.Network entity); public Networks list() { return mapCollection(getBackendCollection(queryType, getQueryParameters())); } protected Networks mapCollection(List<org.ovirt.engine.core.common.businessentities.network.Network> entities) { Networks collection = new Networks(); for (org.ovirt.engine.core.common.businessentities.network.Network entity : entities) { collection.getNetworks().add(addLinks(map(entity))); } return collection; } public org.ovirt.engine.core.common.businessentities.network.Network lookupNetwork(Guid id) { return lookupNetwork(id, null); } public org.ovirt.engine.core.common.businessentities.network.Network lookupNetwork(Guid id, String name) { for (org.ovirt.engine.core.common.businessentities.network.Network entity : getBackendCollection(queryType, getQueryParameters())) { if ((id != null && id.equals(entity.getId())) || (name != null && name.equals(entity.getName()))) { return entity; } } return null; } public org.ovirt.engine.core.common.businessentities.network.Network lookupNetwork(Guid id, String name, String dataCenterId) { for (org.ovirt.engine.core.common.businessentities.network.Network entity : getBackendCollection(queryType, getQueryParameters())) { if ((id != null && id.equals(entity.getId())) || (name != null && name.equals(entity.getName())) && (entity.getDataCenterId()!=null) && entity.getDataCenterId().toString().equals(dataCenterId)) { return entity; } } return null; } public EntityIdResolver<Guid> getNetworkIdResolver() { return new NetworkIdResolver(); } protected class NetworkIdResolver extends EntityIdResolver<Guid> { protected String name; NetworkIdResolver() {} NetworkIdResolver(String name) { this.name = name; } @Override public org.ovirt.engine.core.common.businessentities.network.Network lookupEntity(Guid id) throws BackendFailureException { return lookupNetwork(id, name); } } protected class DataCenterNetworkIdResolver extends NetworkIdResolver { private String dataCenterId; DataCenterNetworkIdResolver(String name, String dataCenterId) { super(name); this.dataCenterId = dataCenterId; } @Override public org.ovirt.engine.core.common.businessentities.network.Network lookupEntity(Guid id) throws BackendFailureException { return lookupNetwork(id, name, dataCenterId); } } }