package no.difi.datahotel.util;
import java.io.File;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Filesystem {
private static final String HOME = "datahotel";
public static final String FOLDER_MASTER = "master";
public static final String FOLDER_MASTER_DEFINITION = FOLDER_MASTER + File.separator + "definition";
public static final String FOLDER_SLAVE = "slave";
public static final String FOLDER_CACHE = "cache";
public static final String FOLDER_CACHE_CHUNK = FOLDER_CACHE + File.separator + "chunk";
public static final String FOLDER_CACHE_INDEX = FOLDER_CACHE + File.separator + "index";
public static final String FILE_DATASET = "dataset.csv";
public static final String FILE_DATASET_ORIGINAL = "original.csv";
public static final String FILE_FIELDS = "fields.xml";
public static final String FILE_DEFINITIONS = "definitions.xml";
public static final String FILE_METADATA = "meta.xml";
public static final String FILE_VERSION = "version.xml";
private static String home;
public static String getHome() {
if (home != null)
return home;
String dir;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
dir = envCtx.lookup("datahotel.home") + File.separator;
} catch (NamingException e) {
if (System.getProperty("datahotel.home") != null)
dir = System.getProperty("datahotel.home") + File.separator;
else
dir = System.getProperty("user.home") + File.separator + HOME + File.separator;
}
dir = dir.replace(File.separator + File.separator, File.separator);
new File(dir).mkdirs();
home = dir;
return dir;
}
public static File getFolderPath(String... folder) {
String dir = getHome();
for (String f : folder)
if (!"".equals(f))
dir += f.replace("/", File.separator) + File.separator;
return new File(dir);
}
public static File getFolder(String... folder) {
File dir = getFolderPath(folder);
if (!dir.exists())
dir.mkdirs();
return dir;
}
public static File getFile(String... uri) {
String[] dir = new String[uri.length - 1];
for (int i = 0; i < uri.length - 1; i++)
dir[i] = uri[i];
return new File(getFolder(dir).toString() + File.separator + uri[uri.length - 1]);
}
public static File getFile(File folder, String... uri) {
String path = folder.toString();
for (int i = 0; i < uri.length - 1; i++)
path += uri[i].replace("/", File.separator) + File.separator;
return new File(path + File.separator + uri[uri.length - 1]);
}
public static void delete(String folder, String location) {
delete(getFolder(folder, location));
}
public static void delete(String folder) {
delete(getFolder(folder));
}
public static void delete(File folder) {
for (File f : folder.listFiles()) {
if (f.isDirectory())
delete(f);
else
f.delete();
}
folder.delete();
}
}