package org.kisst.gft.filetransfer.action; import java.util.LinkedHashMap; import org.kisst.gft.action.BaseAction; import org.kisst.gft.filetransfer.FileLocation; import org.kisst.gft.filetransfer.FileServerConnection; import org.kisst.gft.filetransfer.FileServerConnection.FileAttributes; import org.kisst.gft.task.Task; import org.kisst.props4j.Props; public class DeleteSourceDirectoryIfEmpty extends BaseAction { public DeleteSourceDirectoryIfEmpty(Props props) { super(props); } @Override public boolean safeToRetry() { return true; } @Override public void execute(Task task) { FileLocation file = ((SourceFile) task).getSourceFile(); FileLocation dir = file.getParentDirectory(); FileServerConnection fsconn = dir.getFileServer().openConnection(); LinkedHashMap<String, FileAttributes> entries = fsconn.getDirectoryEntries(dir.getPath()); int count=0; for (String entry : entries.keySet()) { if (entry.equals(".") || entry.equals("..")) continue; count ++; } if (count==0) fsconn.deleteFile(dir.getPath()); // TODO: throw an error if directory is not empty???? } }