Select Git revision
Filebase.java
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Filebase.java 1.94 KiB
package de.vipra.cmd.file;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import de.vipra.cmd.ex.FilebaseException;
import de.vipra.cmd.model.Article;
import de.vipra.util.Config;
import de.vipra.util.Config.Key;
import de.vipra.util.Constants;
import de.vipra.util.ex.ConfigException;
public abstract class Filebase implements Closeable {
private final File modelDir;
private final File modelFile;
private final FilebaseIndex index;
private final FilebaseVocabulary vocab;
public Filebase(File dataDir, String modelName) throws FilebaseException {
this.modelDir = new File(dataDir, modelName);
if (!modelDir.exists()) {
if (!modelDir.mkdirs()) {
throw new FilebaseException("could not create model directory: " + modelDir.getAbsolutePath());
}
}
try {
this.modelFile = new File(modelDir, modelName);
this.index = new FilebaseIndex(new File(modelDir, Constants.INDEX_FILE));
this.vocab = new FilebaseVocabulary(new File(modelDir, Constants.VOCAB_FILE));
} catch (IOException e) {
throw new FilebaseException("could not read index: " + e.getMessage());
}
}
public File getModelFile() {
return modelFile;
}
public FilebaseIndex getIndex() {
return index;
}
public FilebaseVocabulary getVocab() {
return vocab;
}
public void remove(Article article) throws FilebaseException {
remove(article.getId());
}
@Override
public void close() throws IOException {
write();
index.close();
vocab.close();
}
public abstract void add(Article article) throws FilebaseException;
public abstract void remove(String id) throws FilebaseException;
public abstract void write() throws IOException;
public static Filebase getFilebase(Config config) throws FilebaseException, ConfigException {
File dataDir = config.getDataDirectory();
switch (Constants.Analyzer.fromString(config.getString(Key.ANALYZER))) {
case JGIBB:
case DEFAULT:
default:
return new JGibbFilebase(dataDir);
}
}
}