9c46e6ae04e8ac9d4e7a875513c40ac9f77e7dd7
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / PreferencesUtil.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.taxeditor.preference;
11
12 import java.io.File;
13 import java.io.FileInputStream;
14 import java.io.FileOutputStream;
15 import java.io.IOException;
16 import java.net.URI;
17 import java.net.URISyntaxException;
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24 import java.util.Properties;
25 import java.util.Set;
26 import java.util.StringTokenizer;
27 import java.util.UUID;
28
29 import org.apache.commons.lang.StringUtils;
30 import org.apache.log4j.Logger;
31 import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement;
32 import org.eclipse.jface.preference.IPreferenceStore;
33 import org.eclipse.jface.window.Window;
34 import org.eclipse.swt.widgets.Composite;
35 import org.eclipse.swt.widgets.Control;
36 import org.eclipse.swt.widgets.Shell;
37 import org.eclipse.ui.PlatformUI;
38
39 import eu.etaxonomy.cdm.api.application.ICdmRepository;
40 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
41 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
42 import eu.etaxonomy.cdm.api.service.ITermService;
43 import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;
44 import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
45 import eu.etaxonomy.cdm.common.CdmUtils;
46 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
47 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
48 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
49 import eu.etaxonomy.cdm.model.common.ICdmBase;
50 import eu.etaxonomy.cdm.model.common.IDefinedTerm;
51 import eu.etaxonomy.cdm.model.common.ISimpleTerm;
52 import eu.etaxonomy.cdm.model.common.Language;
53 import eu.etaxonomy.cdm.model.common.MarkerType;
54 import eu.etaxonomy.cdm.model.common.TermBase;
55 import eu.etaxonomy.cdm.model.common.TermType;
56 import eu.etaxonomy.cdm.model.description.FeatureTree;
57 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
58 import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
59 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
60 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
61 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
62 import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
63 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
64 import eu.etaxonomy.cdm.strategy.match.MatchException;
65 import eu.etaxonomy.cdm.strategy.match.MatchMode;
66 import eu.etaxonomy.taxeditor.model.AbstractUtility;
67 import eu.etaxonomy.taxeditor.model.MessagingUtils;
68 import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
69 import eu.etaxonomy.taxeditor.store.CdmStore;
70 import eu.etaxonomy.taxeditor.store.TermStore;
71 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
72 import eu.etaxonomy.taxeditor.ui.dialog.DefaultLanguageDialog;
73
74 /**
75 * <p>
76 * PreferencesUtil class.
77 * </p>
78 *
79 * @author p.ciardelli
80 * @author n.hoffmann
81 * @created 05.12.2008
82 * @version 1.0
83 */
84 public class PreferencesUtil implements IPreferenceKeys {
85
86 /**
87 *
88 */
89 public static final String PREFERRED_TERMS_CHANGE = "preferred_terms";
90
91 public static final String P2_REPOSITORIES_DELIM = ",";
92 public static final String P2_REPOSITORY_FIELDS_DELIM = ";";
93
94 private final static Logger logger = Logger.getLogger(PreferencesUtil.class);
95
96
97
98 /**
99 * <p>
100 * getPreferenceStore
101 * </p>
102 *
103 * @return a {@link org.eclipse.jface.preference.IPreferenceStore} object.
104 */
105 public static IPreferenceStore getPreferenceStore() {
106 return TaxeditorStorePlugin.getDefault().getPreferenceStore();
107 }
108
109 /**
110 * <p>
111 * setPreferredNomenclaturalCode
112 * </p>
113 *
114 * @param preferredCode
115 * a {@link eu.etaxonomy.cdm.model.name.NomenclaturalCode}
116 * object.
117 */
118 public static CdmPreference setPreferredNomenclaturalCode(
119 String preferenceKey, boolean local) {
120 if (local){
121 getPreferenceStore().setValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
122 preferenceKey);
123 }
124 else{
125 ICdmRepository controller;
126 controller = CdmStore.getCurrentApplicationConfiguration();
127 if (controller == null){
128 return null;
129 }
130 PrefKey key = null;
131 try{
132 key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
133 }catch (Exception e){
134 System.out.println(e.getStackTrace());
135 }
136 CdmPreference preference = null;
137
138 if (preferenceKey == null){
139 preference = controller.getPreferenceService().find(key);
140 if (preference == null){
141 return null;
142 } else{
143 // int index = StringUtils.lastIndexOf(preference.getValue(), ".");
144 // UUID uuid = UUID.fromString(preference.getValue().substring(index +1, preference.getValue().length()));
145 // preferredCode = NomenclaturalCode.getByUuid(uuid);
146
147 getPreferenceStore().setValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
148 preferenceKey);
149 getPreferenceStore().setValue(ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY,preference.isAllowOverride());
150 return preference;
151 }
152 } else{
153 preference = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, preferenceKey);
154 controller.getPreferenceService().set(preference);
155
156 }
157 }
158 return null;
159
160
161
162 }
163
164 public static NomenclaturalCode getPreferredNomenclaturalCode(){
165 if (getPreferenceStore().getBoolean(OVERRIDE_NOMENCLATURAL_CODE_KEY)) {
166 return getPreferredNomenclaturalCode(true);
167 } else{
168 return getPreferredNomenclaturalCode(false);
169 }
170 }
171
172 /**
173 * <p>
174 * getPreferredNomenclaturalCode
175 * </p>
176 *
177 * @return a {@link eu.etaxonomy.cdm.model.name.NomenclaturalCode} object.
178 */
179 public static NomenclaturalCode getPreferredNomenclaturalCode(boolean useLocal) {
180
181 CdmPreference pref = null;
182 if (!useLocal){
183 pref = getPreferenceFromDB(PreferencePredicate.NomenclaturalCode);
184 }
185
186 String preferredCode;
187 if(pref == null){
188 preferredCode = getPreferenceStore().getString(
189 PREFERRED_NOMENCLATURAL_CODE_KEY);
190
191 }else{
192 preferredCode = pref.getValue();
193 }
194
195 return getPreferredNomenclaturalCode(preferredCode);
196
197 }
198
199 /**
200 * <p>
201 * getPreferredNomenclaturalCode
202 * </p>
203 *
204 * @return a {@link eu.etaxonomy.cdm.model.name.NomenclaturalCode} object.
205 */
206 public static NomenclaturalCode getPreferredNomenclaturalCode(String preferenceKeyNomenclaturalCode) {
207
208 for (NomenclaturalCode code : NomenclaturalCodeHelper.getAllCodes()) {
209 if (getPreferenceKey(code).equals(preferenceKeyNomenclaturalCode)) {
210 return code;
211 }
212 }
213 return null;
214 }
215
216 public static boolean isShowTaxonAssociations(){
217 if (getPreferenceStore().getBoolean(SHOW_TAXON_ASSOCIATIONS_OVERRIDE) && getPreferenceStore().getBoolean(SHOW_TAXON_ASSOCIATIONS_ALLOW_OVERRIDE)) {
218 return getPreferenceStore().getBoolean(SHOW_TAXON_ASSOCIATIONS);
219 } else{
220 CdmPreference pref = getPreferenceFromDB(PreferencePredicate.ShowTaxonAssociations);
221
222 return pref!=null?Boolean.valueOf(pref.getValue()):false;
223 }
224 }
225
226 public static boolean isShowLifeForm(){
227 if (getPreferenceStore().getBoolean(SHOW_LIFE_FORM_OVERRIDE) && getPreferenceStore().getBoolean(SHOW_LIFE_FORM_ALLOW_OVERRIDE)) {
228 return getPreferenceStore().getBoolean(SHOW_LIFE_FORM);
229 } else{
230 CdmPreference pref = getPreferenceFromDB(PreferencePredicate.ShowLifeForm);
231
232 return pref!=null?Boolean.valueOf(pref.getValue()):false;
233 }
234 }
235
236 public static boolean isDeterminationOnlyForFieldUnits(){
237 if (getPreferenceStore().getBoolean(DETERMINATION_ONLY_FOR_FIELD_UNITS_OVERRIDE) && getPreferenceStore().getBoolean(DETERMINATIONS_ONLY_FOR_FIELDUNITS_ALLOW_OVERRIDE)) {
238 return getPreferenceStore().getBoolean(DETERMINATION_ONLY_FOR_FIELD_UNITS);
239 } else{
240 CdmPreference pref = getPreferenceFromDB(PreferencePredicate.DeterminationOnlyForFieldUnits);
241
242 return pref!=null?Boolean.valueOf(pref.getValue()):false;
243 }
244 }
245
246 public static boolean isCollectingAreaInGeneralSection(){
247 if (getPreferenceStore().getBoolean(SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION_OVERRIDE) && getPreferenceStore().getBoolean(SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION_ALLOW_OVERRIDE)) {
248 return getPreferenceStore().getBoolean(SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION);
249 } else{
250 CdmPreference pref = getPreferenceFromDB(PreferencePredicate.ShowCollectingAreasInGeneralSection);
251
252 return pref!=null?Boolean.valueOf(pref.getValue()):false;
253 }
254 }
255
256 public static boolean isShowSimpleDetailsView(){
257 if (getPreferenceStore().getBoolean(OVERRIDE_NAME_DETAILS) && getPreferenceStore().getBoolean(ALLOW_OVERRIDE_NAME_DETAILS)) {
258 return getPreferenceStore().getBoolean(SHOW_SIMPLE_NAME_DETAILS_SECTION);
259 } else{
260 CdmPreference pref = getPreferenceFromDB(PreferencePredicate.NameDetailsView);
261
262 return pref!=null?Boolean.valueOf(pref.getValue()):false;
263 }
264 }
265
266
267
268 public static CdmPreference getPreferenceFromDB(PreferencePredicate predicate){
269 ICdmRepository controller;
270 CdmPreference pref = null;
271
272 try{
273 if(CdmStore.isActive()){
274 controller = CdmStore.getCurrentApplicationConfiguration();
275 PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), predicate);
276 pref = controller.getPreferenceService().find(key);
277 }
278 }catch(Exception e){
279 e.printStackTrace();
280 }
281
282 return pref;
283
284 }
285
286 public static void setPreferenceToDB(CdmPreference preference){
287 ICdmRepository controller;
288 try{
289 if(CdmStore.isActive()){
290 controller = CdmStore.getCurrentApplicationConfiguration();
291 controller.getPreferenceService().set(preference);
292 }
293 }catch(Exception e){
294 e.printStackTrace();
295 }
296
297 }
298
299
300
301 public static String getPreferredDefaultLangugae(){
302 String preferredLanguage = getPreferenceStore().getString(DEFAULT_LANGUAGE_EDITOR);
303 if(StringUtils.isNotEmpty(preferredLanguage) && StringUtils.isNotBlank(preferredLanguage)){
304 return preferredLanguage;
305 }
306 return null;
307 }
308
309 public static boolean isShowMediaPreview(){
310 boolean isShowMediaPreview = getPreferenceStore().getBoolean(SHOW_MEDIA_PREVIEW);
311 return isShowMediaPreview;
312 }
313
314 /**
315 * Get the match strategy for the given class that was stored in preferences
316 * or the default strategy if it was not stored in preferences
317 *
318 * @param clazz
319 * a {@link java.lang.Class} object.
320 * @return a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy} object.
321 */
322 public static IMatchStrategy getMatchStrategy(Class clazz) {
323 String className = clazz.getName();
324 if (getPreferenceStore().getBoolean(MATCH_STRATEGY_PREFIX + className)) {
325 IMatchStrategy matchStrategy = getDefaultMatchStrategy(clazz);
326
327 for (String fieldName : matchStrategy.getMatchFieldPropertyNames()) {
328 String matchModeName = getPreferenceStore().getString(
329 getMatchStrategyFieldName(className, fieldName));
330 MatchMode matchMode = MatchMode.valueOf(matchModeName);
331 try {
332 matchStrategy.setMatchMode(fieldName, matchMode);
333 } catch (MatchException e) {
334 MessagingUtils.error(PreferencesUtil.class, e);
335 throw new RuntimeException(e);
336 }
337 }
338
339 return matchStrategy;
340 }
341 return getDefaultMatchStrategy(clazz);
342 }
343
344 /**
345 * Stores a matchStrategy into the preference store.
346 *
347 * @param matchStrategy
348 * a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy}
349 * object.
350 */
351 public static void setMatchStrategy(IMatchStrategy matchStrategy) {
352 String className = matchStrategy.getMatchClass().getName();
353 getPreferenceStore().setValue(MATCH_STRATEGY_PREFIX + className, true);
354
355 Set<String> matchFields = matchStrategy.getMatchFieldPropertyNames();
356
357 for (String fieldName : matchFields) {
358 getPreferenceStore().setValue(
359 getMatchStrategyFieldName(className, fieldName),
360 matchStrategy.getMatchMode(fieldName).name());
361 }
362 }
363
364 /**
365 * Helper method to create the preference property for a match field.
366 *
367 * @param className
368 * @param fieldName
369 * @return
370 */
371 private static String getMatchStrategyFieldName(String className,
372 String fieldName) {
373 return MATCH_STRATEGY_PREFIX + className + "." + fieldName;
374 }
375
376 /**
377 * Returns the default match strategy for a given class.
378 *
379 * @param clazz
380 * a {@link java.lang.Class} object.
381 * @return a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy} object.
382 */
383 public static IMatchStrategy getDefaultMatchStrategy(Class clazz) {
384 return DefaultMatchStrategy.NewInstance(clazz);
385 }
386
387 /**
388 * <p>
389 * getDateFormatPattern
390 * </p>
391 *
392 * @return a {@link java.lang.String} object.
393 */
394 public static String getDateFormatPattern() {
395 // TODO make this configurable in properties
396 String pattern = "Y-M-d H:m";
397 return pattern;
398 }
399
400 /**
401 * <p>
402 * addTermToPreferredTerms
403 * </p>
404 *
405 * @param term
406 * a T object.
407 * @param <T>
408 * a T object.
409 */
410 public static <T extends TermBase> void addTermToPreferredTerms(T term) {
411
412 // VocabularyEnum vocabulary =
413 // VocabularyEnum.getVocabularyEnum(term.getClass());
414 //
415 // getPreferenceStore().setValue(getPreferenceKey(term),
416 // VocabularyStore.getTermVocabulary(vocabulary).getTerms().contains(term));
417 //
418 // firePreferencesChanged(term.getClass());
419 }
420
421 /**
422 * Construct a unique key using the CdmBase object's uuid
423 *
424 * @param cdmBase
425 * @return
426 */
427 private static String getPreferenceKey(ICdmBase cdmBase) {
428 cdmBase = HibernateProxyHelper.deproxy(cdmBase);
429
430 String key = cdmBase.getClass().getName().concat(".")
431 .concat(cdmBase.getUuid().toString());
432 if (key.contains("javassist")) {
433 MessagingUtils.info("proxy");
434 }
435 return key;
436 }
437
438 /**
439 * Construct a unique key using the CdmBase object's uuid
440 *
441 * @param cdmBase
442 * @return
443 */
444 public static String getPreferenceKey(ISimpleTerm simpleTerm) {
445 simpleTerm = HibernateProxyHelper.deproxy(simpleTerm);
446 String key = simpleTerm.getClass().getName().concat(".")
447 .concat(simpleTerm.getUuid().toString());
448 if (key.contains("javassist")) {
449 MessagingUtils.warn(PreferencesUtil.class,
450 "Trying to persist a preference based on a proxy class.");
451 }
452 return key;
453 }
454
455
456
457 /**
458 * Construct a unique key using the CdmBase object's uuid
459 *
460 * @param cdmBase
461 * @return
462 */
463 public static String getPreferenceKey(IDefinedTerm definedTerm) {
464 definedTerm = HibernateProxyHelper.deproxy(definedTerm);
465 String key = definedTerm.getClass().getName().concat(".")
466 .concat(definedTerm.getUuid().toString());
467 if (key.contains("javassist")) {
468 MessagingUtils.warn(PreferencesUtil.class,
469 "Trying to persist a preference based on a proxy class.");
470 }
471 return key;
472 }
473
474 /**
475 * Retrieves search preferences from the preference store
476 *
477 * @return an {@link ITaxonServiceConfigurator} to pass to search methods
478 */
479 public static IFindTaxaAndNamesConfigurator getSearchConfigurator() {
480 IFindTaxaAndNamesConfigurator configurator = initializeSearchConfigurator();
481
482 configurator.setDoTaxa(getPreferenceStore().getBoolean(
483 TAXON_SERVICE_CONFIGURATOR_TAXA));
484 configurator.setDoSynonyms(getPreferenceStore().getBoolean(
485 TAXON_SERVICE_CONFIGURATOR_SYNONYMS));
486 configurator.setDoNamesWithoutTaxa(getPreferenceStore().getBoolean(
487 TAXON_SERVICE_CONFIGURATOR_NAMES));
488 configurator.setDoTaxaByCommonNames(getPreferenceStore().getBoolean(
489 TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES));
490 //configurator.setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.valueOf(getPreferenceStore().getString(TAXON_SERVICE_CONFIGURATOR_MATCH_MODE)));
491
492 return configurator;
493 }
494
495 /**
496 * create new preferences, setting all search options to true
497 *
498 * @return a
499 * {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator}
500 * object.
501 */
502 public static IFindTaxaAndNamesConfigurator initializeSearchConfigurator() {
503 IFindTaxaAndNamesConfigurator configurator = FindTaxaAndNamesConfiguratorImpl.NewInstance();
504
505 configurator.setDoTaxa(true);
506 configurator.setDoSynonyms(true);
507 configurator.setDoNamesWithoutTaxa(true);
508 configurator.setDoTaxaByCommonNames(true);
509
510 configurator.setTaxonPropertyPath(Arrays.asList("$", "titleCache",
511 "name", "name.$", "relationsFromThisTaxon.$"));
512
513 configurator.setSynonymPropertyPath(Arrays.asList("$", "titleCache",
514 "name", "name.$", "synonyms.relatedTo.*"));
515
516 // DEFAULT VALUES
517 // match mode is a simple like, actually all other match modes are kind
518 // of bogus
519 configurator
520 .setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.ANYWHERE);
521 // we set page number and size here as this should always be unlimited
522 configurator.setPageNumber(0);
523 // TODO currently limit results to 10000
524 configurator.setPageSize(10000);
525
526 return configurator;
527 }
528
529 /**
530 * Store search preferences
531 *
532 * @param configurator
533 * a
534 * {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator}
535 * object.
536 */
537 public static void setSearchConfigurator(
538 IFindTaxaAndNamesConfigurator configurator) {
539 getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_TAXA,
540 configurator.isDoTaxa());
541 getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_SYNONYMS,
542 configurator.isDoSynonyms());
543 getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_NAMES,
544 configurator.isDoNamesWithoutTaxa());
545 getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES,
546 configurator.isDoTaxaByCommonNames());
547 }
548
549 /**
550 * <p>
551 * firePreferencesChanged
552 * </p>
553 *
554 * @param clazz
555 * a {@link java.lang.Class} object.
556 */
557 public static void firePreferencesChanged(Class clazz) {
558 getPreferenceStore().firePropertyChangeEvent(PREFERRED_TERMS_CHANGE,
559 null, clazz);
560 }
561
562 /**
563 * Set default values for preferences
564 */
565 public static void setDefaults() {
566 getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true);
567 getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS,
568 true);
569 getPreferenceStore().setDefault(EDIT_MAP_SERVICE_ACCES_POINT,
570 "http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php");
571 //FIXME : changed default for SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution
572 getPreferenceStore().setDefault(SHOULD_CONNECT_AT_STARTUP, false);
573 getPreferenceStore().setDefault(OPENURL_ACCESS_POINT,
574 "http://www.biodiversitylibrary.org/openurl");
575 getPreferenceStore().setDefault(OPENURL_IMAGE_MAX_WIDTH, "1000");
576 getPreferenceStore().setDefault(OPENURL_IMAGE_MAX_HEIGHT, "1000");
577 //Distribution Editor:
578 getPreferenceStore().setDefault(DISTRIBUTION_AREA_PREFRENCES_ACTIVE, false);
579 getPreferenceStore().setDefault(CHECKLIST_AREA_DISPLAY, CHECKLIST_AREA_DISPLAY_TITLE);
580 getPreferenceStore().setDefault(CHECKLIST_SYMBOL, false);
581
582
583 //Name Details
584 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_ATOMISED_EPITHETS, true);
585 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_AUTHORSHIP_CACHE, true);
586 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_AUTHORSHIP, true);
587 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_HYBRID, true);
588 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_LSID, true);
589 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP, true);
590 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_NAMECACHE, true);
591 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_CODE, true);
592 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE, true);
593 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS, true);
594 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_PROTOLOGUE, true);
595 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_RANK, true);
596 getPreferenceStore().setDefault(SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION, true);
597 //Navigator preferences
598 getPreferenceStore().setDefault(SORT_NODES_NATURALLY, false);
599 getPreferenceStore().setDefault(SORT_NODES_ALPHABETICALLY, false);
600 getPreferenceStore().setDefault(SORT_TAXA_BY_RANK_AND_NAME, true);
601 //override db preferences
602 getPreferenceStore().setDefault(ABCD_IMPORT_OVERRIDE, false);
603 getPreferenceStore().setDefault(SHOW_SPECIMEN_OVERRIDE, false);
604 getPreferenceStore().setDefault(OVERRIDE_NAME_DETAILS, false);
605 getPreferenceStore().setDefault(DISTRIBUTION_AREA_PREFRENCES_ACTIVE_OVERRIDE, false);
606
607 getPreferenceStore().setDefault(FILTER_COMMON_NAME_REFERENCES, false);
608 getPreferenceStore().setDefault(SHOW_SPECIMEN, true);
609 getPreferenceStore().setDefault(SHOW_TAXONNODE_WIZARD, false);
610
611 }
612
613 /**
614 * <p>
615 * checkNomenclaturalCode
616 * </p>
617 */
618 public static void checkNomenclaturalCode() {
619 // First time Editor is opened, no nomenclatural code has been set
620 if (PreferencesUtil.getPreferredNomenclaturalCode(true) == null) {
621 PreferencesUtil.setPreferredNomenclaturalCode(getPreferenceKey(NomenclaturalCode.ICNAFP), true);
622 }
623
624
625
626 }
627 public static void setNomenclaturalCodePreferences(){
628 ICdmRepository controller;
629 controller = CdmStore.getCurrentApplicationConfiguration();
630 PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
631 CdmPreference preference = null;
632 if (controller == null){
633 return ;
634 }
635 preference = controller.getPreferenceService().find(key);
636 if (preference == null){
637 return;
638 }
639 getPreferenceStore().setValue(ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY, preference.isAllowOverride());
640
641 int index = StringUtils.lastIndexOf(preference.getValue(), ".");
642 UUID uuid = UUID.fromString(preference.getValue().substring(index +1, preference.getValue().length()));
643 NomenclaturalCode preferredCode = NomenclaturalCode.getByUuid(uuid);
644
645 getPreferenceStore().setValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
646 getPreferenceKey(preferredCode));
647
648 }
649
650 public static void checkDefaultLanguage(){
651 if(PreferencesUtil.getPreferredDefaultLangugae() == null){
652 Shell shell = AbstractUtility.getShell();
653 int open = new DefaultLanguageDialog(shell).open();
654 if(open == Window.OK){
655 PlatformUI.getWorkbench().restart();
656 }
657 }else{
658 //TODO:In case of a reinstall, the config.ini will be overwritten
659 // here you create config.ini with the stored key from preferences
660 }
661 }
662
663 /**
664 * <p>
665 * getMapServiceAccessPoint
666 * </p>
667 *
668 * @return a {@link java.lang.String} object.
669 */
670 public static String getMapServiceAccessPoint() {
671 return getPreferenceStore().getString(EDIT_MAP_SERVICE_ACCES_POINT);
672 }
673
674 /**
675 * <p>
676 * shouldConnectAtStartUp
677 * </p>
678 *
679 * @return a boolean.
680 */
681 public static boolean shouldConnectAtStartUp() {
682 //FIXME : force SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution
683 //return getPreferenceStore().getBoolean(SHOULD_CONNECT_AT_STARTUP);
684 return false;
685 }
686
687 /**
688 * <p>
689 * getDefaultFeatureTreeForTextualDescription
690 * </p>
691 *
692 * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
693 */
694 public static FeatureTree getDefaultFeatureTreeForTextualDescription() {
695 String uuidString = getPreferenceStore().getString(
696 FEATURE_TREE_DEFAULT_TEXT);
697 return CdmUtils.isEmpty(uuidString) ? null : CdmStore.getService(
698 IFeatureTreeService.class).load(UUID.fromString(uuidString));
699 }
700
701 /**
702 * <p>
703 * getDefaultFeatureTreeForStructuredDescription
704 * </p>
705 *
706 * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
707 */
708 public static FeatureTree getDefaultFeatureTreeForStructuredDescription() {
709 String uuidString = getPreferenceStore().getString(
710 FEATURE_TREE_DEFAULT_STRUCTURE);
711 return CdmUtils.isEmpty(uuidString) ? null : CdmStore.getService(
712 IFeatureTreeService.class).load(UUID.fromString(uuidString));
713 }
714
715 /**
716 * <p>
717 * setSortRanksHierarchichally
718 * </p>
719 *
720 * @param selection
721 * a boolean.
722 */
723 public static void setSortRanksHierarchichally(boolean selection) {
724 getPreferenceStore().setValue(SORT_RANKS_HIERARCHICHALLY, selection);
725 }
726
727 /**
728 * <p>
729 * getSortRanksHierarchichally
730 * </p>
731 *
732 * @return a boolean.
733 */
734 public static boolean getSortRanksHierarchichally() {
735 return getPreferenceStore().getBoolean(SORT_RANKS_HIERARCHICHALLY);
736 }
737
738 public static boolean isMultilanguageTextEditingCapability() {
739 return getPreferenceStore().getBoolean(
740 MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
741 }
742
743 public static Language getGlobalLanguage() {
744
745
746 String languageUuidString = getPreferenceStore().getString(
747 GLOBAL_LANGUAGE_UUID);
748
749 if(!CdmStore.isActive()) {
750 MessagingUtils.noDataSourceWarningDialog(languageUuidString);
751 return null;
752 }
753
754 if (CdmUtils.isBlank(languageUuidString)) {
755 return Language.getDefaultLanguage();
756 }
757
758 UUID languageUuid = UUID.fromString(languageUuidString);
759 return (Language) CdmStore.getService(ITermService.class).load(
760 languageUuid);
761 }
762
763 public static void setGlobalLanguage(Language language) {
764 if(language != null) {
765 getPreferenceStore().setValue(GLOBAL_LANGUAGE_UUID,language.getUuid().toString());
766 CdmStore.setDefaultLanguage(language);
767 }
768
769 }
770
771 /**
772 * @return
773 */
774 public static Map<MarkerType, Boolean> getEditMarkerTypePreferences() {
775 List<MarkerType> markerTypes = CdmStore.getTermManager()
776 .getPreferredTerms(MarkerType.class);
777
778 Map<MarkerType, Boolean> result = new HashMap<MarkerType, Boolean>();
779
780 for (MarkerType markerType : markerTypes) {
781 String name = getMarkerTypeEditingPreferenceKey(markerType);
782 Boolean value = getPreferenceStore().getBoolean(name);
783
784 result.put(markerType, value);
785 }
786
787 return result;
788 }
789
790 /**
791 * @param markerTypeEditingMap
792 */
793 public static void setEditMarkerTypePreferences(
794 Map<MarkerType, Boolean> markerTypeEditingMap) {
795 for (MarkerType markerType : markerTypeEditingMap.keySet()) {
796 String name = getMarkerTypeEditingPreferenceKey(markerType);
797 getPreferenceStore().setValue(name,
798 markerTypeEditingMap.get(markerType));
799 }
800
801 }
802
803 private static String getMarkerTypeEditingPreferenceKey(
804 MarkerType markerType) {
805 markerType = HibernateProxyHelper.deproxy(markerType);
806 return markerType.getClass().getName() + EDIT_MARKER_TYPE_PREFIX;
807 }
808
809 /**
810 * <p>
811 * setEditMarkerTypePreference
812 * </p>
813 *
814 * @param input
815 * a {@link org.eclipse.ui.IEditorInput} object.
816 * @param markerType
817 * a {@link eu.etaxonomy.cdm.model.common.MarkerType} object.
818 * @param edit
819 * a boolean.
820 */
821 public static void setEditMarkerTypePreference(MarkerType markerType,
822 boolean edit) {
823 getPreferenceStore().setValue(
824 getMarkerTypeEditingPreferenceKey(markerType), edit);
825 }
826
827 /**
828 * @return
829 */
830 public static DerivedUnitFacadeConfigurator getDerivedUnitConfigurator() {
831 DerivedUnitFacadeConfigurator configurator = DerivedUnitFacadeConfigurator
832 .NewInstance();
833 configurator.setMoveDerivedUnitMediaToGallery(true);
834 configurator.setMoveFieldObjectMediaToGallery(true);
835 return configurator;
836 }
837
838 /**
839 * This method will write language properties to the config.ini located in the configuration folder
840 * of the Taxonomic Ediitor. <b>This method is only used to set the default language for Taxonomic Editor.</b>
841 *
842 * @param setLanguage 0 is for german and 1 for english.
843 * @throws IOException
844 */
845 public void writePropertyToConfigFile(int setLanguage) throws IOException {
846 File file = org.eclipse.core.runtime.preferences.ConfigurationScope.INSTANCE.getLocation().toFile();
847 //give warning to user if the directory has no write access
848 if(file == null){
849 throw new IOException();
850 }
851 Properties properties = load(file.getAbsolutePath()+"/config.ini");
852 switch(setLanguage){
853 case 0:
854 properties.setProperty("osgi.nl", "de");
855 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR, "de");
856 break;
857 case 1:
858 properties.setProperty("osgi.nl", "en");
859 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR, "en");
860 break;
861 default:
862 break;
863 }
864 save(file+"/config.ini", properties);
865 }
866
867 /**
868 * This method loads a property from a given file and returns it.
869 *
870 * @param filename
871 * @return
872 * @throws IOException
873 */
874 private Properties load(String filename) throws IOException {
875 FileInputStream in = new FileInputStream(filename);
876 Properties prop = new Properties();
877 prop.load(in);
878 in.close();
879 return prop;
880 }
881
882 /**
883 * This method saves a property to the specified file.
884 *
885 * @param filename
886 * @param properties
887 * @throws IOException
888 */
889 private void save(String filename, Properties properties) throws IOException{
890 FileOutputStream fos = new FileOutputStream(filename);
891 properties.store(fos, "");
892 fos.close();
893 }
894
895 /**
896 * Saves a list of P2 Metadata Repositories as string with specified delimiters
897 *
898 * @param p2Repos
899 */
900 public static void setP2Repositories(List<MetadataRepositoryElement> p2Repos) {
901 StringBuilder sb = new StringBuilder();
902 for(MetadataRepositoryElement p2Repo : p2Repos) {
903 sb.append(P2_REPOSITORIES_DELIM);
904 if(p2Repo.getName() == null || p2Repo.getName().isEmpty()) {
905 sb.append("-");
906 } else {
907 sb.append(p2Repo.getName());
908 }
909 sb.append(P2_REPOSITORY_FIELDS_DELIM);
910 sb.append(p2Repo.getLocation().toString());
911 sb.append(P2_REPOSITORY_FIELDS_DELIM);
912 sb.append(String.valueOf(p2Repo.isEnabled()));
913 }
914 getPreferenceStore().setValue(P2_REPOSITORY_LIST, sb.toString());
915 }
916
917
918 /**
919 * Retrieves a list of previously saved P2 repositories
920 *
921 * @return
922 */
923 public static List<MetadataRepositoryElement> getP2Repositories() {
924 List<MetadataRepositoryElement> p2Repos = new ArrayList<MetadataRepositoryElement>();
925 String p2ReposPref = getPreferenceStore().getString(P2_REPOSITORY_LIST);
926 if(p2ReposPref != null && !p2ReposPref.isEmpty()) {
927 StringTokenizer p2ReposPrefST = new StringTokenizer(p2ReposPref,P2_REPOSITORIES_DELIM);
928
929 while(p2ReposPrefST.hasMoreTokens()) {
930 String p2RepoStr = p2ReposPrefST.nextToken();
931 StringTokenizer p2ReposStrST = new StringTokenizer(p2RepoStr,P2_REPOSITORY_FIELDS_DELIM);
932 if(p2ReposStrST.countTokens()==3) {
933 String nickname = p2ReposStrST.nextToken();
934 URI uri = null;
935 try {
936 uri = new URI(p2ReposStrST.nextToken());
937 } catch (URISyntaxException e) {
938 continue;
939 }
940 boolean enabled = Boolean.parseBoolean(p2ReposStrST.nextToken());
941 MetadataRepositoryElement mre = new MetadataRepositoryElement(null, uri, true);
942 mre.setNickname(nickname);
943 mre.setEnabled(enabled);
944 p2Repos.add(mre);
945 }
946 }
947 }
948
949 return p2Repos;
950 }
951
952 /**
953 * enables/disables nested composite. <br>
954 *
955 * @param ctrl - Composite to be en-/disabeld
956 * @param enabled - boolean
957 */
958 public static void recursiveSetEnabled(Control ctrl, boolean enabled) {
959 if (ctrl instanceof Composite) {
960 Composite comp = (Composite) ctrl;
961 for (Control c : comp.getChildren()) {
962 recursiveSetEnabled(c, enabled);
963 }
964 } else {
965 ctrl.setEnabled(enabled);
966 }
967 }
968
969 /**
970 * <p>
971 * getSortRanksNaturally
972 * </p>
973 *
974 * @return a boolean.
975 */
976 public static boolean getSortNodesNaturally() {
977 return getPreferenceStore().getBoolean(SORT_NODES_NATURALLY);
978 }
979
980 /**
981 * <p>
982 * setSortRanksNaturally
983 * </p>
984 *
985 * @param selection
986 * a boolean.
987 */
988 public static void setSortNodesNaturally(boolean selection) {
989 getPreferenceStore().setValue(SORT_NODES_NATURALLY, selection);
990 }
991
992
993 /**
994 * <p>
995 * getSortRanksNaturally
996 * </p>
997 *
998 * @return a boolean.
999 */
1000 public static boolean getSortNodesStrictlyAlphabetically() {
1001 return getPreferenceStore().getBoolean(SORT_NODES_ALPHABETICALLY);
1002 }
1003
1004 /**
1005 * <p>
1006 * setSortRanksNaturally
1007 * </p>
1008 *
1009 * @param selection
1010 * a boolean.
1011 */
1012 public static void setSortNodesStrictlyAlphabetically(boolean selection) {
1013 getPreferenceStore().setValue(SORT_NODES_ALPHABETICALLY, selection);
1014 }
1015
1016 /**
1017 * <p>
1018 * setStoreNavigatorState
1019 * </p>
1020 *
1021 * @param selection
1022 * a boolean.
1023 */
1024 public static boolean isStoreNavigatorState() {
1025 return getPreferenceStore().getBoolean(RESTORE_NAVIGATOR_STATE);
1026
1027 }
1028
1029 /**
1030 * <p>
1031 * setStoreNavigatorState
1032 * </p>
1033 *
1034 * @param selection
1035 * a boolean.
1036 */
1037 public static void setStoreNavigatorState(boolean selection) {
1038 getPreferenceStore().setValue(RESTORE_NAVIGATOR_STATE, selection);
1039
1040 }
1041
1042 /**
1043 * @return
1044 */
1045 public static boolean isShowUpWidgetIsDisposedMessages() {
1046 return getPreferenceStore().getBoolean(IS_SHOW_UP_WIDGET_IS_DISPOSED);
1047 }
1048 public static void setShowUpWidgetIsDisposedMessages(boolean selection) {
1049 getPreferenceStore().setValue(IS_SHOW_UP_WIDGET_IS_DISPOSED, selection);
1050 }
1051
1052 /**
1053 * @return
1054 */
1055 public static boolean isShowIdInVocabularyInChecklistEditor() {
1056 String area_display = getPreferenceStore().getString(IPreferenceKeys.CHECKLIST_AREA_DISPLAY);
1057 if (area_display.equals(CHECKLIST_AREA_DISPLAY_ID_IN_VOCABULARY)) {
1058 return true;
1059 }else{
1060 return false;
1061 }
1062 }
1063 public static boolean isShowSymbol1InChecklistEditor() {
1064 String area_display = getPreferenceStore().getString(IPreferenceKeys.CHECKLIST_AREA_DISPLAY);
1065 if (area_display.equals(CHECKLIST_AREA_DISPLAY_SYMBOL1)) {
1066 return true;
1067 }else{
1068 return false;
1069 }
1070 }
1071 public static boolean isShowSymbol2InChecklistEditor() {
1072 String area_display = getPreferenceStore().getString(IPreferenceKeys.CHECKLIST_AREA_DISPLAY);
1073 if (area_display.equals(CHECKLIST_AREA_DISPLAY_SYMBOL2)) {
1074 return true;
1075 }else{
1076 return false;
1077 }
1078 }
1079 public static void setShowIdInVocabularyInChecklistEditor(String selection) {
1080 getPreferenceStore().setValue(CHECKLIST_AREA_DISPLAY, selection);
1081 }
1082
1083 /**
1084 * @return
1085 */
1086 public static boolean isShowSymbolInChecklistEditor() {
1087 return getPreferenceStore().getBoolean(IPreferenceKeys.CHECKLIST_SYMBOL);
1088 }
1089 public static void setShowSymbolInChecklistEditor(boolean selection) {
1090 getPreferenceStore().setValue(CHECKLIST_SYMBOL, selection);
1091 }
1092
1093 /**
1094 * @return
1095 */
1096 public static boolean isShowRankInChecklistEditor() {
1097 return getPreferenceStore().getBoolean(IPreferenceKeys.CHECKLIST_SHOW_RANK);
1098 }
1099 public static void setShowRankInChecklistEditor(boolean selection) {
1100 getPreferenceStore().setValue(CHECKLIST_SHOW_RANK, selection);
1101 }
1102
1103 /**
1104 * @param object
1105 * @param b
1106 * @return
1107 */
1108 public static NameDetailsConfigurator getPreferredNameDetailsConfiguration( boolean local) {
1109 NameDetailsConfigurator config = new NameDetailsConfigurator(true);
1110
1111 CdmPreference preference = null;
1112
1113 if (!local) {
1114 preference = getPreferenceFromDB(PreferencePredicate.NameDetailsView);
1115 if (preference == null){
1116 return null;
1117 }
1118
1119 getPreferenceStore().setValue(ALLOW_OVERRIDE_NAME_DETAILS, preference.isAllowOverride());
1120
1121 //the preference value is build like this:
1122 //<section1>:true;<section2>:false....
1123
1124 String value = preference.getValue();
1125 String [] sections = value.split(";");
1126 Map<String, Boolean> sectionMap = new HashMap<String, Boolean>();
1127 String[] sectionValues;
1128 for (String sectionValue: sections){
1129 sectionValues = sectionValue.split(":");
1130 sectionMap.put(sectionValues[0], Boolean.valueOf(sectionValues[1]));
1131 }
1132 config.setAllowOverride(preference.isAllowOverride());
1133 config.setSimpleDetailsViewActivated(getValue(sectionMap, "simpleViewActivated"));
1134
1135 // getPreferenceStore().setValue(SHOW_SIMPLE_NAME_DETAILS_TAXON,
1136 // (getValue(sectionMap, "taxon")));
1137 config.setTaxonSectionActivated(getValue(sectionMap, "taxon"));
1138
1139 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_LSID,
1140 // (getValue(sectionMap, "lsid")));
1141 config.setLSIDActivated(getValue(sectionMap, "lsid"));
1142
1143 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_CODE,
1144 // (getValue(sectionMap, "nc")));
1145 config.setNomenclaturalCodeActived(getValue(sectionMap, "nc"));
1146
1147 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_APPENDED_PHRASE,
1148 // (getValue(sectionMap, "ap")));
1149 config.setAppendedPhraseActivated(getValue(sectionMap, "ap"));
1150
1151 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_RANK,
1152 // (getValue(sectionMap, "rank")));
1153 config.setRankActivated(getValue(sectionMap, "rank"));
1154
1155
1156 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_ATOMISED_EPITHETS,
1157 // (getValue(sectionMap, "atomisedEpithets")));
1158 config.setAtomisedEpithetsActivated(getValue(sectionMap, "atomisedEpithets"));
1159
1160 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_AUTHORSHIP,
1161 // (getValue(sectionMap,"author")));
1162 config.setAuthorshipSectionActivated(getValue(sectionMap,"author"));
1163
1164 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE,
1165 // (getValue(sectionMap, "nomRef")));
1166 config.setNomenclaturalReferenceSectionActivated(sectionMap.get("nomRef"));
1167
1168 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS,
1169 // (getValue(sectionMap, "nomStat")));
1170 config.setNomenclaturalStatusSectionActivated(getValue(sectionMap, "nomStat"));
1171
1172
1173 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_PROTOLOGUE,
1174 // (getValue(sectionMap,"protologue")));
1175 config.setProtologueActivated(getValue(sectionMap,"protologue"));
1176
1177 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION,
1178 // (getValue(sectionMap,"typeDes")));
1179 config.setTypeDesignationSectionActivated(getValue(sectionMap,"typeDes"));
1180
1181 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP,
1182 // (getValue(sectionMap,"nameRelation")));
1183 config.setNameRelationsSectionActivated(getValue(sectionMap,"nameRelation"));
1184
1185 // getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_HYBRID,
1186 // (getValue(sectionMap, "hybrid")));
1187 config.setHybridActivated(getValue(sectionMap,"hybrid"));
1188 }else{
1189 config.setSimpleDetailsViewActivated(getPreferenceStore().getBoolean(SHOW_SIMPLE_NAME_DETAILS_SECTION));
1190 config.setTaxonSectionActivated(getPreferenceStore().getBoolean(SHOW_SIMPLE_NAME_DETAILS_TAXON));
1191 config.setLSIDActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_LSID));
1192 config.setNomenclaturalCodeActived(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_CODE));
1193 config.setAppendedPhraseActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_APPENDED_PHRASE));
1194 config.setRankActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_RANK));
1195 config.setAtomisedEpithetsActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_ATOMISED_EPITHETS));
1196 config.setAuthorshipSectionActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_AUTHORSHIP));
1197 config.setNomenclaturalReferenceSectionActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE));
1198 config.setNomenclaturalStatusSectionActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS));
1199 config.setProtologueActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_PROTOLOGUE));
1200 config.setTypeDesignationSectionActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION));
1201 config.setNameRelationsSectionActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP));
1202 config.setHybridActivated(getPreferenceStore().getBoolean(SHOW_NAME_DETAILS_SECTION_HYBRID));
1203 }
1204 return config;
1205 }
1206
1207 /**
1208 * @param object
1209 * @param b
1210 * @return
1211 */
1212 public static void setPreferredNameDetailsConfiguration(NameDetailsConfigurator config, boolean local) {
1213 CdmPreference preference = null;
1214
1215 if (!local) {
1216 preference = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NameDetailsView, config.toString());
1217
1218 setPreferenceToDB(preference);
1219 }
1220 //also add to local preferences
1221 getPreferenceStore().setValue(SHOW_SIMPLE_NAME_DETAILS_SECTION, config.isSimpleDetailsViewActivated());
1222 getPreferenceStore().setValue(SHOW_SIMPLE_NAME_DETAILS_TAXON, config.isTaxonSectionActivated());
1223 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_LSID, config.isLSIDActivated());
1224 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_CODE, config.isNomenclaturalCodeActived());
1225 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_APPENDED_PHRASE, config.isAppendedPhraseActivated());
1226 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_RANK, config.isRankActivated());
1227 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_ATOMISED_EPITHETS, config.isAtomisedEpithetsActivated());
1228 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_AUTHORSHIP, config.isAuthorshipSectionActivated());
1229 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE, config.isNomenclaturalReferenceSectionActivated());
1230 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS, config.isNomenclaturalStatusSectionActivated());
1231 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_PROTOLOGUE, config.isProtologueActivated());
1232 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION, config.isTypeDesignationSectionActivated());
1233 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP, config.isNameRelationsSectionActivated());
1234 getPreferenceStore().setValue(SHOW_NAME_DETAILS_SECTION_HYBRID, config.isHybridActivated());
1235
1236 }
1237
1238 private static Boolean getValue(Map<String, Boolean> sectionMap, String string) {
1239 if (sectionMap.containsKey(string)){
1240 return sectionMap.get(string);
1241 }else{
1242 return true;
1243 }
1244
1245 }
1246
1247
1248
1249 /**
1250 * <p>
1251 * setAbcdConfigurator
1252 * </p>
1253 *
1254 * @param preferredConfiguration
1255 * a {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator}
1256 * object.
1257 */
1258 public static Abcd206ImportConfigurator getAbcdImportConfigurationPreference() {
1259
1260 Abcd206ImportConfigurator config = Abcd206ImportConfigurator.NewInstance(null,null);
1261 ICdmRepository controller;
1262 controller = CdmStore.getCurrentApplicationConfiguration();
1263 PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AbcdImportConfig);
1264 CdmPreference preference = null;
1265 if (controller == null){
1266 return null;
1267 }
1268 preference = controller.getPreferenceService().find(key);
1269 boolean allowOverride = true;
1270 if (preference != null && !preference.isAllowOverride()){
1271 allowOverride = false;
1272 }
1273 if (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_OVERRIDE) && allowOverride){
1274
1275 config.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_ADD_INDIVIDUALS_ASSOCIATIONS_SUCH_AS_SPECIMEN_AND_OBSERVATIONS));
1276
1277 config.setAddMediaAsMediaSpecimen(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_ADD_MEDIA_AS_MEDIASPECIMEN));
1278
1279 config.setAllowReuseOtherClassifications(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_ALLOW_REUSE_OTHER_CLASSIFICATIONS));
1280 config.setDeduplicateClassifications(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DEDUPLICATE_CLASSIFICATIONS));
1281 config.setDeduplicateReferences(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DEDUPLICATE_REFERENCES));
1282
1283 config.setGetSiblings(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DO_SIBLINGS));
1284 config.setIgnoreAuthorship(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_IGNORE_AUTHORSHIP));
1285 config.setIgnoreImportOfExistingSpecimen(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_IGNORE_IMPORT_OF_EXISTING_SPECIMEN));
1286 config.setMapUnitIdToAccessionNumber(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TO_ACCESSION_NUMBER));
1287 config.setMapUnitIdToBarcode(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TO_BARCODE));
1288 config.setMapUnitIdToCatalogNumber(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TOCATALOG_NUMBER));
1289 config.setMoveNewTaxaToDefaultClassification(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MOVE_NEW_TAXA_TO_DEFAULT_CLASSIFICATION));
1290 config.setOverwriteExistingSpecimens(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_OVERWRITE_EXISTING_SPECIMEN));
1291 config.setReuseExistingDescriptiveGroups(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_DESCRIPTIVE_GROUPS));
1292 config.setReuseExistingMetaData(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_META_DATA));
1293 config.setReuseExistingTaxaWhenPossible(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_TAXA_WHEN_POSSIBLE));
1294 config.setNomenclaturalCode(NomenclaturalCode.getByKey(PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_NOMENCLATURAL_CODE)));
1295 return config;
1296
1297 }
1298
1299 if (preference == null){
1300 return config;
1301 } else{
1302 String configString = preference.getValue();
1303 String[] configArray = configString.split(";");
1304
1305 for (String configItem: configArray){
1306 String[] keyValue = configItem.split(":");
1307 String keyString = keyValue[0];
1308 String valueString = keyValue[1];
1309 if (keyString.equals("ignoreImportOfExistingSpecimen")){
1310 config.setIgnoreImportOfExistingSpecimen(Boolean.valueOf(valueString));
1311 }else if (keyString.equals("addIndividualsAssociationsSuchAsSpecimenAndObservations")){
1312 config.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(Boolean.valueOf(valueString));
1313 }else if (keyString.equals("reuseExistingTaxaWhenPossible")){
1314 config.setReuseExistingTaxaWhenPossible(Boolean.valueOf(valueString));
1315 }else if (keyString.equals("ignoreAuthorship")){
1316 config.setIgnoreAuthorship(Boolean.valueOf(valueString));
1317 }else if (keyString.equals("addMediaAsMediaSpecimen")){
1318 config.setAddMediaAsMediaSpecimen(Boolean.valueOf(valueString));
1319 }else if (keyString.equals("reuseExistingMetaData")){
1320 config.setReuseExistingMetaData(Boolean.valueOf(valueString));
1321 }else if (keyString.equals("reuseExistingDescriptiveGroups")){
1322 config.setReuseExistingDescriptiveGroups(Boolean.valueOf(valueString));
1323 }else if (keyString.equals("allowReuseOtherClassifications")){
1324 config.setAllowReuseOtherClassifications(Boolean.valueOf(valueString));
1325 }else if (keyString.equals("deduplicateReferences")){
1326 config.setDeduplicateReferences(Boolean.valueOf(valueString));
1327 }else if (keyString.equals("deduplicateClassifications")){
1328 config.setDeduplicateClassifications(Boolean.valueOf(valueString));
1329 }else if (keyString.equals("moveNewTaxaToDefaultClassification")){
1330 config.setMoveNewTaxaToDefaultClassification(Boolean.valueOf(valueString));
1331 }else if (keyString.equals("mapUnitIdToCatalogNumber")){
1332 config.setMapUnitIdToCatalogNumber(Boolean.valueOf(valueString));
1333 }else if (keyString.equals("mapUnitIdToAccessionNumber")){
1334 config.setMapUnitIdToAccessionNumber(Boolean.valueOf(valueString));
1335 }else if (keyString.equals("mapUnitIdToBarcode")){
1336 config.setMapUnitIdToBarcode(Boolean.valueOf(valueString));
1337 }else if (keyString.equals("overwriteExistingSpecimens")){
1338 config.setOverwriteExistingSpecimens(Boolean.valueOf(valueString));
1339 }else if (keyString.equals("nomenclaturalCode")){
1340 config.setNomenclaturalCode(NomenclaturalCode.fromString(valueString));
1341 }else{
1342 logger.debug("This key of the abcd configurator needs to be added to the transformer: " + keyString);
1343 }
1344
1345 }
1346 }
1347 return config;
1348 }
1349
1350
1351 public static void updateAbcdImportConfigurationPreference() {
1352
1353 Abcd206ImportConfigurator config = Abcd206ImportConfigurator.NewInstance(null,null);
1354 ICdmRepository controller;
1355 controller = CdmStore.getCurrentApplicationConfiguration();
1356 PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AbcdImportConfig);
1357 CdmPreference preference = null;
1358 if (controller == null){
1359 return ;
1360 }
1361 preference = controller.getPreferenceService().find(key);
1362 boolean allowOverride = true;
1363 if (preference != null && !preference.isAllowOverride()){
1364 allowOverride = false;
1365 }
1366 if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_OVERRIDE) || !allowOverride){
1367
1368 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_ADD_INDIVIDUALS_ASSOCIATIONS_SUCH_AS_SPECIMEN_AND_OBSERVATIONS, config.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
1369 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_ADD_MEDIA_AS_MEDIASPECIMEN, config.isAddMediaAsMediaSpecimen());
1370
1371 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_ALLOW_REUSE_OTHER_CLASSIFICATIONS, config.isAllowReuseOtherClassifications());
1372 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_DEDUPLICATE_CLASSIFICATIONS, config.isDeduplicateClassifications());
1373 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_DEDUPLICATE_REFERENCES, config.isDeduplicateReferences());
1374
1375 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_DO_SIBLINGS, config.isGetSiblings());
1376 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_IGNORE_AUTHORSHIP, config.isIgnoreAuthorship());
1377 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_IGNORE_IMPORT_OF_EXISTING_SPECIMEN, config.isIgnoreImportOfExistingSpecimen());
1378 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TO_ACCESSION_NUMBER, config.isMapUnitIdToAccessionNumber());
1379 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TO_BARCODE, config.isMapUnitIdToBarcode());
1380 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TOCATALOG_NUMBER, config.isMapUnitIdToCatalogNumber());
1381 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_MOVE_NEW_TAXA_TO_DEFAULT_CLASSIFICATION, config.isMoveNewTaxaToDefaultClassification());
1382 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_OVERWRITE_EXISTING_SPECIMEN, config.isOverwriteExistingSpecimens());
1383 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_DESCRIPTIVE_GROUPS, config.isReuseExistingDescriptiveGroups());
1384 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_META_DATA, config.isReuseExistingMetaData());
1385 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_TAXA_WHEN_POSSIBLE, config.isReuseExistingTaxaWhenPossible());
1386 if (config.getNomenclaturalCode() != null){
1387 getPreferenceStore().setValue(ABCD_IMPORT_CONFIGURATOR_NOMENCLATURAL_CODE, config.getNomenclaturalCode().getKey());
1388 }
1389 }
1390 }
1391
1392
1393 /**
1394 *
1395 */
1396 public NameDetailsConfigurator createLocalNameDetailsViewConfig(boolean local) {
1397 NameDetailsConfigurator config = new NameDetailsConfigurator(true);
1398 if (local){
1399 config.setSimpleDetailsViewActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION));
1400 config.setAppendedPhraseActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_APPENDED_PHRASE));
1401 config.setAtomisedEpithetsActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_ATOMISED_EPITHETS));
1402 config.setAuthorshipSectionActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_AUTHORSHIP));
1403 config.setLSIDActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_LSID));
1404 config.setNameApprobiationActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NAME_APPROBATION));
1405 config.setNameCacheActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_CACHE));
1406 config.setNameRelationsSectionActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP));
1407 config.setNomenclaturalCodeActived(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_CODE));
1408 config.setNomenclaturalStatusSectionActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS));
1409 config.setNomenclaturalReferenceSectionActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE));
1410 config.setProtologueActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_PROTOLOGUE));
1411 config.setRankActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_RANK));
1412 config.setTaxonSectionActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_TAXON));
1413 config.setTypeDesignationSectionActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION));
1414 config.setHybridActivated(getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_HYBRID));
1415 }else{
1416
1417 }
1418
1419 return config;
1420 }
1421
1422
1423 public static void saveConfigToPrefernceStore(NameDetailsConfigurator config) {
1424 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION,
1425 config.isSimpleDetailsViewActivated());
1426 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_TAXON, config.isTaxonSectionActivated());
1427 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_LSID, config.isLSIDActivated());
1428 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_CODE,
1429 config.isNomenclaturalCodeActived());
1430 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NAMECACHE,
1431 config.isNameCacheActivated());
1432 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_APPENDED_PHRASE,
1433 config.isAppendedPhraseActivated());
1434 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_RANK, config.isRankActivated());
1435 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_ATOMISED_EPITHETS,
1436 config.isAtomisedEpithetsActivated());
1437 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_AUTHORSHIP_CACHE,
1438 config.isAuthorCacheActivated());
1439 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_AUTHORSHIP,
1440 config.isAuthorshipSectionActivated());
1441 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE,
1442 config.isNomenclaturalReferenceSectionActivated());
1443 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS,
1444 config.isNomenclaturalStatusSectionActivated());
1445 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_PROTOLOGUE,
1446 config.isProtologueActivated());
1447 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION,
1448 config.isTypeDesignationSectionActivated());
1449 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP,
1450 config.isNameRelationsSectionActivated());
1451 PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_HYBRID,
1452 config.isHybridActivated());
1453
1454 }
1455
1456 /**
1457 * @return
1458 */
1459 public static boolean isSortTaxaByRankAndName() {
1460
1461 return getPreferenceStore().getBoolean(IPreferenceKeys.SORT_TAXA_BY_RANK_AND_NAME);
1462 }
1463
1464 /**
1465 * @return
1466 */
1467 public static boolean isSortNamedAreaByOrderInVocabulary() {
1468
1469 return getPreferenceStore().getBoolean(IPreferenceKeys.SORT_NAMED_AREA_BY_VOCABULARY_ORDER);
1470 }
1471
1472 public static void setSortNamedAreasByOrderInVocabulary(boolean isSortByVocabularyOrder) {
1473 getPreferenceStore().setValue(IPreferenceKeys.SORT_NAMED_AREA_BY_VOCABULARY_ORDER, isSortByVocabularyOrder);
1474
1475 }
1476
1477 /**
1478 * <p>
1479 * setPreferredNamedAreasForDistributionEditor
1480 * </p>
1481 *
1482 * @param saveCheckedElements
1483 * @param saveGrayedElements
1484 */
1485 public static void setLastSelectedReference(
1486 List<String> lastSelectedReferences) {
1487
1488 IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
1489 preferenceStore.setValue(PreferencesUtil.LAST_SELECTED_REFERENCES, lastSelectedReferences.toString());
1490 }
1491
1492 /**
1493 * <p>
1494 * setPreferredNamedAreasForDistributionEditor
1495 * </p>
1496 *
1497 * @param saveCheckedElements
1498 * @param saveGrayedElements
1499 */
1500 public static List<String> getLastSelectedReferences() {
1501
1502 IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
1503 String lastSelected = preferenceStore.getString(PreferencesUtil.LAST_SELECTED_REFERENCES);
1504 List<String> result = new ArrayList<>();
1505 if (!StringUtils.isBlank(lastSelected)){
1506 Collections.addAll(result, lastSelected.substring(1,lastSelected.length()-1).split(", "));
1507 }
1508 return result;
1509 }
1510
1511
1512 /**
1513 * <p>
1514 * setPreferredNamedAreasForDistributionEditor
1515 * </p>
1516 *
1517 * @param saveCheckedElements
1518 * @param saveGrayedElements
1519 */
1520 public static void setPreferredNamedAreasForDistributionEditor(
1521 String saveCheckedElements, String saveGrayedElements, boolean local) {
1522 if (local){
1523 IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
1524 preferenceStore.setValue(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS, saveCheckedElements);
1525 preferenceStore.setValue(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS_GRAYED, saveGrayedElements);
1526
1527 }
1528 else{
1529 CdmPreference preference = null;
1530
1531 if (saveCheckedElements == null){
1532 preference = getPreferenceFromDB(PreferencePredicate.AvailableDistributionAreaTerms);
1533
1534 if (preference == null){
1535 return ;
1536 } else{
1537 getPreferenceStore().setValue(DISTRIBUTION_AREA_OCCURENCE_STATUS,
1538 saveCheckedElements);
1539 preference = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionAreaTerms, saveCheckedElements);
1540 setPreferenceToDB(preference);
1541
1542 }
1543 } else{
1544 preference = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionAreaTerms, saveCheckedElements);
1545 setPreferenceToDB(preference);
1546 getPreferenceStore().setValue(DISTRIBUTION_AREA_OCCURENCE_STATUS,
1547 saveCheckedElements);
1548
1549 }
1550 }
1551
1552 }
1553
1554 /**
1555 * @param saveCheckedElements
1556 * @param saveCheckedElements2
1557 * @param b
1558 */
1559 public static void setPreferredVocabulariesForDistributionEditor(String saveCheckedElements,
1560 boolean local) {
1561 if (local){
1562 IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
1563 preferenceStore.setValue(PreferencesUtil.DISTRIBUTION_VOCABULARIES, saveCheckedElements);
1564 }
1565 else{
1566 ICdmRepository controller;
1567 CdmPreference preference = null;
1568
1569 if (saveCheckedElements == null){
1570 preference = getPreferenceFromDB(PreferencePredicate.AvailableDistributionAreaVocabularies);
1571
1572 if (preference == null){
1573 return ;
1574 } else{
1575 getPreferenceStore().setValue(DISTRIBUTION_VOCABULARIES,
1576 saveCheckedElements);
1577 preference = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionAreaVocabularies, saveCheckedElements);
1578 setPreferenceToDB(preference);
1579 }
1580 } else{
1581 preference = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionAreaVocabularies, saveCheckedElements);
1582 setPreferenceToDB(preference);
1583 getPreferenceStore().setValue(DISTRIBUTION_VOCABULARIES,
1584 saveCheckedElements);
1585
1586 }
1587 }
1588 }
1589
1590
1591
1592
1593 /**
1594 * @param saveCheckedElements
1595 * @param saveCheckedElements2
1596 * @param b
1597 */
1598 public static String getPreferredVocabulariesForDistributionEditor(boolean local) {
1599 if (local){
1600 IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
1601 String pref = preferenceStore.getString(DISTRIBUTION_VOCABULARIES);
1602 return pref;
1603 }
1604 else{
1605 CdmPreference preference = null;
1606 preference = getPreferenceFromDB(PreferencePredicate.AvailableDistributionAreaVocabularies);
1607 if (preference == null){
1608 return null;
1609 } else{
1610 return preference.getValue();
1611 }
1612
1613 }
1614
1615
1616
1617 }
1618
1619 public static boolean getFilterCommonNameReferences(){
1620 return getPreferenceStore().getBoolean(PreferencesUtil.FILTER_COMMON_NAME_REFERENCES);
1621 }
1622
1623 /**
1624 *
1625 */
1626 public static void updateDBPreferences() {
1627 CdmPreference preference = null;
1628 IPreferenceStore prefStore = getPreferenceStore();
1629
1630 //ABCD Configurator
1631
1632 updateAbcdImportConfigurationPreference();
1633
1634 preference = getPreferenceFromDB(PreferencePredicate.ShowImportExportMenu);
1635 if (preference != null){
1636 if(!prefStore.getBoolean(SHOW_IO_MENU) || !preference.isAllowOverride()){
1637 prefStore.setValue(SHOW_IO_MENU, preference.getValue());
1638 }
1639 }
1640
1641 preference = getPreferenceFromDB(PreferencePredicate.ShowMediaView);
1642 if (preference != null){
1643 if(!prefStore.getBoolean(SHOW_MEDIA) || !preference.isAllowOverride()){
1644 prefStore.setValue(SHOW_MEDIA, preference.getValue());
1645 }
1646 }
1647
1648 preference = getPreferenceFromDB(PreferencePredicate.ShowChecklistPerspective);
1649 if (preference != null){
1650 if(!prefStore.getBoolean(SHOW_CHECKLIST_PERSPECTIVE) || !preference.isAllowOverride()){
1651 prefStore.setValue(SHOW_CHECKLIST_PERSPECTIVE, preference.getValue());
1652 }
1653 }
1654
1655 //Specimen Details
1656 preference = getPreferenceFromDB(PreferencePredicate.ShowSpecimen);
1657 if (preference != null){
1658 if(!prefStore.getBoolean(SHOW_SPECIMEN) || !preference.isAllowOverride()){
1659 prefStore.setValue(SHOW_SPECIMEN, preference.getValue());
1660 }
1661 }
1662
1663 preference = getPreferenceFromDB(PreferencePredicate.ShowTaxonAssociations);
1664 if (preference != null){
1665 if(!prefStore.getBoolean(SHOW_TAXON_ASSOCIATIONS_OVERRIDE) || !preference.isAllowOverride()){
1666 prefStore.setValue(SHOW_TAXON_ASSOCIATIONS, preference.getValue());
1667 }
1668 }
1669 preference = getPreferenceFromDB(PreferencePredicate.ShowCollectingAreasInGeneralSection);
1670 if (preference != null){
1671 if(!prefStore.getBoolean(SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION_OVERRIDE) || !preference.isAllowOverride()){
1672 prefStore.setValue(SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION, preference.getValue());
1673 }
1674 }
1675 preference = getPreferenceFromDB(PreferencePredicate.ShowLifeForm);
1676 if (preference != null){
1677 if(!prefStore.getBoolean(SHOW_LIFE_FORM_OVERRIDE) || !preference.isAllowOverride()){
1678 prefStore.setValue(SHOW_LIFE_FORM, preference.getValue());
1679 }
1680 }
1681 preference = getPreferenceFromDB(PreferencePredicate.DeterminationOnlyForFieldUnits);
1682 if (preference != null){
1683 if(!prefStore.getBoolean(DETERMINATION_ONLY_FOR_FIELD_UNITS_OVERRIDE) || !preference.isAllowOverride()){
1684 prefStore.setValue(DETERMINATION_ONLY_FOR_FIELD_UNITS, preference.getValue());
1685 }
1686 }
1687
1688
1689 //Name Details
1690 NameDetailsConfigurator config = getPreferredNameDetailsConfiguration(false);
1691 if (config != null ){
1692 if (!prefStore.getBoolean(OVERRIDE_NAME_DETAILS) || !prefStore.getBoolean(ALLOW_OVERRIDE_NAME_DETAILS)){
1693 setPreferredNameDetailsConfiguration(config, false);
1694 }
1695 }
1696
1697 //Distribution Editor
1698 preference = getPreferenceFromDB(PreferencePredicate.AvailableDistributionAreaVocabularies);
1699 if (preference != null){
1700 if (!prefStore.getBoolean(DISTRIBUTION_AREA_PREFRENCES_ACTIVE_OVERRIDE) || !preference.isAllowOverride()){
1701 prefStore.setValue(DISTRIBUTION_VOCABULARIES, preference.getValue());
1702 }
1703 }
1704
1705 preference = getPreferenceFromDB(PreferencePredicate.DistributionEditorActivated);
1706 if (preference != null){
1707 if (!prefStore.getBoolean(DISTRIBUTION_AREA_PREFRENCES_ACTIVE_OVERRIDE) || !preference.isAllowOverride()){
1708 prefStore.setValue(DISTRIBUTION_AREA_PREFRENCES_ACTIVE, preference.getValue());
1709 }
1710 }
1711
1712 preference = getPreferenceFromDB(PreferencePredicate.AvailableDistributionStatus);
1713 if (preference != null){
1714 if (!prefStore.getBoolean(DISTRIBUTION_STATUS_OVERRIDE) || !preference.isAllowOverride()){
1715 //get terms for the uuids... and add them to the termManager as preferred terms
1716 ITermService termService = CdmStore.getService(ITermService.class);
1717 String[] uuidArray = preference.getValue().split(";");
1718 List<UUID> uuidList = new ArrayList();
1719 for (String uuidString:uuidArray){
1720 uuidList.add(UUID.fromString(uuidString));
1721 }
1722
1723 List<DefinedTermBase> definedTermBases = termService.load(uuidList, null);
1724 CdmStore.getTermManager().setPreferredTerms(definedTermBases, TermStore.getTerms(TermType.PresenceAbsenceTerm, null));
1725 }
1726 }
1727
1728 preference = getPreferenceFromDB(PreferencePredicate.CommonNameAreaVocabularies);
1729 if (preference != null){
1730 if (!prefStore.getBoolean(COMMON_NAME_AREA_VOCABULARIES_OVERRIDE) || !preference.isAllowOverride()){
1731 prefStore.setValue(COMMON_NAME_AREA_VOCABULARIES, preference.getValue());
1732 }
1733 }
1734
1735 preference = getPreferenceFromDB(PreferencePredicate.ShowTaxonNodeWizard);
1736 if (preference != null){
1737 if (!prefStore.getBoolean(SHOW_TAXONNODE_WIZARD) || !preference.isAllowOverride()){
1738 prefStore.setValue(SHOW_TAXONNODE_WIZARD, preference.getValue());
1739 }
1740 }
1741
1742 }
1743
1744
1745
1746
1747
1748
1749
1750 }