package org.rr.jeborker.app.preferences;
/**
* {@link PreferenceStoreFactory} allows to access the different preference store implementations.
*/
public class PreferenceStoreFactory {
public interface PreferenceKey {
public String getKey();
public String getDefaultValue();
public int getDefaultType();
}
public static enum PREFERENCE_KEYS implements PreferenceKey {
DELETE_EBOOK_AFTER_IMPORT {
@Override
public String getKey() {
return "deleteEbookAfterImport";
}
@Override
public String getDefaultValue() {
return "false";
}
@Override
public int getDefaultType() {
return DB_STORE;
}
},
TREE_AUTO_SCROLLING_ENABLED {
@Override
public String getKey() {
return "TreeAutoScrollingEnabled";
}
@Override
public String getDefaultValue() {
return "false";
}
@Override
public int getDefaultType() {
return DB_STORE;
}
},
MAIN_TABLE_AUTO_SAVE_METADATA_ENABLED {
@Override
public String getKey() {
return "MainTableAutoSaveMetadataEnabled";
}
@Override
public String getDefaultValue() {
return "false";
}
@Override
public int getDefaultType() {
return DB_STORE;
}
},
BASIC_FILE_TYPES {
@Override
public String getKey() {
return "BasicFileTypes";
}
@Override
public String getDefaultValue() {
return "doc,docx,rtf,fb2,tr2,tr3,djvu,pdb,xeb,ceb,azw,kf8,lit,mobi,prc,opf,txt,pdb,ps,pdg,tebr,rb,xml";
}
@Override
public int getDefaultType() {
return DB_STORE;
}
},
JEBOORKER_DB_VERSION_KEY {
@Override
public String getKey() {
return "jb.dbversion";
}
@Override
public String getDefaultValue() {
return null;
}
@Override
public int getDefaultType() {
return DB_STORE;
}
},
LOOK_AND_FEEL {
private final String INIT_DEFAULT_VALUE = com.alee.laf.WebLookAndFeel.class.getName();
@Override
public String getKey() {
return "LookAndFeel";
}
@Override
public String getDefaultValue() {
return INIT_DEFAULT_VALUE;
}
@Override
public int getDefaultType() {
return SYSTEM_STORE;
}
}
}
public static final int DB_STORE = 0;
public static final int SYSTEM_STORE = 1;
public static final int PROPERTIES_STORE = 2;
private static final DBPreferenceStore DB_STORE_INSTANCE = new DBPreferenceStore();
private static final SystemPreferenceStore SYSTEM_STORE_INSTANCE = new SystemPreferenceStore();
private static final PropertiesPreferenceStore PROPERTIES_STORE_INSTANCE = new PropertiesPreferenceStore();
/**
* Get the store of the given <code>type</code>
* @param type The key where the store should be returned for. For example
* {@link #DB_STORE} or {@link #SYSTEM_STORE}
* @return The desired {@link APreferenceStore} instance.
* @throws IllegalArgumentException
*/
public static APreferenceStore getPreferenceStore(final int type) {
switch(type) {
case DB_STORE:
return DB_STORE_INSTANCE;
case SYSTEM_STORE:
return SYSTEM_STORE_INSTANCE;
case PROPERTIES_STORE:
return PROPERTIES_STORE_INSTANCE;
default:
throw new IllegalArgumentException("Unkown type " + type);
}
}
/**
* Get the default store for the given {@link PREFERENCE_KEYS}.
* @param key The key where the store should be returned for.
* @return The desired {@link APreferenceStore} instance.
*/
public static APreferenceStore getPreferenceStore(final PREFERENCE_KEYS key) {
final int defaultType = key.getDefaultType();
return getPreferenceStore(defaultType);
}
}