*
*/
public class CdmPreferenceCache {
- Map<String, CdmPreference> preferenceCache = new HashMap();
+ Map<String,List<CdmPreference>> preferenceCache = new HashMap();
private static CdmPreferenceCache instance;
return instance;
}
- public CdmPreference get(String key){
- return preferenceCache.get(key);
+ public List<CdmPreference> get(String predicate){
+ return preferenceCache.get(predicate);
}
+// public Collection<CdmPreference> get(PrefKey key){
+// if (preferenceCache.containsKey(key.getPredicate())){
+// if (key.getSubject() != null){
+// Set<CdmPreference> result = new HashSet();
+// result.add(preferenceCache.get(key.getPredicate()).get(key.getSubject()));
+// return result;
+// }else{
+// if (!preferenceCache.get(key.getPredicate()).values().isEmpty()){
+// return preferenceCache.get(key.getPredicate()).values();
+// }
+// }
+// }
+// return null;
+// }
public void put(CdmPreference pref){
- preferenceCache.put(pref.getPredicate(), pref);
+ if (preferenceCache.containsKey(pref.getPredicate())){
+ preferenceCache.get(pref.getPredicate()).add(pref);
+ }else{
+ List<CdmPreference> prefs = new ArrayList();
+ prefs.add(pref);
+ preferenceCache.put(pref.getPredicate(), prefs);
+ }
+
+
}
public void getAllTaxEditorDBPreferences(){
ICdmRepository controller;
controller = CdmStore.getCurrentApplicationConfiguration();
List<CdmPreference> allPreferences = controller.getPreferenceService().list();
+ preferenceCache.clear();
for (CdmPreference pref: allPreferences){
put(pref);
PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
- if (preferenceCache.get(key) != null){
- if (!PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.AvailableDistributionStatus.getKey())) || !preferenceCache.get(key).isAllowOverride()){
+ if (findBestMatching(key) != null){
+ if (!PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.AvailableDistributionStatus.getKey())) || !findBestMatching(key).isAllowOverride()){
//get terms for the uuids... and add them to the termManager as preferred terms
ITermService termService = CdmStore.getService(ITermService.class);
- String[] uuidArray = preferenceCache.get(key).getValue().split(";");
+ String[] uuidArray =findBestMatching(key).getValue().split(";");
List<UUID> uuidList = new ArrayList();
for (String uuidString:uuidArray){
try {
public CdmPreference findBestMatching(PrefKey key) {
-
- return PreferenceResolver.resolve(new ArrayList(this.preferenceCache.values()), key);
+ List<CdmPreference> allPrefs = new ArrayList();
+ for (String predicate: preferenceCache.keySet()){
+ allPrefs.addAll(preferenceCache.get(predicate));
+ }
+ return PreferenceResolver.resolve(allPrefs, key);
}
*
**/
public static void setFloatValue(String name, float value) {
- getPreferenceStore().setValue(name + ((CdmRemoteSource)CdmStore.getActiveCdmSource()).toString(), value);
+ getPreferenceStore().setValue(prefKey(name), value);
}
/**
**/
public static String getStringValue(String name, boolean local) {
- String prefValue = getDBPreferenceValue(name);
- if (prefValue == null || local){
+ CdmPreference pref = getDBPreferenceValue(name);
+ String prefValue = null;
+ String overrideKey = createPreferenceString(createOverridePreferenceString(name));
+ boolean override = true;
+ if (getPreferenceStore().contains(overrideKey)){
+ override = getPreferenceStore().getBoolean(overrideKey);
+ }
+ if (local || pref == null || (pref != null && pref.isAllowOverride() && override)){
String dbSpecific = prefKey(name);
if (getPreferenceStore().contains(dbSpecific)){
prefValue = getPreferenceStore().getString(dbSpecific);
prefValue = getPreferenceStore().
getString(name);
}
- }
+ }else if (pref != null){
+ prefValue = pref.getValue();
+ }
return prefValue;
}
return getStringValue(name, false);
}
- private static String getDBPreferenceValue(String name) {
+ private static CdmPreference getDBPreferenceValue(String name) {
CdmPreferenceCache cache = CdmPreferenceCache.instance();
- if (cache.get(name) != null){
- CdmPreference pref = cache.get(name);
- boolean test = getBooleanValue(prefOverrideKey(name));
- if (!pref.isAllowOverride() || !getBooleanValue(prefOverrideKey(name))){
- return pref.getValue();
+ CdmPreference result = null;
+ List<CdmPreference> prefs = null;
+//
+ prefs = cache.get(name);
+ if (prefs == null ){
+ //get default value for Predicate
+ IPreferencePredicate pred = PreferencePredicate.getByKey(name);
+ if (pred != null){
+ if (pred.getDefaultValue() != null){
+ result = CdmPreference.NewTaxEditorInstance(pred, pred.getDefaultValue().toString());
+ }else{
+ result = CdmPreference.NewTaxEditorInstance(pred, null);
+ }
+ result.setAllowOverride(true);
+ }
+ }else{
+ if (prefs.size() == 1){
+ result = prefs.get(0);
+ }else{
+ PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(name));
+ result = cache.findBestMatching(key);
+
}
}
- return null;
+ return result;
}
/**
*
**/
public static int getIntValue(String name) {
- String prefValue = getDBPreferenceValue(name);
+ CdmPreference pref= getDBPreferenceValue(name);
+ String prefValue = null;
+ if (pref != null){
+ prefValue = pref.getValue();
+ }
Integer result = null;
try{
result = Integer.parseInt(prefValue);
}
+ public static boolean getBooleanValue(String name) {
+ return getBooleanValue(name, false);
+ }
+
/**
* <p>
- * setBooleanValue
+ * getBooleanValue
* </p>
*
*
**/
- public static boolean getBooleanValue(String name) {
+ public static boolean getBooleanValue(String name, boolean local) {
if (CdmStore.isActive()){
- String prefValue = getDBPreferenceValue(name);
- if (prefValue == null){
+ CdmPreference pref = getDBPreferenceValue(name);
+ String prefValue = null;
+ if (pref == null || local){
String dbSpecific = prefKey(name);
if (getPreferenceStore().contains(dbSpecific)){
return getPreferenceStore().getBoolean(dbSpecific);
getBoolean(name);
}
}else{
- return Boolean.valueOf(prefValue);
+ return Boolean.valueOf(pref.getValue());
}
}else{
*
**/
public static double getDoubleValue(String name) {
- String prefValue = getDBPreferenceValue(name);
+ CdmPreference pref = getDBPreferenceValue(name);
+ String prefValue = null;
+ if (pref != null){
+ prefValue = pref.getValue();
+ }
Double result = null;
try{
result = Double.parseDouble(prefValue);
*
**/
public static float getFloatValue(String name) {
- String prefValue = getDBPreferenceValue(name);
+ CdmPreference pref = getDBPreferenceValue(name);
+ String prefValue = null;
+ if (pref != null){
+ prefValue = pref.getValue();
+ }
Float result = null;
try{
result = Float.parseFloat(prefValue);
*
**/
public static long getLongValue(String name) {
- String prefValue = getDBPreferenceValue(name);
+ CdmPreference pref = getDBPreferenceValue(name);
+ String prefValue = null;
+ if (pref != null){
+ prefValue = pref.getValue();
+ }
Long result = null;
try{
result = Long.parseLong(prefValue);
if(CdmStore.isActive()){
controller = CdmStore.getCurrentApplicationConfiguration();
controller.getPreferenceService().set(preference);
+ CdmPreferenceCache.instance().put(preference);
}
}catch(Exception e){
e.printStackTrace();
getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.NameDetailsView.getKey()), new NameDetailsConfigurator(false).toString());
//Navigator preferences
- getPreferenceStore().setDefault(createPreferenceString(SORT_NODES), NavigatorOrderEnum.RankAndNameOrder.getKey());
+ getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), NavigatorOrderEnum.RankAndNameOrder.getKey());
getPreferenceStore().setDefault(createPreferenceString(SORT_TAXA_BY_RANK_AND_NAME), true);
getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey())), false);
getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.ShowSpecimen.getKey())), true);
getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.NameDetailsView.getKey())), false);
- getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.DistributionEditorActivated.getKey())), false);
- getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionStatus.getKey())), "");
+ getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.DistributionEditorActivated.getKey())), true);
+ getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionStatus.getKey())), true);
+ getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaTerms.getKey())), true);
+ getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey())), true);
+ getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.CommonNameAreaVocabularies.getKey())), false);
getPreferenceStore().setDefault(createPreferenceString(FILTER_COMMON_NAME_REFERENCES), false);
getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowTaxonNodeWizard.getKey()), Boolean.valueOf(PreferencePredicate.ShowTaxonNodeWizard.getDefaultValue().toString()));
getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowNamespaceInSource.getKey()), Boolean.valueOf(PreferencePredicate.ShowNamespaceInSource.getDefaultValue().toString()));
* @param orderActivated
*/
public static void setSortNodes(NavigatorOrderEnum nodesOrder) {
- setStringValue(SORT_NODES, nodesOrder.key);
+ setStringValue(PreferencePredicate.TaxonNodeOrder.getKey(), nodesOrder.key);
}
* @param orderActivated
*/
public static NavigatorOrderEnum getSortNodes() {
- return NavigatorOrderEnum.valueOf(getStringValue(SORT_NODES));
+ return NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
}
* @param orderActivated
*/
public static boolean isNodesSortedNaturally() {
- NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(SORT_NODES));
+ NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
return value.equals(NavigatorOrderEnum.NaturalOrder);
}
* @param orderActivated
*/
public static boolean isNodesSortedByName() {
- NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(SORT_NODES));
+ NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
return value.equals(NavigatorOrderEnum.AlphabeticalOrder);
}
* @param orderActivated
*/
public static boolean isNodesSortedByNameAndRank() {
- NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(SORT_NODES));
+ NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
return value.equals(NavigatorOrderEnum.RankAndNameOrder);
}
CdmPreference preference = null;
String value;
if (!local) {
- preference = cache.get(PreferencePredicate.NameDetailsView.getKey());
+ PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.NameDetailsView);
+ preference = cache.findBestMatching(key);
if (preference == null){
return null;
}
public static void updateAbcdImportConfigurationPreference() {
CdmPreferenceCache cache = CdmPreferenceCache.instance();
- CdmPreference pref = cache.get(PreferencePredicate.AbcdImportConfig.getKey());
+
+ CdmPreference pref = cache.findBestMatching(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AbcdImportConfig));
if (!getBooleanValue(prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey())) || !pref.isAllowOverride()){
resetToDBPreferenceAbcdCOnfigurator();
if(CdmStore.isActive()){
controller = CdmStore.getCurrentApplicationConfiguration();
for (CdmPreference preference: preferences){
+
controller.getPreferenceService().set(preference);
+
+ CdmPreferenceCache.instance().put(preference);
}
}
}catch(Exception e){