X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/f9af366ec593b29a2d5bba4733a4094a3407e428..274c99efb10b6dc131ef65968454b7f4c0234b4b:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java index 3e1ba3943..194a5edc4 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java @@ -6,101 +6,109 @@ * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ - package eu.etaxonomy.taxeditor.preference; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.net.URI; +import java.lang.reflect.Field; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Set; import java.util.StringTokenizer; import java.util.UUID; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.eclipse.core.runtime.preferences.ConfigurationScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement; import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.PlatformUI; import org.osgi.service.prefs.BackingStoreException; import org.osgi.service.prefs.Preferences; +import eu.etaxonomy.cdm.api.application.CdmApplicationState; import eu.etaxonomy.cdm.api.application.ICdmRepository; -import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator; -import eu.etaxonomy.cdm.api.service.ITermService; import eu.etaxonomy.cdm.api.service.ITermTreeService; import eu.etaxonomy.cdm.api.service.IVocabularyService; import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl; import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator; +import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator; import eu.etaxonomy.cdm.common.CdmUtils; +import eu.etaxonomy.cdm.common.URI; +import eu.etaxonomy.cdm.facade.DerivedUnitFacadeConfigurator; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator; -import eu.etaxonomy.cdm.model.common.ICdmBase; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.metadata.CdmPreference; import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey; +import eu.etaxonomy.cdm.model.metadata.DistributionDescription; +import eu.etaxonomy.cdm.model.metadata.EnabledComputedDescription; import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate; import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; import eu.etaxonomy.cdm.model.metadata.PreferenceSubject; +import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum; +import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingSwapEnum; import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum; import eu.etaxonomy.cdm.model.metadata.TermOrder; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.cdm.model.term.IDefinedTerm; import eu.etaxonomy.cdm.model.term.ISimpleTerm; -import eu.etaxonomy.cdm.model.term.TermBase; import eu.etaxonomy.cdm.model.term.TermTree; +import eu.etaxonomy.cdm.model.term.TermType; +import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.model.term.VocabularyEnum; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator; import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy; import eu.etaxonomy.cdm.strategy.match.FieldMatcher; import eu.etaxonomy.cdm.strategy.match.IMatchStrategy; import eu.etaxonomy.cdm.strategy.match.MatchException; import eu.etaxonomy.cdm.strategy.match.MatchMode; -import eu.etaxonomy.taxeditor.model.AbstractUtility; +import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper; -import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource; +import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.TermStore; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; -import eu.etaxonomy.taxeditor.ui.dialog.DefaultLanguageDialog; /** - *

- * PreferencesUtil class. - *

- * * @author p.ciardelli * @author n.hoffmann * @created 05.12.2008 */ public class PreferencesUtil implements IPreferenceKeys { + + private final static Logger logger = LogManager.getLogger(PreferencesUtil.class); + private final static String EDITOR_PREFERENCES_NODE = "eu.etaxonomy.taxeditor"; public static final String PREFERRED_TERMS_CHANGE = "preferred_terms"; - + public static final String UPDATE_NAVIGATOR = "update_navigator"; public static final String P2_REPOSITORIES_DELIM = ","; public static final String P2_REPOSITORY_FIELDS_DELIM = ";"; public static final String SUBJECT_DELIM = "/"; - private static TermTree preferredNameFeatureTree; + private static TermTree preferredNameFeatureTree; + + private static TermTree preferredTaxonFeatureTree; - private final static Logger logger = Logger.getLogger(PreferencesUtil.class); public static IPreferenceStore getPreferenceStore() { return TaxeditorStorePlugin.getDefault().getPreferenceStore(); @@ -117,9 +125,11 @@ public class PreferencesUtil implements IPreferenceKeys { public static String getPreferenceValue(PrefKey prefKey){ try { + //check if there exist a node for the predicate if(getEditorPreferences().nodeExists(prefKey.getPredicate())){ Preferences predicateNode = getEditorPreferences().node(prefKey.getPredicate()); String[] splittedSubject = extractSubjectParts(prefKey.getSubject()); + //check if the predicate node contains a node for the subject, this should be the last part String value = predicateNode.get(splittedSubject[splittedSubject.length-1], PreferencePredicate.getByKey(prefKey.getPredicate()).getDefaultValue() != null? PreferencePredicate.getByKey(prefKey.getPredicate()).getDefaultValue().toString(): ""); int index = splittedSubject.length -2; while (value != null && index >= 0){ @@ -138,7 +148,7 @@ public class PreferencesUtil implements IPreferenceKeys { public static List getPreference(PreferencePredicate prefPredicate){ try { - List prefs = new ArrayList(); + List prefs = new ArrayList<>(); CdmPreference pref; PreferenceSubject subject; if(getEditorPreferences().nodeExists(prefPredicate.getKey())){ @@ -152,9 +162,7 @@ public class PreferencesUtil implements IPreferenceKeys { pref = CdmPreference.NewInstance(subject, prefPredicate, value); prefs.add(pref); } - } - } catch (BackingStoreException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -162,10 +170,6 @@ public class PreferencesUtil implements IPreferenceKeys { return null; } - /** - * @param childName - * @param child - */ private static String createSubjectStringForChildNodes(String subject, Preferences parent) { try { for (String childName: parent.childrenNames()){ @@ -182,7 +186,7 @@ public class PreferencesUtil implements IPreferenceKeys { } private static String prefKey(String name) { - return name + "_"+ ((CdmRemoteSource)CdmStore.getActiveCdmSource()).toString(); + return name + "_"+ ((ICdmRemoteSource)CdmStore.getActiveCdmSource()).toString(); } public static String prefOverrideKey(String name) { @@ -193,7 +197,7 @@ public class PreferencesUtil implements IPreferenceKeys { if (value != null){ getPreferenceStore().setValue(prefKey(name), value); }else{ - getPreferenceStore().setToDefault(name); + getPreferenceStore().setToDefault(prefKey(name)); } } @@ -220,23 +224,37 @@ public class PreferencesUtil implements IPreferenceKeys { public static String getStringValue(String name, boolean local) { CdmPreference pref = getDBPreferenceValue(name); - String prefValue = null; - String overrideKey = createPreferenceString(createOverridePreferenceString(name)); - boolean override = getPreferenceStore().getBoolean(overrideKey); - if (local || pref == null || (pref != null && pref.isAllowOverride() && override)){ + boolean override = getOverrideForPreference(name); + + if (local || (pref == null && override)|| (pref != null && pref.isAllowOverride() && override)){ + //local preference String dbSpecific = prefKey(name); if (getPreferenceStore().contains(dbSpecific)){ - prefValue = getPreferenceStore().getString(dbSpecific); - }else{ - prefValue = getPreferenceStore(). - getString(name); + return getPreferenceStore().getString(dbSpecific); } - }else if (pref != null){ - prefValue = pref.getValue(); - } - return prefValue; - + }else if (pref != null){ + //db preference + if (pref.getValue() == null){ + Object result = PreferencePredicate.getByKey(pref.getPredicate()).getDefaultValue(); + if (result instanceof String){ + return (String)result; + }else{ + return result != null?result.toString(): null; + } + } + return pref.getValue(); + } + //no override but default value + IPreferencePredicate pred = PreferencePredicate.getByKey(name); + if (pred != null){ + if (pred.getDefaultValue() instanceof String){ + return (String)pred.getDefaultValue(); + }else if (pred.getDefaultValue() != null){ + return pred.getDefaultValue().toString(); + } + } + return null; } public static String getStringValue(String name){ @@ -246,20 +264,8 @@ public class PreferencesUtil implements IPreferenceKeys { private static CdmPreference getDBPreferenceValue(String name) { CdmPreferenceCache cache = CdmPreferenceCache.instance(); CdmPreference pref = null; -// pref = cache.get(name); - if (pref == null ){ - //get default value for Predicate - IPreferencePredicate pred = PreferencePredicate.getByKey(name); - if (pred != null){ - if (pred.getDefaultValue() != null){ - pref = CdmPreference.NewTaxEditorInstance(pred, pred.getDefaultValue().toString()); - }else{ - pref = CdmPreference.NewTaxEditorInstance(pred, null); - } - pref.setAllowOverride(true); - } - } + return pref; } @@ -273,25 +279,36 @@ public class PreferencesUtil implements IPreferenceKeys { try{ result = Integer.parseInt(prefValue); }catch(NumberFormatException e){ - logger.debug("Preference value of " + name + " is not a number"); + logger.debug("Preference value of " + name + " is not an integer"); } - 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)){ + boolean override = getOverrideForPreference(name); + if (local || (pref == null && override) || (pref != null && pref.isAllowOverride() && override)){ String dbSpecific = prefKey(name); if (getPreferenceStore().contains(dbSpecific)){ result = getPreferenceStore().getInt(dbSpecific); - }else{ - result = getPreferenceStore(). - getInt(name); + } + } + if (result == null){ + IPreferencePredicate pred = PreferencePredicate.getByKey(name); + if (pred != null){ + if (pred.getDefaultValue() instanceof Integer){ + result = (Integer)pred.getDefaultValue(); + }else if (pred.getDefaultValue() != null){ + try{ + result = Integer.valueOf(pred.getDefaultValue().toString()); + }catch(NumberFormatException e){ + logger.debug("Preference value of " + name + " is not a number"); + result = 0; + } + } + } + //if no default value available + if (result == null){ + result = 0; } } return result; - } public static boolean getBooleanValue(String name) { @@ -301,56 +318,44 @@ public class PreferencesUtil implements IPreferenceKeys { }else{ return result; } - } public static Boolean getBooleanValue(String name, boolean local) { if (CdmStore.isActive()){ CdmPreference pref = getDBPreferenceValue(name); - String overrideKey = createPreferenceString(createOverridePreferenceString(name)); boolean override = getPreferenceStore().getBoolean(overrideKey); - - if (local || pref == null || (pref != null && pref.isAllowOverride() && override)){ + if (local || (pref == null && override)|| (pref != null && pref.isAllowOverride() && override)){ + //local preference String dbSpecific = prefKey(name); - if (getPreferenceStore().contains(dbSpecific)){ - return getPreferenceStore().getBoolean(dbSpecific); - }else{ - return null; - } - }else{ + return getPreferenceStore().getBoolean(dbSpecific); + + }else if (pref != null){ + //db preference is available and override == false + if (pref.getValue() == null){ + Object result = PreferencePredicate.getByKey(pref.getPredicate()).getDefaultValue(); + if (result instanceof Boolean){ + return (Boolean)result; + }else{ + return Boolean.valueOf(result.toString()); + } + } return Boolean.valueOf(pref.getValue()); } - + //no override but default value + IPreferencePredicate pred = PreferencePredicate.getByKey(name); + if (pred != null){ + if (pred.getDefaultValue() instanceof Boolean){ + return (Boolean)pred.getDefaultValue(); + }else if (pred.getDefaultValue() != null){ + return Boolean.valueOf(pred.getDefaultValue().toString()); + } + } + return false; }else{ + // no connection to db, use local preference return getPreferenceStore().getBoolean(name); } - - } - - public static double getDoubleValue(String name) { - CdmPreference pref = getDBPreferenceValue(name); - String prefValue = null; - if (pref != null){ - prefValue = pref.getValue(); - } - Double result = null; - try{ - result = Double.parseDouble(prefValue); - }catch(NumberFormatException e){ - logger.debug("Preference value of " + name + " is not a number"); - } - if (result == null){ - String dbSpecific = prefKey(name); - if (getPreferenceStore().contains(dbSpecific)){ - result = getPreferenceStore().getDouble(dbSpecific); - }else{ - result = getPreferenceStore(). - getDouble(name); - } - } - return result; - } public static float getFloatValue(String name, boolean local) { @@ -361,47 +366,29 @@ public class PreferencesUtil implements IPreferenceKeys { } Float result = null; try{ - result = Float.parseFloat(prefValue); - }catch(NumberFormatException e){ - logger.debug("Preference value of " + name + " is not a number"); - } - 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)){ - result = getPreferenceStore().getFloat(dbSpecific); - }else{ - result = getPreferenceStore(). - getFloat(name); + if (prefValue != null){ + result = Float.parseFloat(prefValue); } + }catch(NumberFormatException e){ + logger.debug("Preference value of " + name + " is not a float"); } - return result; - } + boolean override = getOverrideForPreference(name); - public static long getLongValue(String name) { - CdmPreference pref = getDBPreferenceValue(name); - String prefValue = null; - if (pref != null){ - prefValue = pref.getValue(); - } - Long result = null; - try{ - result = Long.parseLong(prefValue); - }catch(NumberFormatException e){ - logger.debug("Preference value of " + name + " is not a number"); - } - if (result == null){ + if (local || pref == null || (pref.isAllowOverride() && override)){ String dbSpecific = prefKey(name); if (getPreferenceStore().contains(dbSpecific)){ - result = getPreferenceStore().getLong(dbSpecific); + result = getPreferenceStore().getFloat(dbSpecific); }else{ - result = getPreferenceStore(). - getLong(name); + IPreferencePredicate pred = PreferencePredicate.getByKey(name); + if (pred != null){ + if (pred.getDefaultValue() instanceof Float){ + return (float)pred.getDefaultValue(); + }else if (pred.getDefaultValue() != null){ + return Float.valueOf(pred.getDefaultValue().toString()); + } + } + return 0; } } return result; @@ -410,7 +397,7 @@ public class PreferencesUtil implements IPreferenceKeys { public static CdmPreference setPreferredNomenclaturalCode( String preferenceValue, boolean local) { if (local){ - setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY, + setStringValue(PreferencePredicate.NomenclaturalCode.getKey(), preferenceValue); } else{ @@ -432,7 +419,7 @@ public class PreferencesUtil implements IPreferenceKeys { if (preference == null){ return null; } else{ - setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY, + setStringValue(PreferencePredicate.NomenclaturalCode.getKey(), preference.getValue()); return preference; @@ -444,9 +431,6 @@ public class PreferencesUtil implements IPreferenceKeys { } } return null; - - - } public static void setPreferredNomenclaturalCode( @@ -457,42 +441,30 @@ public class PreferencesUtil implements IPreferenceKeys { if (controller == null){ return; } - PrefKey key = null; - try{ - key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode); - }catch (Exception e){ - System.out.println(e.getStackTrace()); - } - - controller.getPreferenceService().set(preference); - - } - - public static NomenclaturalCode getPreferredNomenclaturalCode() { - - CdmPreference pref = getPreferenceFromDB(PreferencePredicate.NomenclaturalCode); - - - String preferredCode; - if(pref == null || (pref.isAllowOverride() && getBooleanValue(prefOverrideKey(PreferencePredicate.NomenclaturalCode.getKey())))){ - preferredCode = getStringValue( - PreferencePredicate.NomenclaturalCode.getKey(), true); + if (preference == null){ + PrefKey key = null; + try{ + key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode); + }catch (Exception e){ + System.out.println(e.getStackTrace()); + } + controller.getPreferenceService().remove(key); }else{ - preferredCode = pref.getValue(); - } - if (StringUtils.isBlank(preferredCode)){ - preferredCode = getPreferenceKey((NomenclaturalCode)PreferencePredicate.NomenclaturalCode.getDefaultValue()); + controller.getPreferenceService().set(preference); } + } - return getPreferredNomenclaturalCode(preferredCode); + public static NomenclaturalCode getPreferredNomenclaturalCode() { + String nomString = getStringValue(PreferencePredicate.NomenclaturalCode.getKey()); + return getPreferredNomenclaturalCode(nomString); } public static NomenclaturalCode getPreferredNomenclaturalCode(String preferenceKeyNomenclaturalCode) { for (NomenclaturalCode code : NomenclaturalCodeHelper.getAllCodes()) { - if (getPreferenceKey(code).equals(preferenceKeyNomenclaturalCode)) { + if (getPreferenceKey(code).equals(preferenceKeyNomenclaturalCode) || code.getKey().equals(preferenceKeyNomenclaturalCode)) { return code; } } @@ -519,7 +491,7 @@ public class PreferencesUtil implements IPreferenceKeys { return result; } - public static CdmPreference getPreferenceFromDB(IPreferencePredicate predicate){ + public static CdmPreference getPreferenceFromDB(IPreferencePredicate predicate){ ICdmRepository controller; CdmPreference pref = null; @@ -534,10 +506,9 @@ public class PreferencesUtil implements IPreferenceKeys { } return pref; - } - public static List getPreferencesFromDB(IPreferencePredicate predicate){ + public static List getPreferencesFromDB(IPreferencePredicate predicate){ ICdmRepository controller; List prefs = null; @@ -570,9 +541,6 @@ public class PreferencesUtil implements IPreferenceKeys { }catch(Exception e){ e.printStackTrace(); } - - - } public static CdmPreference getPreferenceFromDB(PrefKey key){ @@ -607,19 +575,39 @@ public class PreferencesUtil implements IPreferenceKeys { }catch(Exception e){ e.printStackTrace(); } - } public static String getPreferredDefaultLangugae(){ - String preferredLanguage = getStringValue(DEFAULT_LANGUAGE_EDITOR); + String preferredLanguage = getStringValue(DEFAULT_LANGUAGE_EDITOR, true); if(StringUtils.isNotEmpty(preferredLanguage) && StringUtils.isNotBlank(preferredLanguage)){ return preferredLanguage; } return null; } + public static Language getPreferredDefaultLanguage(){ + + String prop = System.getProperty("osgi.nl"); + if (prop.startsWith("de")) { + return Language.GERMAN(); + }else { + return Language.ENGLISH(); + } +// String preferredLanguage = getStringValue(DEFAULT_LANGUAGE_EDITOR, true); +// if(StringUtils.isNotEmpty(preferredLanguage) && StringUtils.isNotBlank(preferredLanguage)){ +// if (preferredLanguage.equals(Language.uuidEnglish.toString())) { +// return Language.ENGLISH(); +// }else if (preferredLanguage.equals(Language.uuidGerman.toString())) { +// return Language.GERMAN(); +// }else { +// return Language.ENGLISH(); +// } +// } +// return Language.getDefaultLanguage(); + } + public static boolean isShowMediaPreview(){ - boolean isShowMediaPreview = getBooleanValue(SHOW_MEDIA_PREVIEW); + boolean isShowMediaPreview = getBooleanValue(SHOW_MEDIA_PREVIEW, true); return isShowMediaPreview; } @@ -633,14 +621,14 @@ public class PreferencesUtil implements IPreferenceKeys { */ public static IMatchStrategy getMatchStrategy(Class clazz) { String className = clazz.getName(); - if (getBooleanValue(MATCH_STRATEGY_PREFIX + className)) { + if (getBooleanValue(MATCH_STRATEGY_PREFIX + className, true)) { IMatchStrategy matchStrategy = getDefaultMatchStrategy(clazz); //TODO CacheMatchers (or multiple field matchers in future) are missing here for (FieldMatcher fieldMatcher : matchStrategy.getMatching().getFieldMatchers(false)) { String fieldName = fieldMatcher.getPropertyName(); String matchModeName = getStringValue( - getMatchStrategyFieldName(className, fieldName)); + getMatchStrategyFieldName(className, fieldName), true); MatchMode matchMode = MatchMode.valueOf(matchModeName); try { matchStrategy.setMatchMode(fieldName, matchMode); @@ -705,64 +693,28 @@ public class PreferencesUtil implements IPreferenceKeys { return pattern; } - public static void addTermToPreferredTerms(T term) { - - // VocabularyEnum vocabulary = - // VocabularyEnum.getVocabularyEnum(term.getClass()); - // - // getPreferenceStore().setValue(getPreferenceKey(term), - // VocabularyStore.getTermVocabulary(vocabulary).getTerms().contains(term)); - // - // firePreferencesChanged(term.getClass()); - } - /** * Construct a unique key using the CdmBase object's uuid - * - * @param cdmBase - * @return */ - private static String getPreferenceKey(ICdmBase cdmBase) { - cdmBase = HibernateProxyHelper.deproxy(cdmBase); - - String key = cdmBase.getClass().getName().concat(".") - .concat(cdmBase.getUuid().toString()); - if (key.contains("javassist")) { - MessagingUtils.info("proxy"); - } - return key; - } - - /** - * Construct a unique key using the CdmBase object's uuid - * - * @param cdmBase - * @return - */ - public static String getPreferenceKey(ISimpleTerm simpleTerm) { + public static String getPreferenceKey(ISimpleTerm simpleTerm) { simpleTerm = HibernateProxyHelper.deproxy(simpleTerm); String key = simpleTerm.getClass().getName().concat(".") .concat(simpleTerm.getUuid().toString()); - if (key.contains("javassist")) { + if (key.contains("javassist")) { //Note by AM (2022-06): javassist is not used anymore, instead hibernate uses bytebuddy which is not contained in class names so this logging will not work anymore MessagingUtils.warn(PreferencesUtil.class, "Trying to persist a preference based on a proxy class."); } return key; } - - /** * Construct a unique key using the CdmBase object's uuid - * - * @param cdmBase - * @return */ public static String getPreferenceKey(IDefinedTerm definedTerm) { definedTerm = HibernateProxyHelper.deproxy(definedTerm); String key = definedTerm.getClass().getName().concat(".") .concat(definedTerm.getUuid().toString()); - if (key.contains("javassist")) { + if (key.contains("javassist")) { //Note by AM (2022-06): javassist is not used anymore, instead hibernate uses bytebuddy which is not contained in class names so this logging will not work anymore MessagingUtils.warn(PreferencesUtil.class, "Trying to persist a preference based on a proxy class."); } @@ -777,14 +729,18 @@ public class PreferencesUtil implements IPreferenceKeys { public static IFindTaxaAndNamesConfigurator getSearchConfigurator() { IFindTaxaAndNamesConfigurator configurator = initializeSearchConfigurator(); - configurator.setDoTaxa(getBooleanValue( - TAXON_SERVICE_CONFIGURATOR_TAXA)); - configurator.setDoSynonyms(getBooleanValue( - TAXON_SERVICE_CONFIGURATOR_SYNONYMS)); - configurator.setDoNamesWithoutTaxa(getBooleanValue( - TAXON_SERVICE_CONFIGURATOR_NAMES)); - configurator.setDoTaxaByCommonNames(getBooleanValue( - TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES)); + configurator.setDoTaxa(PreferencesUtil.getPreferenceStore().contains(IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_TAXA)? PreferencesUtil.getPreferenceStore().getBoolean( + IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_TAXA): true); + configurator.setDoSynonyms(PreferencesUtil.getPreferenceStore().contains(IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_SYNONYMS)? PreferencesUtil.getPreferenceStore().getBoolean( + IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_SYNONYMS): true); + configurator.setDoNamesWithoutTaxa(PreferencesUtil.getPreferenceStore().contains(IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_NAMES)? PreferencesUtil.getPreferenceStore().getBoolean( + IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_NAMES): true); + configurator.setDoTaxaByCommonNames(PreferencesUtil.getPreferenceStore().contains(IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES)? PreferencesUtil.getPreferenceStore().getBoolean( + IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES): true); + configurator.setDoIncludeAuthors(PreferencesUtil.getPreferenceStore().contains(IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_WITH_AUTHORS)? PreferencesUtil.getPreferenceStore().getBoolean( + IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_WITH_AUTHORS): false); + configurator.setIncludeUnpublished(PreferencesUtil.getPreferenceStore().contains(IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_UNPUBLISHED)? PreferencesUtil.getPreferenceStore().getBoolean( + IPreferenceKeys.TAXON_SERVICE_CONFIGURATOR_UNPUBLISHED): true); //configurator.setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.valueOf(getStringValue(TAXON_SERVICE_CONFIGURATOR_MATCH_MODE))); return configurator; @@ -804,7 +760,8 @@ public class PreferencesUtil implements IPreferenceKeys { configurator.setDoSynonyms(true); configurator.setDoNamesWithoutTaxa(true); configurator.setDoTaxaByCommonNames(true); - + configurator.setIncludeUnpublished(true); + configurator.setDoIncludeAuthors(false); configurator.setTaxonPropertyPath(Arrays.asList("$", "titleCache", "name", "name.$", "relationsFromThisTaxon.$")); @@ -842,6 +799,10 @@ public class PreferencesUtil implements IPreferenceKeys { configurator.isDoNamesWithoutTaxa()); getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES, configurator.isDoTaxaByCommonNames()); + getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_WITH_AUTHORS, + configurator.isDoIncludeAuthors()); + getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_UNPUBLISHED, + configurator.isIncludeUnpublished()); } public static void firePreferencesChanged(Class clazz) { @@ -849,24 +810,29 @@ public class PreferencesUtil implements IPreferenceKeys { null, clazz); } + public static void firePreferencesChangedForNavigator() { + getPreferenceStore().firePropertyChangeEvent(UPDATE_NAVIGATOR, + null, null); + } + public static String createPreferenceString(String property){ return prefKey(property); - } public static String createOverridePreferenceString(String property){ return prefOverrideKey(property); + } - } + public static boolean getOverrideForPreference(String preferenceString){ + return PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(preferenceString), true); + } /** * Set default values for preferences */ public static void setDefaults() { - getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true); - getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS, - true); - getPreferenceStore().setDefault(createPreferenceString(EDIT_MAP_SERVICE_ACCES_POINT), + + getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.EditMapServiceAccessPoint.getKey()), "http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php"); //FIXME : changed default for SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution getPreferenceStore().setDefault(createPreferenceString(SHOULD_CONNECT_AT_STARTUP), false); @@ -878,15 +844,10 @@ public class PreferencesUtil implements IPreferenceKeys { getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS, true); getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_NAMES, true); getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES, true); - - //Distribution Editor: -// getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DistributionEditorActivated.getKey()), Boolean.valueOf(PreferencePredicate.DistributionEditorActivated.getDefaultValue().toString())); -// getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisplayOfAreasInDistributionEditor.getKey()), PreferencePredicate.DisplayOfAreasInDistributionEditor.getDefaultValue().toString()); -// getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisplayOfStatus.getKey()), PreferencePredicate.DisplayOfStatus.getDefaultValue().toString()); - + getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_WITH_AUTHORS, false); //Name Details - getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.NameDetailsView.getKey()), new NameDetailsConfigurator(false).toString()); + // getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.NameDetailsView.getKey()), new NameDetailsConfigurator(false).toString()); //Navigator preferences getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), NavigatorOrderEnum.RankAndNameOrder.getKey()); @@ -898,12 +859,7 @@ public class PreferencesUtil implements IPreferenceKeys { getPreferenceStore().setDefault(createPreferenceString(SHOW_MEDIA_PREVIEW), false); //override db preferences 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())), 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(PreferencePredicate.CommonNameReferencesWithMarker.getKey()), false); getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowTaxonNodeWizard.getKey()), Boolean.valueOf(PreferencePredicate.ShowTaxonNodeWizard.getDefaultValue().toString())); @@ -912,7 +868,13 @@ public class PreferencesUtil implements IPreferenceKeys { getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisableMultiClassification.getKey()), Boolean.valueOf(PreferencePredicate.DisableMultiClassification.getDefaultValue().toString())); getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowImportExportMenu.getKey()), Boolean.valueOf(PreferencePredicate.ShowImportExportMenu.getDefaultValue().toString())); getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowSpecimen.getKey()), Boolean.valueOf(PreferencePredicate.ShowSpecimen.getDefaultValue().toString())); - + getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.SearchForIdentifierAndTitleCache.getKey()), Boolean.valueOf(PreferencePredicate.SearchForIdentifierAndTitleCache.getDefaultValue().toString())); + getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.SearchForIdentifierAndTitleCache.getKey())), false); + getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.SearchForIdentifierAsDefault.getKey()), Boolean.valueOf(PreferencePredicate.SearchForIdentifierAsDefault.getDefaultValue().toString())); + getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.SearchForIdentifierAsDefault.getKey())), false); + getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey())), false); + getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.ShowModifier.getKey())), false); + getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.DistributionEditorActivated.getKey())), false); } public static void checkNomenclaturalCode() { @@ -920,10 +882,8 @@ public class PreferencesUtil implements IPreferenceKeys { if (PreferencesUtil.getPreferredNomenclaturalCode() == null) { PreferencesUtil.setPreferredNomenclaturalCode(getPreferenceKey(NomenclaturalCode.ICNAFP), true); } - - - } + public static void setNomenclaturalCodePreferences(){ ICdmRepository controller; controller = CdmStore.getCurrentApplicationConfiguration(); @@ -942,26 +902,25 @@ public class PreferencesUtil implements IPreferenceKeys { UUID uuid = UUID.fromString(preference.getValue().substring(index +1, preference.getValue().length())); NomenclaturalCode preferredCode = NomenclaturalCode.getByUuid(uuid); - setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY, + setStringValue(PreferencePredicate.NomenclaturalCode.getKey(), getPreferenceKey(preferredCode)); - } - public static void checkDefaultLanguage(){ - if(PreferencesUtil.getPreferredDefaultLangugae() == null){ - Shell shell = AbstractUtility.getShell(); - int open = new DefaultLanguageDialog(shell).open(); - if(open == Window.OK){ - PlatformUI.getWorkbench().restart(); - } - }else{ - //TODO:In case of a reinstall, the config.ini will be overwritten - // here you create config.ini with the stored key from preferences - } - } +// public static void checkDefaultLanguage(){ +// if(PreferencesUtil.getPreferredDefaultLangugae() == null){ +// Shell shell = AbstractUtility.getShell(); +// int open = new DefaultLanguageDialog(shell).open(); +// if(open == Window.OK){ +// PlatformUI.getWorkbench().restart(); +// } +// }else{ +// //TODO:In case of a reinstall, the config.ini will be overwritten +// // here you create config.ini with the stored key from preferences +// } +// } public static String getMapServiceAccessPoint() { - return getStringValue(EDIT_MAP_SERVICE_ACCES_POINT); + return getStringValue(PreferencePredicate.EditMapServiceAccessPoint.getKey()); } public static boolean shouldConnectAtStartUp() { @@ -970,78 +929,85 @@ public class PreferencesUtil implements IPreferenceKeys { return false; } - public static TermTree getDefaultFeatureTreeForTextualDescription() { + public static TermTree getDefaultFeatureTreeForTextualDescription() { String uuidString = getStringValue( - FEATURE_TREE_DEFAULT_TEXT); + FEATURE_TREE_DEFAULT_TEXT, true); if (StringUtils.isBlank(uuidString)) { return null; } - TermTree tree = CdmStore.getService( + TermTree tree = CdmStore.getService( ITermTreeService.class).load(UUID.fromString(uuidString)); - if (tree.getId() == 0) { + + if (tree == null || tree.getId() == 0) { return null; } return tree; } - public static TermTree getDefaultFeatureTreeForStructuredDescription() { + public static TermTree getDefaultFeatureTreeForStructuredDescription() { String uuidString = getStringValue( - FEATURE_TREE_DEFAULT_STRUCTURE); + FEATURE_TREE_DEFAULT_STRUCTURE, true); return StringUtils.isBlank(uuidString) ? null : CdmStore.getService( ITermTreeService.class).load(UUID.fromString(uuidString)); } public static void setSortRanksHierarchichally(boolean selection) { - setBooleanValue(SORT_RANKS_HIERARCHICHALLY, selection); + setBooleanValue(PreferencePredicate.SortRanksHierarchichally.getKey(), selection); } public static boolean getSortRanksHierarchichally() { - return getBooleanValue(SORT_RANKS_HIERARCHICHALLY); + return getBooleanValue(PreferencePredicate.SortRanksHierarchichally.getKey()); } public static boolean isMultilanguageTextEditingCapability() { return getBooleanValue( - MULTILANGUAGE_TEXT_EDITING_CAPABILITY); + PreferencePredicate.MultiLanguageTextEditing.getKey()); } public static Language getGlobalLanguage() { - String languageUuidString = getStringValue( - GLOBAL_LANGUAGE_UUID); + PreferencePredicate.TermLanguage.getKey(), true); - if(!CdmStore.isActive()) { - MessagingUtils.noDataSourceWarningDialog(languageUuidString); - return null; - } + CdmPreference dbPref = getDBPreferenceValue(PreferencePredicate.TermLanguage.getKey()); - if (CdmUtils.isBlank(languageUuidString)) { - return Language.getDefaultLanguage(); + if (dbPref == null || (dbPref != null && dbPref.isAllowOverride() && getOverrideForPreference(PreferencePredicate.TermLanguage.getKey()))) { + if (CdmUtils.isBlank(languageUuidString)) { + return Language.getDefaultLanguage(); + }else { + return Language.getLanguageFromUuid(UUID.fromString(languageUuidString)); + } + }else { + languageUuidString = dbPref.getValue(); } - UUID languageUuid = UUID.fromString(languageUuidString); - return (Language) CdmStore.getService(ITermService.class).load( - languageUuid); + Language language = (Language)CdmApplicationState.getTermProxy().load(languageUuid); + if (language != null){ + return language; + }else{ + MessagingUtils.noDataSourceWarningDialog(languageUuidString); + return null; + } } public static void setGlobalLanguage(Language language) { if(language != null) { - setStringValue(GLOBAL_LANGUAGE_UUID,language.getUuid().toString()); + setStringValue(PreferencePredicate.TermLanguage.getKey(),language.getUuid().toString()); CdmStore.setDefaultLanguage(language); + }else { + CdmStore.setDefaultLanguage(Language.getDefaultLanguage()); } - } public static Map getEditMarkerTypePreferences() { List markerTypes = CdmStore.getTermManager() .getPreferredTerms(MarkerType.class); - Map result = new HashMap(); + Map result = new HashMap<>(); for (MarkerType markerType : markerTypes) { String name = getMarkerTypeEditingPreferenceKey(markerType); Boolean value = getBooleanValue(name); - result.put(markerType, value); } @@ -1055,7 +1021,6 @@ public class PreferencesUtil implements IPreferenceKeys { setBooleanValue(name, markerTypeEditingMap.get(markerType)); } - } private static String getMarkerTypeEditingPreferenceKey( @@ -1085,26 +1050,29 @@ public class PreferencesUtil implements IPreferenceKeys { * @param setLanguage 0 is for german and 1 for english. * @throws IOException */ - public void writePropertyToConfigFile(int setLanguage) throws IOException { + public static void writePropertyToConfigFile(int setLanguage) throws IOException { File file = org.eclipse.core.runtime.preferences.ConfigurationScope.INSTANCE.getLocation().toFile(); //give warning to user if the directory has no write access if(file == null){ throw new IOException(); } - Properties properties = load(file.getAbsolutePath()+"/config.ini"); + Properties properties; + properties = load(file.getAbsolutePath()+"/config.ini"); switch(setLanguage){ case 0: properties.setProperty("osgi.nl", "de"); - setStringValue(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR, "de"); + setStringValue(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR, Language.uuidGerman.toString()); break; case 1: properties.setProperty("osgi.nl", "en"); - setStringValue(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR, "en"); + setStringValue(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR, Language.uuidEnglish.toString()); break; default: break; } save(file+"/config.ini", properties); + + } /** @@ -1114,7 +1082,7 @@ public class PreferencesUtil implements IPreferenceKeys { * @return * @throws IOException */ - private Properties load(String filename) throws IOException { + private static Properties load(String filename) throws IOException { FileInputStream in = new FileInputStream(filename); Properties prop = new Properties(); prop.load(in); @@ -1129,7 +1097,7 @@ public class PreferencesUtil implements IPreferenceKeys { * @param properties * @throws IOException */ - private void save(String filename, Properties properties) throws IOException{ + private static void save(String filename, Properties properties) throws IOException{ FileOutputStream fos = new FileOutputStream(filename); properties.store(fos, ""); fos.close(); @@ -1160,12 +1128,10 @@ public class PreferencesUtil implements IPreferenceKeys { /** * Retrieves a list of previously saved P2 repositories - * - * @return */ public static List getP2Repositories() { List p2Repos = new ArrayList(); - String p2ReposPref = getStringValue(P2_REPOSITORY_LIST); + String p2ReposPref = getStringValue(P2_REPOSITORY_LIST, true); if(p2ReposPref != null && !p2ReposPref.isEmpty()) { StringTokenizer p2ReposPrefST = new StringTokenizer(p2ReposPref,P2_REPOSITORIES_DELIM); @@ -1181,7 +1147,7 @@ public class PreferencesUtil implements IPreferenceKeys { continue; } boolean enabled = Boolean.parseBoolean(p2ReposStrST.nextToken()); - MetadataRepositoryElement mre = new MetadataRepositoryElement(null, uri, true); + MetadataRepositoryElement mre = new MetadataRepositoryElement(null, uri.getJavaUri(), true); mre.setNickname(nickname); mre.setEnabled(enabled); p2Repos.add(mre); @@ -1210,46 +1176,63 @@ public class PreferencesUtil implements IPreferenceKeys { } public static void setSortNodes(NavigatorOrderEnum nodesOrder) { - setStringValue(PreferencePredicate.TaxonNodeOrder.getKey(), nodesOrder.key); - + if (nodesOrder == null){ + setStringValue(PreferencePredicate.TaxonNodeOrder.getKey(), null); + }else{ + setStringValue(PreferencePredicate.TaxonNodeOrder.getKey(), nodesOrder.key); + } } public static NavigatorOrderEnum getSortNodes() { return NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey())); - } public static boolean isNodesSortedNaturally() { NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey())); return value.equals(NavigatorOrderEnum.NaturalOrder); - } public static boolean isNodesSortedByName() { NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey())); return value.equals(NavigatorOrderEnum.AlphabeticalOrder); - } public static boolean isNodesSortedByNameAndRank() { NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey())); return value.equals(NavigatorOrderEnum.RankAndNameOrder); - } + public static Comparator getNodeComparator() { + Comparator comparator; + NavigatorOrderEnum orderValue = NavigatorOrderEnum.RankAndNameOrder; + try{ + orderValue = PreferencesUtil.getSortNodes(); + }catch(IllegalArgumentException e){ + + } + + if (orderValue.equals(NavigatorOrderEnum.NaturalOrder)){ + comparator = new TaxonNodeDtoNaturalComparator(); + } else if (orderValue.equals(NavigatorOrderEnum.AlphabeticalOrder)){ + comparator = new TaxonNodeDtoByNameComparator(); + }else { + comparator = new TaxonNodeDtoByRankAndNameComparator(); + } + return comparator; + } + public static boolean isStoreNavigatorState() { return getBooleanValue(RESTORE_NAVIGATOR_STATE); - } public static void setStoreNavigatorState(boolean selection) { setBooleanValue(RESTORE_NAVIGATOR_STATE, selection); - } public static boolean isShowUpWidgetIsDisposedMessages() { return getBooleanValue(IS_SHOW_UP_WIDGET_IS_DISPOSED); } + public static void setShowUpWidgetIsDisposedMessages(boolean selection) { setBooleanValue(IS_SHOW_UP_WIDGET_IS_DISPOSED, selection); } @@ -1269,7 +1252,7 @@ public class PreferencesUtil implements IPreferenceKeys { }else{ return false; } - } + } public static boolean isShowSymbol2InChecklistEditor() { String area_display = getStringValue(PreferencePredicate.DisplayOfAreasInDistributionEditor.getKey()); if (area_display.equals(TermDisplayEnum.Symbol2.getKey())) { @@ -1277,17 +1260,25 @@ public class PreferencesUtil implements IPreferenceKeys { }else{ return false; } - } + } + public static void setAreaDisplayInChecklistEditor(String selection) { setStringValue(PreferencePredicate.DisplayOfAreasInDistributionEditor.getKey(), selection); } - public static void setOwnDescriptionForChecklistEditor(boolean selection) { - setBooleanValue(PreferencePredicate.OwnDescriptionForDistributionEditor.getKey(), selection); + public static void setDescriptionForChecklistEditor(DistributionDescription selection) { + setStringValue(PreferencePredicate.DescriptionForDistributionEditor.getKey(), selection.getKey()); } - public static boolean isOwnDescriptionForChecklistEditor() { - return getBooleanValue(PreferencePredicate.OwnDescriptionForDistributionEditor.getKey()); + public static DistributionDescription getDescriptionForChecklistEditor() { + String str = getStringValue(PreferencePredicate.DescriptionForDistributionEditor.getKey()); + DistributionDescription result = null; + try { + result = DistributionDescription.byKey(str); + }catch(IllegalArgumentException e) { + result = (DistributionDescription)PreferencePredicate.DescriptionForDistributionEditor.getDefaultValue(); + } + return result; } public static TermDisplayEnum displayAreaInChecklistEditor() { @@ -1309,20 +1300,21 @@ public class PreferencesUtil implements IPreferenceKeys { } return result; } + public static void setDisplayStatusInChecklistEditor(String selection) { setStringValue(PreferencePredicate.DisplayOfStatus.getKey(), selection); - } public static boolean isShowRankInChecklistEditor() { return getBooleanValue(PreferencePredicate.ShowRankInDistributionEditor.getKey()); } + public static void setShowRankInChecklistEditor(boolean selection) { setBooleanValue(PreferencePredicate.ShowRankInDistributionEditor.getKey(), selection); } public static NameDetailsConfigurator getPreferredNameDetailsConfiguration( boolean local) { - NameDetailsConfigurator config = new NameDetailsConfigurator(true); + NameDetailsConfigurator config = new NameDetailsConfigurator(); CdmPreferenceCache cache = CdmPreferenceCache.instance(); CdmPreference preference = null; String value; @@ -1342,81 +1334,45 @@ public class PreferencesUtil implements IPreferenceKeys { value = getStringValue(PreferencePredicate.NameDetailsView.getKey(), local); } if (value!= null){ - String [] sections = value.split(";"); - Map sectionMap = new HashMap(); - String[] sectionValues; - for (String sectionValue: sections){ + fillNameDetailsConfigurator(config, value); + + + }else { + return null; + } + return config; + } + + public static void fillNameDetailsConfigurator(NameDetailsConfigurator config, String value) { + String [] sections = value.split(";"); + Map sectionMap = new HashMap<>(); + String[] sectionValues; + for (String sectionValue: sections){ + if (sectionValue.contains(":")){ sectionValues = sectionValue.split(":"); sectionMap.put(sectionValues[0], Boolean.valueOf(sectionValues[1])); } - config.setSimpleDetailsViewActivated(getValue(sectionMap, "simpleViewActivated")); - config.setTaxonSectionActivated(getValue(sectionMap, "taxon")); - config.setSecDetailsActivated(getValue(sectionMap, "taxon.SecDetails")); - config.setSecEnabled(getValue(sectionMap, "taxon.SecEnabled")); - config.setLSIDActivated(getValue(sectionMap, "lsid")); - config.setNomenclaturalCodeActived(getValue(sectionMap, "nc")); - config.setAppendedPhraseActivated(getValue(sectionMap, "ap")); - config.setRankActivated(getValue(sectionMap, "rank")); - config.setNameCacheActivated(getValue(sectionMap, "nameCache")); - config.setAtomisedEpithetsActivated(getValue(sectionMap, "atomisedEpithets")); - config.setAuthorshipSectionActivated(getValue(sectionMap,"author")); - config.setAuthorCacheActivated(getValue(sectionMap, "authorCache")); - config.setNomenclaturalReferenceSectionActivated(sectionMap.get("nomRef")); - config.setNomenclaturalStatusSectionActivated(getValue(sectionMap, "nomStat")); - config.setProtologueActivated(getValue(sectionMap,"protologue")); - config.setTypeDesignationSectionActivated(getValue(sectionMap,"typeDes")); - config.setNameRelationsSectionActivated(getValue(sectionMap,"nameRelation")); - config.setHybridActivated(getValue(sectionMap,"hybrid")); - config.setNameApprobiationActivated(getValue(sectionMap, "nameApproviation")); } - return config; + for (Field field: config.getClass().getDeclaredFields()){ + try { + config.getClass().getDeclaredField(field.getName()).set(config, getValue(sectionMap, field.getName())); + } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException + | SecurityException e) { + logger.debug(e.getMessage()); + } + } } public static NameDetailsConfigurator getPreferredNameDetailsConfiguration() { - NameDetailsConfigurator config = new NameDetailsConfigurator(true); + NameDetailsConfigurator config = new NameDetailsConfigurator(); String value; value = getStringValue(PreferencePredicate.NameDetailsView.getKey(), false); if (value != null){ - String [] sections = value.split(";"); - Map sectionMap = new HashMap(); - String[] sectionValues; - for (String sectionValue: sections){ - sectionValues = sectionValue.split(":"); - sectionMap.put(sectionValues[0], Boolean.valueOf(sectionValues[1])); - } - - config.setSimpleDetailsViewActivated(getValue(sectionMap, "simpleViewActivated")); - - config.setTaxonSectionActivated(getValue(sectionMap, "taxon")); - - config.setSecDetailsActivated(getValue(sectionMap, "taxon.SecDetails")); - config.setSecEnabled(getValue(sectionMap, "taxon.SecEnabled")); - - config.setLSIDActivated(getValue(sectionMap, "lsid")); - - config.setNomenclaturalCodeActived(getValue(sectionMap, "nc")); - - config.setAppendedPhraseActivated(getValue(sectionMap, "ap")); - - config.setRankActivated(getValue(sectionMap, "rank")); - - config.setAtomisedEpithetsActivated(getValue(sectionMap, "atomisedEpithets")); - - config.setAuthorshipSectionActivated(getValue(sectionMap,"author")); - - config.setNomenclaturalReferenceSectionActivated(sectionMap.get("nomRef")); - - config.setNomenclaturalStatusSectionActivated(getValue(sectionMap, "nomStat")); - - config.setProtologueActivated(getValue(sectionMap,"protologue")); - - config.setTypeDesignationSectionActivated(getValue(sectionMap,"typeDes")); - - config.setNameRelationsSectionActivated(getValue(sectionMap,"nameRelation")); - - config.setHybridActivated(getValue(sectionMap,"hybrid")); + fillNameDetailsConfigurator(config, value); + }else { + return null; } return config; } @@ -1432,8 +1388,6 @@ public class PreferencesUtil implements IPreferenceKeys { else{ setStringValue(PreferencePredicate.NameDetailsView.getKey(), config.toString()); } - - } private static Boolean getValue(Map sectionMap, String string) { @@ -1442,7 +1396,45 @@ public class PreferencesUtil implements IPreferenceKeys { }else{ return true; } + } + + public static void extractSecundumForSubtreeConfiguratorFromPreferenceString(SecundumForSubtreeConfigurator config, + String configString) { + if(configString != null){ + String[] configArray = configString.split(";"); + + for (String configItem: configArray){ + String[] keyValue = configItem.split(":"); + String keyString = keyValue[0]; + String valueString = null; + if (keyValue.length>1){ + valueString = keyValue[1]; + if (keyValue.length>2){ + for (int index = 2; index< keyValue.length; index++){ + valueString += ":"+ keyValue[index]; + } + } + } + if (keyString.equals("includeAcceptedTaxa")){ + config.setIncludeAcceptedTaxa(Boolean.valueOf(valueString)); + }else if (keyString.equals("includeSynonyms")){ + config.setIncludeSynonyms(Boolean.valueOf(valueString)); + }else if (keyString.equals("includeSharedTaxa")){ + config.setIncludeSharedTaxa(Boolean.valueOf(valueString)); + }else if (keyString.equals("includeProParteSynonyms")){ + config.setIncludeProParteSynonyms(Boolean.valueOf(valueString)); + }else if (keyString.equals("includeMisapplications")){ + config.setIncludeMisapplications(Boolean.valueOf(valueString)); + }else if (keyString.equals("overwriteExisting")){ + config.setOverwriteExisting(Boolean.valueOf(valueString)); + }else if (keyString.equals("emptySecundumDetail")){ + config.setEmptySecundumDetail(Boolean.valueOf(valueString)); + }else{ + logger.debug("This key of the set secundum configurator needs to be added to the transformer: " + keyString); + } + } + } } public static Abcd206ImportConfigurator getDBAbcdImportConfigurationPreference() { @@ -1467,7 +1459,7 @@ public class PreferencesUtil implements IPreferenceKeys { public static void extractAbcdConfiguratorFromPreferenceString(Abcd206ImportConfigurator config, String configString) { - if(configString!=null){ + if(configString != null){ String[] configArray = configString.split(";"); for (String configItem: configArray){ @@ -1485,8 +1477,10 @@ public class PreferencesUtil implements IPreferenceKeys { } if (keyString.equals("ignoreImportOfExistingSpecimen")){ config.setIgnoreImportOfExistingSpecimen(Boolean.valueOf(valueString)); - }else if (keyString.equals("addIndividualsAssociationsSuchAsSpecimenAndObservations")){ - config.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(Boolean.valueOf(valueString)); + }else if (keyString.equals("addIndividualsAssociations")){ + config.setAddIndividualsAssociations(Boolean.valueOf(valueString)); + }else if (keyString.equals("addDeterminations")){ + config.setAddDeterminations(Boolean.valueOf(valueString)); }else if (keyString.equals("reuseExistingTaxaWhenPossible")){ config.setReuseExistingTaxaWhenPossible(Boolean.valueOf(valueString)); }else if (keyString.equals("ignoreAuthorship")){ @@ -1519,29 +1513,72 @@ public class PreferencesUtil implements IPreferenceKeys { config.setRemoveCountryFromLocalityText(Boolean.valueOf(valueString)); }else if (keyString.equals("getSiblings")){ config.setGetSiblings(Boolean.valueOf(valueString)); + }else if (keyString.equals("classificationUUID")){ + if (valueString != null){ + config.setClassificationUuid(UUID.fromString(valueString)); + } + }else if (keyString.equals("classificationName")){ + config.setClassificationName(valueString); }else if (keyString.equals("dnaSource")){ try{ - config.setDnaSoure(URI.create(valueString)); + if (StringUtils.isNotBlank(valueString)){ + config.setDnaSoure(URI.create(valueString)); + } }catch(Exception e){ config.setDnaSoure(null); } }else{ logger.debug("This key of the abcd configurator needs to be added to the transformer: " + keyString); } - - } } } public static Abcd206ImportConfigurator getLocalAbcdImportConfigurator(){ + return getLocalAbcdImportConfigurator(true); + } + + public static Abcd206ImportConfigurator getLocalAbcdImportConfigurator(boolean skipCheckOverride){ Abcd206ImportConfigurator config = Abcd206ImportConfigurator.NewInstance(null,null); - String configString = getStringValue(PreferencePredicate.AbcdImportConfig.getKey(), true); - extractAbcdConfiguratorFromPreferenceString(config, configString); + CdmPreference pref = CdmPreferenceCache.instance().get(PreferencePredicate.AbcdImportConfig.getKey()); + if (pref == null || pref.isAllowOverride()){ + String configString = PreferencesUtil.getStringValue(PreferencePredicate.AbcdImportConfig.getKey()); + if (StringUtils.isBlank(configString)){ + configString = getStringValue(PreferencePredicate.AbcdImportConfig.getKey(), skipCheckOverride); + extractAbcdConfiguratorFromPreferenceString(config, configString); + if (config.getNomenclaturalCode() == null){ + config.setNomenclaturalCode(getPreferredNomenclaturalCode()); + } + }else{ + config = Abcd206ImportConfigurator.NewInstance(null, null); + PreferencesUtil.extractAbcdConfiguratorFromPreferenceString(config, configString); + } + }else{ + extractAbcdConfiguratorFromPreferenceString(config, pref.getValue()); + } + return config; } + public static Abcd206ImportConfigurator getLastUsedAbcdImportConfigurator(){ + Abcd206ImportConfigurator config = Abcd206ImportConfigurator.NewInstance(null,null); + + String configString = PreferencesUtil.getStringValue(IPreferenceKeys.LAST_USED_ABCD_CONFIG, true); + if (configString != null){ + extractAbcdConfiguratorFromPreferenceString(config, configString); + if (config != null){ + if (config.getNomenclaturalCode() == null){ + config.setNomenclaturalCode(getPreferredNomenclaturalCode()); + } + } + }else{ + config = PreferencesUtil.getLocalAbcdImportConfigurator(false); + } + + return config; + } + public static void updateAbcdImportConfigurationPreference() { CdmPreferenceCache cache = CdmPreferenceCache.instance(); @@ -1549,19 +1586,16 @@ public class PreferencesUtil implements IPreferenceKeys { if (!getBooleanValue(prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey())) || !pref.isAllowOverride()){ resetToDBPreferenceAbcdCOnfigurator(); - } } public static void resetToDBPreferenceAbcdCOnfigurator(){ Abcd206ImportConfigurator config = getDBAbcdImportConfigurationPreference(); setStringValue(PreferencePredicate.AbcdImportConfig.getKey(), config.toString()); - } public static boolean isSortTaxaByRankAndName() { - - return getBooleanValue(IPreferenceKeys.SORT_TAXA_BY_RANK_AND_NAME); + return getBooleanValue(PreferencePredicate.SortTaxaByRankAndName.getKey()); } public static TermOrder getSortNamedAreasInDistributionEditor() { @@ -1576,19 +1610,18 @@ public class PreferencesUtil implements IPreferenceKeys { public static void setSortNamedAreasInDistributionEditor(String isSortByVocabularyOrder) { setStringValue(PreferencePredicate.AreasSortedInDistributionEditor.getKey(), isSortByVocabularyOrder); - } public static void setLastSelectedReference( List lastSelectedReferences) { - setStringValue(PreferencesUtil.LAST_SELECTED_REFERENCES, lastSelectedReferences.toString()); + setStringValue(IPreferenceKeys.LAST_SELECTED_REFERENCES, lastSelectedReferences.toString()); } public static List getLastSelectedReferences() { //IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore(); - String lastSelected = getStringValue(PreferencesUtil.LAST_SELECTED_REFERENCES); + String lastSelected = getStringValue(IPreferenceKeys.LAST_SELECTED_REFERENCES, true); List result = new ArrayList<>(); if (!StringUtils.isBlank(lastSelected)){ Collections.addAll(result, lastSelected.substring(1,lastSelected.length()-1).split(", ")); @@ -1600,7 +1633,6 @@ public class PreferencesUtil implements IPreferenceKeys { String saveCheckedElements, String saveGrayedElements, boolean local) { if (local){ setStringValue(PreferencePredicate.AvailableDistributionAreaTerms.getKey(), saveCheckedElements); - } else{ CdmPreference preference = null; @@ -1615,17 +1647,14 @@ public class PreferencesUtil implements IPreferenceKeys { saveCheckedElements); preference = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionAreaTerms, saveCheckedElements); setPreferenceToDB(preference); - } } else{ preference = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionAreaTerms, saveCheckedElements); setPreferenceToDB(preference); setStringValue(PreferencePredicate.AvailableDistributionAreaTerms.getKey(), saveCheckedElements); - } } - } public static void setPreferredVocabulariesForDistributionEditor(String saveCheckedElements, @@ -1635,7 +1664,6 @@ public class PreferencesUtil implements IPreferenceKeys { setBooleanValue(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey()), isOverride); } else{ - ICdmRepository controller; CdmPreference preference = null; if (saveCheckedElements == null){ @@ -1656,7 +1684,6 @@ public class PreferencesUtil implements IPreferenceKeys { setPreferenceToDB(preference); setStringValue(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey(), saveCheckedElements); - } } } @@ -1675,17 +1702,24 @@ public class PreferencesUtil implements IPreferenceKeys { } else{ return preference.getValue(); } - } } - public static List createUUIDListFromStringPref(String prefKey) { - String prefValue = PreferencesUtil.getStringValue(prefKey); + public static List createUUIDListFromStringPref(String prefKey, boolean local) { + if (prefKey == null){ + return null; + } + String prefValue = PreferencesUtil.getStringValue(prefKey, local); if (prefValue == null){ return null; } + List uuidList = createUuidList(prefValue); + return uuidList; + } + + public static List createUuidList(String prefValue) { String[] stringArray = prefValue.split(";"); - List uuidList = new ArrayList(); + List uuidList = new ArrayList<>(); for (String uuid: stringArray){ if (!StringUtils.isBlank(uuid)){ uuidList.add(UUID.fromString(uuid)); @@ -1695,55 +1729,32 @@ public class PreferencesUtil implements IPreferenceKeys { } public static boolean getFilterCommonNameReferences(){ - Boolean result = getBooleanValue(PreferencesUtil.FILTER_COMMON_NAME_REFERENCES); - if (result == null){ - return false; - } - return result; + return getBooleanValue(PreferencePredicate.CommonNameReferencesWithMarker.getKey()); } public static void updateDBPreferences() { - CdmPreferenceCache cache = CdmPreferenceCache.instance(); cache.getAllTaxEditorDBPreferences(); - //ABCD Configurator - - //updateAbcdImportConfigurationPreference(); - //Name Details NameDetailsConfigurator config = getPreferredNameDetailsConfiguration(false); - // if (config != null ){ - // if (!getBooleanValue(OVERRIDE_NAME_DETAILS) || !getBooleanValue(ALLOW_OVERRIDE_NAME_DETAILS)){ - // setPreferredNameDetailsConfiguration(config, false); - // } - // } - } public static void setPreferencesToDB(List preferences) { ICdmRepository controller; - //try{ - if(CdmStore.isActive()){ - controller = CdmStore.getCurrentApplicationConfiguration(); - for (CdmPreference preference: preferences){ - if (preference.getValue() == null && preference.isAllowOverride()){ - controller.getPreferenceService().remove(preference.getKey()); - - }else{ - controller.getPreferenceService().set(preference); - - } - + if(CdmStore.isActive()){ + controller = CdmStore.getCurrentApplicationConfiguration(); + for (CdmPreference preference: preferences){ + if (preference.getValue() == null && preference.isAllowOverride()){ + controller.getPreferenceService().remove(preference.getKey()); + }else{ + controller.getPreferenceService().set(preference); } - CdmPreferenceCache.instance().getAllTaxEditorDBPreferences(); - } - /*}catch(Exception e){ - e.printStackTrace(); - }*/ + CdmPreferenceCache.instance().getAllTaxEditorDBPreferences(); + } } /** @@ -1755,42 +1766,37 @@ public class PreferencesUtil implements IPreferenceKeys { return getPreferenceStore().contains(prefKey(prefKey)); } - /** - * - */ - public static TermTree getPreferredFeatureTreeForNameDescription() { - if(preferredNameFeatureTree != null){ + public static TermTree getPreferredFeatureTreeForNameDescription(boolean createNew) { + if(preferredNameFeatureTree != null && !createNew){ return preferredNameFeatureTree; } createPreferredFeatureTreeForNameDescription(); return preferredNameFeatureTree; - } public static void createPreferredFeatureTreeForNameDescription() { CdmPreferenceCache cache = CdmPreferenceCache.instance(); CdmPreference pref = cache.get(PreferencePredicate.NameFeatures.getKey()); - List terms; - boolean override = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.NameFeatures.getKey())); - if (pref != null ){ - List uuids = PreferencesUtil.createUUIDListFromStringPref(pref.getValue()); + List terms = new ArrayList<>(); + boolean override = PreferencesUtil.getOverrideForPreference(PreferencePredicate.NameFeatures.getKey()); + + List uuids = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.NameFeatures.getKey(), false); + if (uuids != null && !uuids.isEmpty()){ terms = CdmStore.getTermManager().getTerms(uuids, Feature.class); - }else if (override){ - terms = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid())); - }else{ - terms = new ArrayList(); - terms.addAll(TermStore.getTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null)); } - terms.remove(Feature.PROTOLOGUE()); - preferredNameFeatureTree = TermTree.NewInstance(terms); - + if (terms.isEmpty()){ + terms.addAll(TermStore.getTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null)); + } + terms.remove(Feature.PROTOLOGUE()); + if (terms.isEmpty()){ + preferredNameFeatureTree = TermEditorInput.getDefaultNameFeatureTree(); + }else{ + preferredNameFeatureTree = TermTree.NewFeatureInstance(terms); + } } - /** - * @param prefsToDelete - */ public static void removeFromDB(List prefsToDelete) { ICdmRepository controller; //try{ @@ -1801,9 +1807,121 @@ public class PreferencesUtil implements IPreferenceKeys { } CdmPreferenceCache.instance().getAllTaxEditorDBPreferences(); } + } + public static void removeFromDB(CdmPreference prefToDelete) { + ICdmRepository controller; + + if(CdmStore.isActive()){ + controller = CdmStore.getCurrentApplicationConfiguration(); + controller.getPreferenceService().remove(prefToDelete.getKey()); + + CdmPreferenceCache.instance().getAllTaxEditorDBPreferences(); + } + } + + public static TermTree getPreferredFeatureTreeForTaxonDescription(boolean createNew) { + if(preferredTaxonFeatureTree != null && !createNew){ + return preferredTaxonFeatureTree; + } + createPreferredFeatureTreeForTaxonDescription(); + return preferredTaxonFeatureTree; } + public static void createPreferredFeatureTreeForTaxonDescription() { + CdmPreferenceCache cache = CdmPreferenceCache.instance(); + CdmPreference pref = cache.get(PreferencePredicate.TaxonFeatures.getKey()); + List terms = null; + boolean override = PreferencesUtil.getOverrideForPreference(PreferencePredicate.TaxonFeatures.getKey()); + List uuids = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.TaxonFeatures.getKey(), false); + if (uuids != null && !uuids.isEmpty()){ + terms = CdmStore.getTermManager().getTerms(uuids, Feature.class); + } + if (terms == null || terms.isEmpty()){ + terms= CdmStore.getTermManager().getPreferredTerms(TermType.Feature); + TermVocabulary nameVocabulary = CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()); + Set nameFeature = nameVocabulary.getTerms(); + terms.removeAll(nameFeature); + + } + + if (terms.isEmpty()){ + preferredTaxonFeatureTree = TermEditorInput.getDefaultFeatureTree(); + }else{ + preferredTaxonFeatureTree = TermTree.NewFeatureInstance(terms); + } + } + + public static void setLastSelectedBiocaseProvider(String lastAccessPoint) { + setStringValue(LAST_USED_BIOCASE_PROVIDER, lastAccessPoint); + } + + /** + * @return + */ + public static boolean getLocalActive() { + // TODO: this needs to be adapted!!! + return true; + } + + /** + * @return + */ + public static boolean showGfbioMetaData() { + //TODO: needs to be adapted!!! + return false; + } + + public static SecReferenceHandlingEnum getSecReferenceHandlingPreference(){ + + String defaultBehaviour = getStringValue(PreferencePredicate.DefaultBehaviourForSecundum.getKey()); + SecReferenceHandlingEnum handling = null; + try{ + handling = SecReferenceHandlingEnum.valueOf(defaultBehaviour); + }catch(IllegalArgumentException e){ + handling = (SecReferenceHandlingEnum)PreferencePredicate.DefaultBehaviourForSecundum.getDefaultValue(); + } + return handling; + + } + + public static SecReferenceHandlingSwapEnum getSecReferenceHandlingSwapPreference(){ + String defaultBehaviour = getStringValue(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey()); + SecReferenceHandlingSwapEnum handling = null; + try{ + handling = SecReferenceHandlingSwapEnum.valueOf(defaultBehaviour); + }catch (IllegalArgumentException e){ + handling = (SecReferenceHandlingSwapEnum)PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getDefaultValue(); + } + return handling; + + } + + public static EnabledComputedDescription getComputedDesciptionHandlingPreference(){ + String defaultBehaviour= getStringValue(PreferencePredicate.EnableComputedDescription.getKey()); + EnabledComputedDescription computedDescriptionsEnabled = (EnabledComputedDescription)PreferencePredicate.EnableComputedDescription.getDefaultValue(); + if (StringUtils.isNotBlank(defaultBehaviour)){ + try{ + computedDescriptionsEnabled = EnabledComputedDescription.byKey(defaultBehaviour); + }catch(IllegalArgumentException e){ + //do nothing, keep default value; + } + } + return computedDescriptionsEnabled; + + } + + public static boolean isComputedDesciptionHandlingDisabled(){ + String defaultBehaviour= getStringValue(PreferencePredicate.EnableComputedDescription.getKey()); + EnabledComputedDescription computedDescriptionsEnabled = null; + try{ + computedDescriptionsEnabled = EnabledComputedDescription.byKey(defaultBehaviour); + }catch (IllegalArgumentException e){ + computedDescriptionsEnabled = (EnabledComputedDescription)PreferencePredicate.EnableComputedDescription.getDefaultValue(); + } + return computedDescriptionsEnabled.equals(EnabledComputedDescription.Disabled); + + } }