/* * Copyright (c) 2001 - 2012 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.geoserver.bkprst.rest; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; import org.geoserver.bkprst.BrManager; import org.geoserver.bkprst.RestoreTask; import org.geotools.util.logging.Logging; import org.restlet.data.MediaType; import org.restlet.data.Request; import org.restlet.data.Response; import org.restlet.data.Status; /** * * Resource class for restore tasks manager. * * @author Luca Morandini lmorandini@ieee.org * */ public class BrManagerRestoreResource extends BrManagerResource { private final static Logger LOGGER = Logging.getLogger(BrManagerRestoreResource.class); public BrManagerRestoreResource(BrManager br) { super(br); } @Override public boolean allowPost() { return true; } @Override public void handlePost() { Request request = getRequest(); Response response = getResponse(); try { UUID taskId; this.extractParameters(request.getEntityAsSax()); taskId = this.br.addRestoreTask(path); response.setStatus(Status.SUCCESS_CREATED); response.setEntity("<id>" + taskId + "</id>", MediaType.APPLICATION_XML); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); response.setStatus(Status.SERVER_ERROR_INTERNAL); } } @Override public boolean allowDelete() { return true; } @Override public void handleDelete() { Request request = getRequest(); Response response = getResponse(); String taskId; try { taskId = (String) request.getAttributes().get(BrManager.REST_ID); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST); return; } try { RestoreTask task = (RestoreTask) this.br.getTask(UUID.fromString(taskId)); if (task == null) { response.setStatus(Status.CLIENT_ERROR_NOT_FOUND); return; } task.stop(); response.setStatus(Status.SUCCESS_OK); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); response.setStatus(Status.SERVER_ERROR_INTERNAL); } } }