Skip to content
Snippets Groups Projects
Select Git revision
  • 5d6eb0c86c05cfefce554e662224466e92e95506
  • master default
  • ember-ui
3 results

Filebase.java

Blame
  • 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);
    		}
    	}
    
    }