package com.arcao.trackables.data.persistence;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import au.com.gridstone.grex.GRexPersister;
import au.com.gridstone.grex.converter.Converter;
import rx.Observable;
import timber.log.Timber;
public class ClassPersister extends GRexPersister {
private final File directory;
/**
* Create a new instance using a provided {@link Converter}.
*
* @param converter Converter used to serialize/deserialize objects, not
* null
* @param directory Directory to write/read files, not null. {@link
* File#isDirectory()} must return true on this parameter
*/
public ClassPersister(Converter converter, File directory) {
super(converter, directory);
this.directory = directory;
}
public Observable<List<String>> get() {
return Observable.defer(() -> Observable.just(Arrays.asList(directory.list())));
}
public void clean() {
try {
FileUtils.cleanDirectory(directory);
} catch (Throwable t) {
Timber.e(t.getMessage(), t);
}
}
public long size() {
return directory.length();
}
public long sizeInBytes() {
return FileUtils.sizeOfDirectory(directory);
}
}