package eu.europeana.cloud.service.uis.rest; import eu.europeana.cloud.common.exceptions.ProviderDoesNotExistException; import eu.europeana.cloud.common.model.DataProvider; import eu.europeana.cloud.service.uis.DataProviderService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; import javax.ws.rs.DELETE; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; import static eu.europeana.cloud.common.web.ParamConstants.P_PROVIDER; @Path("/data-providers/{" + P_PROVIDER + "}/active") @Component @Scope("request") public class DataProviderActivationResource { private static final Logger LOGGER = LoggerFactory.getLogger(DataProviderActivationResource.class); @Autowired private DataProviderService providerService; /** * Activates data provider (sets flag 'active' to true) * * <br/><br/> * <div style='border-left: solid 5px #999999; border-radius: 10px; padding: 6px;'> * <strong>Required permissions:</strong> * <ul> * <li>Admin role</li> * </ul> * </div> * * @summary Data-provider activation * @param dataProviderId <strong>REQUIRED</strong> identifier of data-provider which is about to be activated * @return Empty response with http status code indicating whether the operation was successful or not * @author * @throws ProviderDoesNotExistException Supplied Data-provider does not exist * */ @PUT @PreAuthorize("hasRole('ROLE_ADMIN')") public Response activateDataProvider(@PathParam(P_PROVIDER) String dataProviderId) throws ProviderDoesNotExistException { LOGGER.info("Activating data provider: {}", dataProviderId); DataProvider dataProvider = providerService.getProvider(dataProviderId); dataProvider.setActive(true); providerService.updateProvider(dataProvider); return Response.ok().build(); } /** * Deactivates data provider (sets flag 'active' to false) * * <br/><br/> * <div style='border-left: solid 5px #999999; border-radius: 10px; padding: 6px;'> * <strong>Required permissions:</strong> * <ul> * <li>Admin role</li> * </ul> * </div> * * @summary Data-provider deactivation * @param dataProviderId <strong>REQUIRED</strong> identifier of data-provider which is about to be activated * @return Empty response with http status code indicating whether the operation was successful or not * @author * @throws ProviderDoesNotExistException Supplied Data-provider does not exist */ @DELETE @PreAuthorize("hasRole('ROLE_ADMIN')") public Response deactivateDataProvider(@PathParam(P_PROVIDER) String dataProviderId) throws ProviderDoesNotExistException { LOGGER.info("Deactivating data provider: {}", dataProviderId); DataProvider dataProvider = providerService.getProvider(dataProviderId); dataProvider.setActive(false); providerService.updateProvider(dataProvider); return Response.ok().build(); } }