@Override public ApplicationFile createDirectory() { if (file.isDirectory()) return this; if (file.exists()) { throw new IllegalArgumentException("Unable to create directory, file exists: "+file); } if (!file.mkdirs()) { throw new IllegalArgumentException("Unable to create directory: "+file); } try { writeMetaFile("", ApplicationFile.ContentStatusNew); } catch (IOException e) { throw new RuntimeException(e); } return this; }
@Override public ApplicationFile appendFile(String value) { if (file.getParentFile() != null) { file.getParentFile().mkdirs(); } try { String status = file.exists() ? ApplicationFile.ContentStatusChanged : ApplicationFile.ContentStatusNew; IOUtils.writeFile(file, value, true); writeMetaFile(value, status); } catch (IOException e) { throw new RuntimeException(e); } return this; }
@Override public ApplicationFile writeFile(Reader input) { if (file.getParentFile() != null) { file.getParentFile().mkdirs(); } try { String status = file.exists() ? ApplicationFile.ContentStatusChanged : ApplicationFile.ContentStatusNew; String data = com.yahoo.io.IOUtils.readAll(input); IOUtils.writeFile(file, data, false); writeMetaFile(data, status); } catch (IOException e) { throw new RuntimeException(e); } return this; }
@Override public ApplicationFile delete() { log.log(LogLevel.DEBUG, "Delete " + file); if (file.isDirectory() && !listFiles().isEmpty()) { throw new RuntimeException("files. Can't delete, directory not empty: " + this + "(" + listFiles() + ")." + listFiles().size()); } if (file.isDirectory() && file.listFiles() != null && file.listFiles().length > 0) { for (File f : file.listFiles()) { deleteFile(f); } } if (!file.delete()) { throw new IllegalStateException("Unable to delete: "+this); } try { writeMetaFile("", ApplicationFile.ContentStatusDeleted); } catch (IOException e) { throw new RuntimeException(e); } return this; }