package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.Network; import org.ovirt.engine.api.resource.DataCenterNetworkResource; import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters; import org.ovirt.engine.core.common.action.RemoveNetworkParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; public class BackendDataCenterNetworkResource extends AbstractBackendNetworkResource implements DataCenterNetworkResource { private BackendDataCenterNetworksResource parent; public BackendDataCenterNetworkResource(String id, BackendDataCenterNetworksResource parent) { super(id, parent, VdcActionType.RemoveNetwork); this.parent = parent; } @Override public Network get() { org.ovirt.engine.core.common.businessentities.network.Network entity = getNetwork(); if (entity == null) { return notFound(); } return addLinks(map(entity)); } private org.ovirt.engine.core.common.businessentities.network.Network getNetwork() { List<org.ovirt.engine.core.common.businessentities.network.Network> networks = parent.getNetworks(); for (org.ovirt.engine.core.common.businessentities.network.Network entity : networks) { if (entity.getId().toString().equals(id)) { return entity; } } return null; } @Override public BackendDataCenterNetworksResource getParent() { return parent; } @Override public Network update(Network incoming) { return performUpdate( incoming, getParent().getNetworkIdResolver(), VdcActionType.UpdateNetwork, new UpdateParametersProvider() ); } private class UpdateParametersProvider implements ParametersProvider<Network, org.ovirt.engine.core.common.businessentities.network.Network> { @Override public VdcActionParametersBase getParameters( Network incoming, org.ovirt.engine.core.common.businessentities.network.Network entity) { org.ovirt.engine.core.common.businessentities.network.Network updated = getMapper( Network.class, org.ovirt.engine.core.common.businessentities.network.Network.class ).map(incoming, entity); return new AddNetworkStoragePoolParameters(entity.getDataCenterId(), updated); } } @Override protected VdcActionParametersBase getRemoveParameters( org.ovirt.engine.core.common.businessentities.network.Network entity) { return new RemoveNetworkParameters(entity.getId()); } }