package org.fastcatsearch.util; import java.io.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class FilePaths { private static final Logger logger = LoggerFactory.getLogger(FilePaths.class); private File root; private String id; private static String dataRoot = "data"; private static String indexPrefix = "index"; public FilePaths(File root){ this.root = root; this.id = root.getName(); } public FilePaths(File root, String id) { this.root = new File(root, id); this.id = id; } public File file() { return root; } public String getId(){ return id; } public FilePaths dataPaths(){ return new FilePaths(file(dataRoot)); } public File file(String... dirs) { File file = root; for (int i = 0; i < dirs.length; i++) { file = new File(file, dirs[i]); } return file; } private String indexDirPath(Object dataSequence) { return indexPrefix + dataSequence.toString(); } public File dataFile() { return file(dataRoot); } public FilePaths indexFilePaths(Object dataSequence) { return new FilePaths(indexDirFile(dataSequence)); } public File indexDirFile(Object dataSequence) { return file(indexDirPath(dataSequence)); } public File segmentFile(Object dataSequence, Object segmentId) { return file(indexDirPath(dataSequence), segmentId.toString()); } public File revisionFile(Object dataSequence, Object segmentId, Object revisionNumber) { return file(indexDirPath(dataSequence), segmentId.toString(), revisionNumber.toString()); } }