/* * Copyright (C) 2014 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ package com.gallatinsystems.survey.dao; import java.util.logging.Level; import java.util.logging.Logger; import org.waterforpeople.mapping.app.web.dto.DataProcessorRequest; import com.gallatinsystems.framework.dao.BaseDAO; import com.gallatinsystems.survey.domain.CascadeResource; import com.google.appengine.api.backends.BackendServiceFactory; import com.google.appengine.api.taskqueue.Queue; import com.google.appengine.api.taskqueue.QueueFactory; import com.google.appengine.api.taskqueue.TaskOptions; /** * Dao for manipulating CascadeResources */ public class CascadeResourceDao extends BaseDAO<CascadeResource> { private static final Logger log = Logger.getLogger(CascadeResourceDao.class.getName()); public CascadeResourceDao() { super(CascadeResource.class); } /** * deletes a cascade resource, and the nodes therein asynchronously in a task * * @param item */ public void delete(CascadeResource item) { if (item == null) { return; } try { super.delete(item); final Long keyId = item.getKey().getId(); final TaskOptions options = TaskOptions.Builder .withUrl("/app_worker/dataprocessor") .header("Host", BackendServiceFactory.getBackendService() .getBackendAddress("dataprocessor")) .param(DataProcessorRequest.ACTION_PARAM, DataProcessorRequest.DELETE_CASCADE_NODES) .param(DataProcessorRequest.CASCADE_RESOURCE_ID, keyId.toString()); final Queue queue = QueueFactory.getQueue("background-processing"); queue.add(options); } catch (Exception e) { log.log(Level.SEVERE, "Error deleting Cascade Resource: " + e.getMessage(), e); } } }