package openeye.storage;
import com.google.common.base.Preconditions;
import com.google.gson.Gson;
import java.io.File;
public abstract class GsonDirStorage<T> extends GsonStorageBase<T> implements IAppendableStorage<T> {
protected final File dir;
protected final String prefix;
protected GsonDirStorage(File dir, String prefix, Class<? extends T> cls, Gson gson, String extension) {
super(cls, gson, extension);
Preconditions.checkArgument(dir.isDirectory());
this.dir = dir;
this.prefix = prefix;
}
@Override
public IDataSource<T> createNew() {
String prefixId = generateId();
String id;
File file;
int count = 0;
do {
id = prefixId + "-" + count++;
String filename = generateFilename(prefix, id);
file = new File(dir, filename);
} while (file.exists());
return createFromFile(id, file);
}
@Override
public IDataSource<T> createNew(String id) {
String filename = generateFilename(prefix, id);
File file = new File(dir, filename);
return createFromFile(id, file);
}
}