/** Copyright 2008, 2009 Mark Hooijkaas This file is part of the RelayConnector framework. The RelayConnector framework is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The RelayConnector framework 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 General Public License for more details. You should have received a copy of the GNU General Public License along with the RelayConnector framework. If not, see <http://www.gnu.org/licenses/>. */ package org.kisst.gft.action; import java.io.File; import org.kisst.gft.task.BasicTask; import org.kisst.gft.task.Task; import org.kisst.props4j.Props; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DeleteLocalFileAction extends BaseAction { private final static Logger logger=LoggerFactory.getLogger(DeleteLocalFileAction.class); public DeleteLocalFileAction(Props props) { super(props); } @Override public void execute(Task task) { BasicTask ft= (BasicTask) task; // Deletes all files and subdirectories under dir. // Returns true if all deletions were successful. // If a deletion fails, the method stops attempting to delete and returns false. boolean succes = deleteDir(ft.getTempFile().getParentFile()); if (succes) logger.info("removal of directory {}, including files succeeded", ft.getTempFile().getPath()); else logger.error("removal of directory {}, including files failed", ft.getTempFile().getPath()); } public static boolean deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); for (int i=0; i<children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } // The directory is now empty so delete it return dir.delete(); } }