package org.fastcatsearch.job.cluster; import java.io.File; import java.io.IOException; import org.fastcatsearch.common.io.Streamable; import org.fastcatsearch.exception.FastcatSearchException; import org.fastcatsearch.ir.io.DataInput; import org.fastcatsearch.ir.io.DataOutput; import org.fastcatsearch.job.Job; import org.fastcatsearch.util.CoreFileUtils; /** * 노드의 특정디렉토리를 삭제한다. * */ public class NodeDirectoryCleanJob extends Job implements Streamable { private static final long serialVersionUID = 5938061955319252477L; private File directory; public NodeDirectoryCleanJob() { } public NodeDirectoryCleanJob(File directory) { this.directory = directory; } @Override public JobResult doRun() throws FastcatSearchException { try { File directoryFile = environment.filePaths().makePath(directory.getPath()).file(); // FileUtils.deleteDirectory(directoryFile); //연이은 디렉토리도 함께 제거. 1이면 2,3,4,도 만약존재시 제거. logger.info("Delete Directory >> {}", directoryFile.getAbsolutePath()); CoreFileUtils.removeDirectoryCascade(directoryFile); return new JobResult(true); } catch (Exception e) { logger.error("", e); throw new FastcatSearchException("ERR-00000", e); } } @Override public void readFrom(DataInput input) throws IOException { directory = new File(input.readString()); } @Override public void writeTo(DataOutput output) throws IOException { output.writeString(directory.getPath()); } }