Refactored FileUtils.

Removed methods that are no longer needed for Java 6, moved the remaining method into the utils directory.
This commit is contained in:
akwizgran
2015-12-10 15:58:52 +00:00
parent 947da886bf
commit 912ba394c5
19 changed files with 274 additions and 366 deletions

View File

@@ -1,6 +1,15 @@
package org.briarproject.db;
import static java.util.concurrent.TimeUnit.SECONDS;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.db.DatabaseExecutor;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.lifecycle.ShutdownManager;
import org.briarproject.system.SystemClock;
import java.sql.Connection;
import java.util.concurrent.BlockingQueue;
@@ -12,17 +21,7 @@ import java.util.concurrent.ThreadPoolExecutor;
import javax.inject.Singleton;
import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.db.DatabaseExecutor;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.lifecycle.ShutdownManager;
import org.briarproject.api.system.FileUtils;
import org.briarproject.system.SystemClock;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import static java.util.concurrent.TimeUnit.SECONDS;
public class DatabaseModule extends AbstractModule {
@@ -45,9 +44,8 @@ public class DatabaseModule extends AbstractModule {
}
@Provides
Database<Connection> getDatabase(DatabaseConfig config,
FileUtils fileUtils) {
return new H2Database(config, fileUtils, new SystemClock());
Database<Connection> getDatabase(DatabaseConfig config) {
return new H2Database(config, new SystemClock());
}
@Provides @Singleton

View File

@@ -1,5 +1,10 @@
package org.briarproject.db;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.db.DbException;
import org.briarproject.api.system.Clock;
import org.briarproject.util.StringUtils;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
@@ -10,12 +15,6 @@ import java.util.Properties;
import javax.inject.Inject;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.db.DbException;
import org.briarproject.api.system.Clock;
import org.briarproject.api.system.FileUtils;
import org.briarproject.util.StringUtils;
/** Contains all the H2-specific code for the database. */
class H2Database extends JdbcDatabase {
@@ -25,14 +24,12 @@ class H2Database extends JdbcDatabase {
private static final String SECRET_TYPE = "BINARY(32)";
private final DatabaseConfig config;
private final FileUtils fileUtils;
private final String url;
@Inject
H2Database(DatabaseConfig config, FileUtils fileUtils, Clock clock) {
H2Database(DatabaseConfig config, Clock clock) {
super(HASH_TYPE, BINARY_TYPE, COUNTER_TYPE, SECRET_TYPE, clock);
this.config = config;
this.fileUtils = fileUtils;
String path = new File(config.getDatabaseDirectory(), "db").getAbsolutePath();
// FIXME: Remove WRITE_DELAY=0 after implementing BTPv2?
url = "jdbc:h2:split:" + path + ";CIPHER=AES;MULTI_THREADED=1"
@@ -58,15 +55,10 @@ class H2Database extends JdbcDatabase {
public long getFreeSpace() throws DbException {
File dir = config.getDatabaseDirectory();
long maxSize = config.getMaxSize();
try {
long free = fileUtils.getFreeSpace(dir);
long used = getDiskSpace(dir);
long quota = maxSize - used;
long min = Math.min(free, quota);
return min;
} catch (IOException e) {
throw new DbException(e);
}
long free = dir.getFreeSpace();
long used = getDiskSpace(dir);
long quota = maxSize - used;
return Math.min(free, quota);
}
private long getDiskSpace(File f) {

View File

@@ -1,7 +1,10 @@
package org.briarproject.plugins.file;
import static java.util.logging.Level.WARNING;
import static org.briarproject.api.transport.TransportConstants.MIN_STREAM_LENGTH;
import org.briarproject.api.ContactId;
import org.briarproject.api.plugins.TransportConnectionReader;
import org.briarproject.api.plugins.TransportConnectionWriter;
import org.briarproject.api.plugins.simplex.SimplexPlugin;
import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
import java.io.File;
import java.io.FileInputStream;
@@ -13,12 +16,8 @@ import java.util.Locale;
import java.util.concurrent.Executor;
import java.util.logging.Logger;
import org.briarproject.api.ContactId;
import org.briarproject.api.plugins.TransportConnectionReader;
import org.briarproject.api.plugins.TransportConnectionWriter;
import org.briarproject.api.plugins.simplex.SimplexPlugin;
import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
import org.briarproject.api.system.FileUtils;
import static java.util.logging.Level.WARNING;
import static org.briarproject.api.transport.TransportConstants.MIN_STREAM_LENGTH;
public abstract class FilePlugin implements SimplexPlugin {
@@ -26,7 +25,6 @@ public abstract class FilePlugin implements SimplexPlugin {
Logger.getLogger(FilePlugin.class.getName());
protected final Executor ioExecutor;
protected final FileUtils fileUtils;
protected final SimplexPluginCallback callback;
protected final int maxLatency;
@@ -37,10 +35,9 @@ public abstract class FilePlugin implements SimplexPlugin {
protected abstract void writerFinished(File f);
protected abstract void readerFinished(File f);
protected FilePlugin(Executor ioExecutor, FileUtils fileUtils,
SimplexPluginCallback callback, int maxLatency) {
protected FilePlugin(Executor ioExecutor, SimplexPluginCallback callback,
int maxLatency) {
this.ioExecutor = ioExecutor;
this.fileUtils = fileUtils;
this.callback = callback;
this.maxLatency = maxLatency;
}
@@ -84,7 +81,7 @@ public abstract class FilePlugin implements SimplexPlugin {
if (dir == null || !dir.exists() || !dir.isDirectory()) return null;
File f = new File(dir, filename);
try {
long capacity = fileUtils.getFreeSpace(dir);
long capacity = dir.getFreeSpace();
if (capacity < MIN_STREAM_LENGTH) return null;
OutputStream out = new FileOutputStream(f);
return new FileTransportWriter(f, out, capacity, this);

View File

@@ -1,25 +0,0 @@
package org.briarproject.system;
import org.briarproject.api.system.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileUtilsImpl implements FileUtils {
public long getTotalSpace(File f) throws IOException {
return f.getTotalSpace(); // Requires Java 1.6
}
public long getFreeSpace(File f) throws IOException {
return f.getUsableSpace(); // Requires Java 1.6
}
public void deleteFileOrDir(File f) {
if (f.isFile())
f.delete();
else if (f.isDirectory())
for (File child : f.listFiles())
deleteFileOrDir(child);
}
}

View File

@@ -0,0 +1,15 @@
package org.briarproject.util;
import java.io.File;
public class FileUtils {
public static void deleteFileOrDir(File f) {
if (f.isFile()) {
f.delete();
} else if (f.isDirectory()) {
for (File child : f.listFiles()) deleteFileOrDir(child);
f.delete();
}
}
}