/* * 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 javax.xml.xpath.XPathConstants; import org.geoserver.bkprst.BackupTask; import org.geoserver.bkprst.BrManager; 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; import org.restlet.resource.SaxRepresentation; /** * * Resource class for backup tasks manager. * * @author Luca Morandini lmorandini@ieee.org * */ public class BrManagerBackupResource extends BrManagerResource { protected int progress; protected boolean includeData; protected boolean includeGwc; protected boolean includeLog; protected String id; private final static Logger LOGGER = Logging.getLogger(BrManagerBackupResource.class); public BrManagerBackupResource(BrManager br) { super(br); } @Override public boolean allowPost() { return true; } @Override public void handlePost() { Request request = getRequest(); Response response = getResponse(); UUID taskId; try { this.extractParameters(request.getEntityAsSax()); } catch (Exception e) { response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST); LOGGER.log(Level.INFO,e.getLocalizedMessage(),e); } try { taskId = this.br .addBackupTask(path, this.includeData, this.includeGwc, this.includeLog); response.setStatus(Status.SUCCESS_CREATED); response.setEntity("<id>" + taskId + "</id>", MediaType.APPLICATION_XML); } catch (Exception e) { LOGGER.log(Level.INFO, 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; taskId = (String) request.getAttributes().get(BrManager.REST_ID); if(taskId==null){ response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST); return; } try { BackupTask task = (BackupTask) 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.INFO, e.getMessage(), e); response.setStatus(Status.SERVER_ERROR_INTERNAL); } } /** * Extract parameters from request data * * @param content * XML data * @throws Exception */ protected void extractParameters(SaxRepresentation content) throws Exception { super.extractParameters(content); this.includeData = Boolean.parseBoolean((String) content.evaluate( BrManager.REST_INCLUDEDATAPATH, XPathConstants.STRING)); this.includeGwc = Boolean.parseBoolean((String) content.evaluate( BrManager.REST_INCLUDEGWCPATH, XPathConstants.STRING)); this.includeLog = Boolean.parseBoolean((String) content.evaluate( BrManager.REST_INCLUDELOGPATH, XPathConstants.STRING)); } }