Project

General

Profile

« Previous | Next » 

Revision 11847891

Added by Katja Luther almost 5 years ago

ref #8047: configurable display of status in drop down

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
27 27

  
28 28
import org.apache.commons.lang.StringUtils;
29 29
import org.apache.log4j.Logger;
30
import org.eclipse.core.runtime.preferences.ConfigurationScope;
31
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
30 32
import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement;
31 33
import org.eclipse.jface.preference.IPreferenceStore;
32 34
import org.eclipse.jface.window.Window;
......
34 36
import org.eclipse.swt.widgets.Control;
35 37
import org.eclipse.swt.widgets.Shell;
36 38
import org.eclipse.ui.PlatformUI;
39
import org.osgi.service.prefs.BackingStoreException;
40
import org.osgi.service.prefs.Preferences;
37 41

  
38 42
import eu.etaxonomy.cdm.api.application.ICdmRepository;
39 43
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
......
81 85
 * @created 05.12.2008
82 86
 */
83 87
public class PreferencesUtil implements IPreferenceKeys {
88
    private final static String EDITOR_PREFERENCES_NODE = "eu.etaxonomy.taxeditor";
84 89

  
85
	public static final String PREFERRED_TERMS_CHANGE = "preferred_terms";
90
    public static final String PREFERRED_TERMS_CHANGE = "preferred_terms";
86 91

  
87
	public static final String P2_REPOSITORIES_DELIM = ",";
88
	public static final String P2_REPOSITORY_FIELDS_DELIM = ";";
92
    public static final String P2_REPOSITORIES_DELIM = ",";
93
    public static final String P2_REPOSITORY_FIELDS_DELIM = ";";
94
    public static final String SUBJECT_DELIM = "/";
95
    private final static Logger logger = Logger.getLogger(PreferencesUtil.class);
89 96

  
90
	private final static Logger logger = Logger.getLogger(PreferencesUtil.class);
97
    public static IPreferenceStore getPreferenceStore() {
98
       return TaxeditorStorePlugin.getDefault().getPreferenceStore();
99
    }
100

  
101
    public static String[] extractSubjectParts(String subject){
102
       String[] result = subject.split("/");
103
       return result;
104
    }
105

  
106
    public static IEclipsePreferences getEditorPreferences(){
107
        return ConfigurationScope.INSTANCE.getNode(EDITOR_PREFERENCES_NODE);
108
    }
109

  
110
    public static String getPreferenceValue(PrefKey prefKey){
111
        try {
112
            if(getEditorPreferences().nodeExists(prefKey.getPredicate())){
113
                Preferences predicateNode = getEditorPreferences().node(prefKey.getPredicate());
114
                String[] splittedSubject = extractSubjectParts(prefKey.getSubject());
115
                String value = predicateNode.get(splittedSubject[splittedSubject.length-1], PreferencePredicate.getByKey(prefKey.getPredicate()).getDefaultValue() != null? PreferencePredicate.getByKey(prefKey.getPredicate()).getDefaultValue().toString(): "");
116
                int index = splittedSubject.length -2;
117
                while (value != null && index >= 0){
118
                   value = predicateNode.get(splittedSubject[index], prefKey.getPredicate());
119
                   index--;
120
                }
121
                return value;
122
            }
91 123

  
92
	public static IPreferenceStore getPreferenceStore() {
93
		return TaxeditorStorePlugin.getDefault().getPreferenceStore();
94
	}
124
        } catch (BackingStoreException e) {
125
            // TODO Auto-generated catch block
126
            e.printStackTrace();
127
        }
128
        return null;
129
    }
95 130

  
96
	private static String prefKey(String name) {
97
	    return name + "_"+  ((CdmRemoteSource)CdmStore.getActiveCdmSource()).toString();
98
	}
131
    public static List<CdmPreference> getPreference(PreferencePredicate prefPredicate){
132
        try {
133
            List<CdmPreference> prefs = new ArrayList();
134
            CdmPreference pref;
135
            PreferenceSubject subject;
136
            if(getEditorPreferences().nodeExists(prefPredicate.getKey())){
137
                Preferences predicateNode = getEditorPreferences().node(prefPredicate.getKey());
138
                for (String childName: predicateNode.childrenNames()){
139
                    Preferences child = predicateNode.node(childName);
140
                    String subjectString = "";
141
                    subjectString = createSubjectStringForChildNodes(childName, child);
142
                    String value = child.get(subjectString, "");
143
                    subject = PreferenceSubject.NewInstance(subjectString);
144
                    pref = CdmPreference.NewInstance(subject, prefPredicate, value);
145
                    prefs.add(pref);
146
                }
147

  
148
            }
149

  
150
        } catch (BackingStoreException e) {
151
            // TODO Auto-generated catch block
152
            e.printStackTrace();
153
        }
154
        return null;
155
    }
156

  
157
    /**
158
     * @param childName
159
     * @param child
160
     */
161
    private static String createSubjectStringForChildNodes(String subject, Preferences parent) {
162
        try {
163
            for (String childName: parent.childrenNames()){
164
                subject = childName+SUBJECT_DELIM+subject;
165
                Preferences child = parent.node(childName);
166
                createSubjectStringForChildNodes(subject, child);
167
            }
168
        } catch (BackingStoreException e) {
169
            // TODO Auto-generated catch block
170
            e.printStackTrace();
171
        }
172
        return subject;
99 173

  
100
	public static String prefOverrideKey(String name) {
174
    }
175

  
176
    private static String prefKey(String name) {
177
        return name + "_"+  ((CdmRemoteSource)CdmStore.getActiveCdmSource()).toString();
178
    }
179

  
180
    public static String prefOverrideKey(String name) {
101 181
        return name + "_OVERRIDE_";
102 182
    }
103 183

  
......
309 389
        return result;
310 390
    }
311 391

  
312
	public static CdmPreference setPreferredNomenclaturalCode(
313
			String preferenceValue, boolean local) {
314
	    if (local){
315
	        setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
316
	                preferenceValue);
317
	    }
318
	    else{
319
    		ICdmRepository controller;
320
    		controller = CdmStore.getCurrentApplicationConfiguration();
321
    		if (controller == null){
392
    public static CdmPreference setPreferredNomenclaturalCode(
393
            String preferenceValue, boolean local) {
394
        if (local){
395
            setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
396
                    preferenceValue);
397
        }
398
        else{
399
            ICdmRepository controller;
400
            controller = CdmStore.getCurrentApplicationConfiguration();
401
            if (controller == null){
322 402
                return null;
323 403
            }
324
    		PrefKey key = null;
325
    		try{
326
    		    key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
327
    		}catch (Exception e){
328
    		    System.out.println(e.getStackTrace());
329
    		}
330
    		CdmPreference preference = null;
331

  
332
    		if (preferenceValue == null){
333
    			preference = controller.getPreferenceService().find(key);
334
    			if (preference == null){
335
    				return null;
336
    			} else{
337
    			    setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
338
    				        preference.getValue());
339

  
340
    				return preference;
341
    			}
342
    		} else{
343
    			preference = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, preferenceValue);
344
    			controller.getPreferenceService().set(preference);
345

  
346
    		}
347
	    }
404
            PrefKey key = null;
405
            try{
406
                key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
407
            }catch (Exception e){
408
                System.out.println(e.getStackTrace());
409
            }
410
            CdmPreference preference = null;
411

  
412
            if (preferenceValue == null){
413
                preference = controller.getPreferenceService().find(key);
414
                if (preference == null){
415
                    return null;
416
                } else{
417
                    setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
418
                            preference.getValue());
419

  
420
                    return preference;
421
                }
422
            } else{
423
                preference = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, preferenceValue);
424
                controller.getPreferenceService().set(preference);
425

  
426
            }
427
        }
348 428
        return null;
349 429

  
350 430

  
351 431

  
352
	}
432
    }
353 433

  
354 434
    public static void setPreferredNomenclaturalCode(
355 435
        CdmPreference preference) {
......
370 450

  
371 451
    }
372 452

  
373
	public static NomenclaturalCode getPreferredNomenclaturalCode() {
453
    public static NomenclaturalCode getPreferredNomenclaturalCode() {
374 454

  
375
		CdmPreference pref = getPreferenceFromDB(PreferencePredicate.NomenclaturalCode);
455
        CdmPreference pref = getPreferenceFromDB(PreferencePredicate.NomenclaturalCode);
376 456

  
377 457

  
378
	    String preferredCode;
379
	    if(pref == null || (pref.isAllowOverride() && getBooleanValue(prefOverrideKey(PreferencePredicate.NomenclaturalCode.getKey())))){
380
	    	preferredCode = getStringValue(
381
	    	        PreferencePredicate.NomenclaturalCode.getKey(), true);
458
        String preferredCode;
459
        if(pref == null || (pref.isAllowOverride() && getBooleanValue(prefOverrideKey(PreferencePredicate.NomenclaturalCode.getKey())))){
460
            preferredCode = getStringValue(
461
                    PreferencePredicate.NomenclaturalCode.getKey(), true);
382 462

  
383
	    }else{
384
	    	preferredCode = pref.getValue();
385
	    }
386
	    if (StringUtils.isBlank(preferredCode)){
387
	        preferredCode = getPreferenceKey((NomenclaturalCode)PreferencePredicate.NomenclaturalCode.getDefaultValue());
388
	    }
463
        }else{
464
            preferredCode = pref.getValue();
465
        }
466
        if (StringUtils.isBlank(preferredCode)){
467
            preferredCode = getPreferenceKey((NomenclaturalCode)PreferencePredicate.NomenclaturalCode.getDefaultValue());
468
        }
389 469

  
390
	    return getPreferredNomenclaturalCode(preferredCode);
470
        return getPreferredNomenclaturalCode(preferredCode);
391 471

  
392
	}
472
    }
393 473

  
394 474
    public static NomenclaturalCode getPreferredNomenclaturalCode(String preferenceKeyNomenclaturalCode) {
395 475

  
......
401 481
        return null;
402 482
    }
403 483

  
404
	public static boolean isShowTaxonAssociations(){
484
    public static boolean isShowTaxonAssociations(){
405 485
        boolean result = getBooleanValue(PreferencePredicate.ShowTaxonAssociations.getKey());
406 486
        return result;
407 487
    }
408 488

  
409
	public static boolean isShowLifeForm(){
410
	    boolean result =  getBooleanValue(PreferencePredicate.ShowLifeForm.getKey());
411
	    return result;
489
    public static boolean isShowLifeForm(){
490
        boolean result =  getBooleanValue(PreferencePredicate.ShowLifeForm.getKey());
491
        return result;
412 492
    }
413 493

  
414
	public static boolean isDeterminationOnlyForFieldUnits(){
415
	    boolean result =  getBooleanValue(PreferencePredicate.DeterminationOnlyForFieldUnits.getKey());
494
    public static boolean isDeterminationOnlyForFieldUnits(){
495
        boolean result =  getBooleanValue(PreferencePredicate.DeterminationOnlyForFieldUnits.getKey());
416 496
        return result;
417 497
    }
418 498

  
419
	public static boolean isCollectingAreaInGeneralSection(){
420
	    boolean result =  getBooleanValue(PreferencePredicate.ShowCollectingAreasInGeneralSection.getKey());
499
    public static boolean isCollectingAreaInGeneralSection(){
500
        boolean result =  getBooleanValue(PreferencePredicate.ShowCollectingAreasInGeneralSection.getKey());
421 501
        return result;
422
	}
502
    }
423 503

  
424
	public static CdmPreference getPreferenceFromDB(IPreferencePredicate predicate){
504
    public static CdmPreference getPreferenceFromDB(IPreferencePredicate predicate){
425 505
        ICdmRepository controller;
426 506
        CdmPreference pref = null;
427 507

  
......
439 519

  
440 520
    }
441 521

  
442
	public static List<CdmPreference> getPreferencesFromDB(IPreferencePredicate predicate){
522
    public static List<CdmPreference> getPreferencesFromDB(IPreferencePredicate predicate){
443 523
        ICdmRepository controller;
444 524
        List<CdmPreference> prefs = null;
445 525

  
......
457 537

  
458 538
    }
459 539

  
460
	public static void setPreferencesToDB(CdmPreference preference, boolean setDefault){
540
    public static void setPreferencesToDB(CdmPreference preference, boolean setDefault){
461 541
        ICdmRepository controller;
462 542

  
463 543

  
......
479 559

  
480 560
    }
481 561

  
482
	public static CdmPreference getPreferenceFromDB(PrefKey key){
562
    public static CdmPreference getPreferenceFromDB(PrefKey key){
483 563
        ICdmRepository controller;
484 564
        CdmPreference pref = null;
485 565

  
......
510 590

  
511 591
    }
512 592

  
513
	public static String getPreferredDefaultLangugae(){
514
	    String preferredLanguage = getStringValue(DEFAULT_LANGUAGE_EDITOR);
515
	    if(StringUtils.isNotEmpty(preferredLanguage) && StringUtils.isNotBlank(preferredLanguage)){
516
	        return preferredLanguage;
517
	    }
518
	    return null;
519
	}
593
    public static String getPreferredDefaultLangugae(){
594
        String preferredLanguage = getStringValue(DEFAULT_LANGUAGE_EDITOR);
595
        if(StringUtils.isNotEmpty(preferredLanguage) && StringUtils.isNotBlank(preferredLanguage)){
596
            return preferredLanguage;
597
        }
598
        return null;
599
    }
520 600

  
521
	public static boolean isShowMediaPreview(){
601
    public static boolean isShowMediaPreview(){
522 602
        boolean isShowMediaPreview = getBooleanValue(SHOW_MEDIA_PREVIEW);
523 603
        return isShowMediaPreview;
524 604
    }
525 605

  
526
	/**
527
	 * Get the match strategy for the given class that was stored in preferences
528
	 * or the default strategy if it was not stored in preferences
529
	 *
530
	 * @param clazz
531
	 *            a {@link java.lang.Class} object.
532
	 * @return a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy} object.
533
	 */
534
	public static IMatchStrategy getMatchStrategy(Class<?> clazz) {
535
		String className = clazz.getName();
536
		if (getBooleanValue(MATCH_STRATEGY_PREFIX + className)) {
537
			IMatchStrategy matchStrategy = getDefaultMatchStrategy(clazz);
538

  
539
			//TODO CacheMatchers (or multiple field matchers in future) are missing here
540
			for (FieldMatcher fieldMatcher : matchStrategy.getMatching().getFieldMatchers(false)) {
541
				String fieldName = fieldMatcher.getPropertyName();
542
				String matchModeName = getStringValue(
543
						getMatchStrategyFieldName(className, fieldName));
544
				MatchMode matchMode = MatchMode.valueOf(matchModeName);
545
				try {
546
					matchStrategy.setMatchMode(fieldName, matchMode);
547
				} catch (MatchException e) {
548
					MessagingUtils.error(PreferencesUtil.class, e);
549
					throw new RuntimeException(e);
550
				}
551
			}
552

  
553
			return matchStrategy;
554
		}
555
		return getDefaultMatchStrategy(clazz);
556
	}
557

  
558
	/**
559
	 * Stores a matchStrategy into the preference store.
560
	 *
561
	 * @param matchStrategy
562
	 *            a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy}
563
	 *            object.
564
	 */
565
	public static void setMatchStrategy(IMatchStrategy matchStrategy) {
566
		String className = "ANY class"; //FIXME was: matchStrategy.getMatchClass().getName(); seems currently not in use
567
		setBooleanValue(MATCH_STRATEGY_PREFIX + className, true);
568

  
569
		List<FieldMatcher> fieldMatchers = matchStrategy.getMatching().getFieldMatchers(false);
570

  
571
		for (FieldMatcher fieldMatcher : fieldMatchers) {
572
			String fieldName = fieldMatcher.getPropertyName();
573
			setStringValue(
574
					getMatchStrategyFieldName(className, fieldName),
575
					fieldMatcher.getMatchMode().name());
576
		}
577
	}
578

  
579
	/**
580
	 * Helper method to create the preference property for a match field.
581
	 *
582
	 * @param className
583
	 * @param fieldName
584
	 * @return
585
	 */
586
	private static String getMatchStrategyFieldName(String className,
587
			String fieldName) {
588
		return MATCH_STRATEGY_PREFIX + className + "." + fieldName;
589
	}
590

  
591
	/**
592
	 * Returns the default match strategy for a given class.
593
	 *
594
	 * @param clazz
595
	 *            a {@link java.lang.Class} object.
596
	 * @return a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy} object.
597
	 */
598
	public static IMatchStrategy getDefaultMatchStrategy(Class clazz) {
599
		return DefaultMatchStrategy.NewInstance(clazz);
600
	}
601

  
602
	public static String getDateFormatPattern() {
603
		// TODO make this configurable in properties
604
		String pattern = "Y-M-d H:m";
605
		return pattern;
606
	}
607

  
608
	public static <T extends TermBase> void addTermToPreferredTerms(T term) {
609

  
610
		// VocabularyEnum vocabulary =
611
		// VocabularyEnum.getVocabularyEnum(term.getClass());
612
		//
613
		// getPreferenceStore().setValue(getPreferenceKey(term),
614
		// VocabularyStore.getTermVocabulary(vocabulary).getTerms().contains(term));
615
		//
616
		// firePreferencesChanged(term.getClass());
617
	}
618

  
619
	/**
620
	 * Construct a unique key using the CdmBase object's uuid
621
	 *
622
	 * @param cdmBase
623
	 * @return
624
	 */
625
	private static String getPreferenceKey(ICdmBase cdmBase) {
626
		cdmBase = HibernateProxyHelper.deproxy(cdmBase);
627

  
628
		String key = cdmBase.getClass().getName().concat(".")
629
				.concat(cdmBase.getUuid().toString());
630
		if (key.contains("javassist")) {
631
			MessagingUtils.info("proxy");
632
		}
633
		return key;
634
	}
635

  
636
	/**
637
	 * Construct a unique key using the CdmBase object's uuid
638
	 *
639
	 * @param cdmBase
640
	 * @return
641
	 */
642
	public static String getPreferenceKey(ISimpleTerm simpleTerm) {
643
		simpleTerm = HibernateProxyHelper.deproxy(simpleTerm);
644
		String key = simpleTerm.getClass().getName().concat(".")
645
				.concat(simpleTerm.getUuid().toString());
646
		if (key.contains("javassist")) {
647
			MessagingUtils.warn(PreferencesUtil.class,
648
					"Trying to persist a preference based on a proxy class.");
649
		}
650
		return key;
651
	}
652

  
653

  
654

  
655
	/**
656
	 * Construct a unique key using the CdmBase object's uuid
657
	 *
658
	 * @param cdmBase
659
	 * @return
660
	 */
661
	public static String getPreferenceKey(IDefinedTerm definedTerm) {
662
		definedTerm = HibernateProxyHelper.deproxy(definedTerm);
663
		String key = definedTerm.getClass().getName().concat(".")
664
				.concat(definedTerm.getUuid().toString());
665
		if (key.contains("javassist")) {
666
			MessagingUtils.warn(PreferencesUtil.class,
667
					"Trying to persist a preference based on a proxy class.");
668
		}
669
		return key;
670
	}
671

  
672
	/**
673
	 * Retrieves search preferences from the preference store
674
	 *
675
	 * @return an {@link ITaxonServiceConfigurator} to pass to search methods
676
	 */
677
	public static IFindTaxaAndNamesConfigurator getSearchConfigurator() {
678
		IFindTaxaAndNamesConfigurator configurator = initializeSearchConfigurator();
679

  
680
		configurator.setDoTaxa(getBooleanValue(
681
				TAXON_SERVICE_CONFIGURATOR_TAXA));
682
		configurator.setDoSynonyms(getBooleanValue(
683
				TAXON_SERVICE_CONFIGURATOR_SYNONYMS));
684
		configurator.setDoNamesWithoutTaxa(getBooleanValue(
685
				TAXON_SERVICE_CONFIGURATOR_NAMES));
686
		configurator.setDoTaxaByCommonNames(getBooleanValue(
687
				TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES));
688
		//configurator.setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.valueOf(getStringValue(TAXON_SERVICE_CONFIGURATOR_MATCH_MODE)));
689

  
690
		return configurator;
691
	}
692

  
693
	/**
694
	 * create new preferences, setting all search options to true
695
	 *
696
	 * @return a
697
	 *         {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator}
698
	 *         object.
699
	 */
700
	public static IFindTaxaAndNamesConfigurator initializeSearchConfigurator() {
701
		IFindTaxaAndNamesConfigurator configurator = FindTaxaAndNamesConfiguratorImpl.NewInstance();
702

  
703
		configurator.setDoTaxa(true);
704
		configurator.setDoSynonyms(true);
705
		configurator.setDoNamesWithoutTaxa(true);
706
		configurator.setDoTaxaByCommonNames(true);
707

  
708
		configurator.setTaxonPropertyPath(Arrays.asList("$", "titleCache",
709
				"name", "name.$", "relationsFromThisTaxon.$"));
710

  
711
		configurator.setSynonymPropertyPath(Arrays.asList("$", "titleCache",
712
				"name", "name.$", "synonyms.relatedTo.*"));
713

  
714
		// DEFAULT VALUES
715
		// match mode is a simple like, actually all other match modes are kind
716
		// of bogus
717
		configurator
718
				.setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.ANYWHERE);
719
		// we set page number and size here as this should always be unlimited
720
		configurator.setPageNumber(0);
721
		// TODO currently limit results to 10000
722
		configurator.setPageSize(10000);
723
		//setSearchConfigurator(configurator) ;
724
		return configurator;
725
	}
726

  
727
	/**
728
	 * Store search preferences
729
	 *
730
	 * @param configurator
731
	 *            a
732
	 *            {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator}
733
	 *            object.
734
	 */
735
	public static void setSearchConfigurator(
736
			IFindTaxaAndNamesConfigurator configurator) {
737
		getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_TAXA,
738
				configurator.isDoTaxa());
739
		getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_SYNONYMS,
740
				configurator.isDoSynonyms());
741
		getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_NAMES,
742
				configurator.isDoNamesWithoutTaxa());
743
		getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES,
744
				configurator.isDoTaxaByCommonNames());
745
	}
746

  
747
	public static void firePreferencesChanged(Class clazz) {
748
		getPreferenceStore().firePropertyChangeEvent(PREFERRED_TERMS_CHANGE,
749
				null, clazz);
750
	}
751

  
752
	public static String createPreferenceString(String property){
753
	   return prefKey(property);
754

  
755
	}
756
	public static String createOverridePreferenceString(String property){
757
	       return prefOverrideKey(property);
758

  
759
	    }
760

  
761
	/**
762
	 * Set default values for preferences
763
	 */
764
	public static void setDefaults() {
765
		getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true);
766
		getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS,
767
				true);
768
		getPreferenceStore().setDefault(createPreferenceString(EDIT_MAP_SERVICE_ACCES_POINT),
769
				"http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php");
770
		//FIXME : changed default for SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution
771
		getPreferenceStore().setDefault(createPreferenceString(SHOULD_CONNECT_AT_STARTUP), false);
772
		getPreferenceStore().setDefault(createPreferenceString(OPENURL_ACCESS_POINT),
773
				"http://www.biodiversitylibrary.org/openurl");
774
		getPreferenceStore().setDefault(createPreferenceString(OPENURL_IMAGE_MAX_WIDTH), "1000");
775
		getPreferenceStore().setDefault(createPreferenceString(OPENURL_IMAGE_MAX_HEIGHT), "1000");
776
		getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true);
777
		getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS, true);
778
		getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_NAMES, true);
779
		getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES, true);
780

  
781
		//Distribution Editor:
782
//		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DistributionEditorActivated.getKey()), Boolean.valueOf(PreferencePredicate.DistributionEditorActivated.getDefaultValue().toString()));
783
//		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisplayOfAreasInDistributionEditor.getKey()), PreferencePredicate.DisplayOfAreasInDistributionEditor.getDefaultValue().toString());
784
//		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisplayOfStatus.getKey()), PreferencePredicate.DisplayOfStatus.getDefaultValue().toString());
785

  
786

  
787
		//Name Details
788
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.NameDetailsView.getKey()), new NameDetailsConfigurator(false).toString());
789

  
790
		//Navigator preferences
791
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), NavigatorOrderEnum.RankAndNameOrder.getKey());
792

  
793
		//getPreferenceStore().setDefault(createPreferenceString(Prefe), true);
794

  
795
		getPreferenceStore().setDefault(createPreferenceString(SHOW_ADVANCED_MEDIA_SECTION), false);
606
    /**
607
     * Get the match strategy for the given class that was stored in preferences
608
     * or the default strategy if it was not stored in preferences
609
     *
610
     * @param clazz
611
     *            a {@link java.lang.Class} object.
612
     * @return a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy} object.
613
     */
614
    public static IMatchStrategy getMatchStrategy(Class<?> clazz) {
615
        String className = clazz.getName();
616
        if (getBooleanValue(MATCH_STRATEGY_PREFIX + className)) {
617
            IMatchStrategy matchStrategy = getDefaultMatchStrategy(clazz);
618

  
619
            //TODO CacheMatchers (or multiple field matchers in future) are missing here
620
            for (FieldMatcher fieldMatcher : matchStrategy.getMatching().getFieldMatchers(false)) {
621
                String fieldName = fieldMatcher.getPropertyName();
622
                String matchModeName = getStringValue(
623
                        getMatchStrategyFieldName(className, fieldName));
624
                MatchMode matchMode = MatchMode.valueOf(matchModeName);
625
                try {
626
                    matchStrategy.setMatchMode(fieldName, matchMode);
627
                } catch (MatchException e) {
628
                    MessagingUtils.error(PreferencesUtil.class, e);
629
                    throw new RuntimeException(e);
630
                }
631
            }
632

  
633
            return matchStrategy;
634
        }
635
        return getDefaultMatchStrategy(clazz);
636
    }
637

  
638
    /**
639
     * Stores a matchStrategy into the preference store.
640
     *
641
     * @param matchStrategy
642
     *            a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy}
643
     *            object.
644
     */
645
    public static void setMatchStrategy(IMatchStrategy matchStrategy) {
646
        String className = "ANY class"; //FIXME was: matchStrategy.getMatchClass().getName(); seems currently not in use
647
        setBooleanValue(MATCH_STRATEGY_PREFIX + className, true);
648

  
649
        List<FieldMatcher> fieldMatchers = matchStrategy.getMatching().getFieldMatchers(false);
650

  
651
        for (FieldMatcher fieldMatcher : fieldMatchers) {
652
            String fieldName = fieldMatcher.getPropertyName();
653
            setStringValue(
654
                    getMatchStrategyFieldName(className, fieldName),
655
                    fieldMatcher.getMatchMode().name());
656
        }
657
    }
658

  
659
    /**
660
     * Helper method to create the preference property for a match field.
661
     *
662
     * @param className
663
     * @param fieldName
664
     * @return
665
     */
666
    private static String getMatchStrategyFieldName(String className,
667
            String fieldName) {
668
        return MATCH_STRATEGY_PREFIX + className + "." + fieldName;
669
    }
670

  
671
    /**
672
     * Returns the default match strategy for a given class.
673
     *
674
     * @param clazz
675
     *            a {@link java.lang.Class} object.
676
     * @return a {@link eu.etaxonomy.cdm.strategy.match.IMatchStrategy} object.
677
     */
678
    public static IMatchStrategy getDefaultMatchStrategy(Class clazz) {
679
        return DefaultMatchStrategy.NewInstance(clazz);
680
    }
681

  
682
    public static String getDateFormatPattern() {
683
        // TODO make this configurable in properties
684
        String pattern = "Y-M-d H:m";
685
        return pattern;
686
    }
687

  
688
    public static <T extends TermBase> void addTermToPreferredTerms(T term) {
689

  
690
        // VocabularyEnum vocabulary =
691
        // VocabularyEnum.getVocabularyEnum(term.getClass());
692
        //
693
        // getPreferenceStore().setValue(getPreferenceKey(term),
694
        // VocabularyStore.getTermVocabulary(vocabulary).getTerms().contains(term));
695
        //
696
        // firePreferencesChanged(term.getClass());
697
    }
698

  
699
    /**
700
     * Construct a unique key using the CdmBase object's uuid
701
     *
702
     * @param cdmBase
703
     * @return
704
     */
705
    private static String getPreferenceKey(ICdmBase cdmBase) {
706
        cdmBase = HibernateProxyHelper.deproxy(cdmBase);
707

  
708
        String key = cdmBase.getClass().getName().concat(".")
709
                .concat(cdmBase.getUuid().toString());
710
        if (key.contains("javassist")) {
711
            MessagingUtils.info("proxy");
712
        }
713
        return key;
714
    }
715

  
716
    /**
717
     * Construct a unique key using the CdmBase object's uuid
718
     *
719
     * @param cdmBase
720
     * @return
721
     */
722
    public static String getPreferenceKey(ISimpleTerm simpleTerm) {
723
        simpleTerm = HibernateProxyHelper.deproxy(simpleTerm);
724
        String key = simpleTerm.getClass().getName().concat(".")
725
                .concat(simpleTerm.getUuid().toString());
726
        if (key.contains("javassist")) {
727
            MessagingUtils.warn(PreferencesUtil.class,
728
                    "Trying to persist a preference based on a proxy class.");
729
        }
730
        return key;
731
    }
732

  
733

  
734

  
735
    /**
736
     * Construct a unique key using the CdmBase object's uuid
737
     *
738
     * @param cdmBase
739
     * @return
740
     */
741
    public static String getPreferenceKey(IDefinedTerm definedTerm) {
742
        definedTerm = HibernateProxyHelper.deproxy(definedTerm);
743
        String key = definedTerm.getClass().getName().concat(".")
744
                .concat(definedTerm.getUuid().toString());
745
        if (key.contains("javassist")) {
746
            MessagingUtils.warn(PreferencesUtil.class,
747
                    "Trying to persist a preference based on a proxy class.");
748
        }
749
        return key;
750
    }
751

  
752
    /**
753
     * Retrieves search preferences from the preference store
754
     *
755
     * @return an {@link ITaxonServiceConfigurator} to pass to search methods
756
     */
757
    public static IFindTaxaAndNamesConfigurator getSearchConfigurator() {
758
        IFindTaxaAndNamesConfigurator configurator = initializeSearchConfigurator();
759

  
760
        configurator.setDoTaxa(getBooleanValue(
761
                TAXON_SERVICE_CONFIGURATOR_TAXA));
762
        configurator.setDoSynonyms(getBooleanValue(
763
                TAXON_SERVICE_CONFIGURATOR_SYNONYMS));
764
        configurator.setDoNamesWithoutTaxa(getBooleanValue(
765
                TAXON_SERVICE_CONFIGURATOR_NAMES));
766
        configurator.setDoTaxaByCommonNames(getBooleanValue(
767
                TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES));
768
        //configurator.setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.valueOf(getStringValue(TAXON_SERVICE_CONFIGURATOR_MATCH_MODE)));
769

  
770
        return configurator;
771
    }
772

  
773
    /**
774
     * create new preferences, setting all search options to true
775
     *
776
     * @return a
777
     *         {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator}
778
     *         object.
779
     */
780
    public static IFindTaxaAndNamesConfigurator initializeSearchConfigurator() {
781
        IFindTaxaAndNamesConfigurator configurator = FindTaxaAndNamesConfiguratorImpl.NewInstance();
782

  
783
        configurator.setDoTaxa(true);
784
        configurator.setDoSynonyms(true);
785
        configurator.setDoNamesWithoutTaxa(true);
786
        configurator.setDoTaxaByCommonNames(true);
787

  
788
        configurator.setTaxonPropertyPath(Arrays.asList("$", "titleCache",
789
                "name", "name.$", "relationsFromThisTaxon.$"));
790

  
791
        configurator.setSynonymPropertyPath(Arrays.asList("$", "titleCache",
792
                "name", "name.$", "synonyms.relatedTo.*"));
793

  
794
        // DEFAULT VALUES
795
        // match mode is a simple like, actually all other match modes are kind
796
        // of bogus
797
        configurator
798
                .setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.ANYWHERE);
799
        // we set page number and size here as this should always be unlimited
800
        configurator.setPageNumber(0);
801
        // TODO currently limit results to 10000
802
        configurator.setPageSize(10000);
803
        //setSearchConfigurator(configurator) ;
804
        return configurator;
805
    }
806

  
807
    /**
808
     * Store search preferences
809
     *
810
     * @param configurator
811
     *            a
812
     *            {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator}
813
     *            object.
814
     */
815
    public static void setSearchConfigurator(
816
            IFindTaxaAndNamesConfigurator configurator) {
817
        getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_TAXA,
818
                configurator.isDoTaxa());
819
        getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_SYNONYMS,
820
                configurator.isDoSynonyms());
821
        getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_NAMES,
822
                configurator.isDoNamesWithoutTaxa());
823
        getPreferenceStore().setValue(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES,
824
                configurator.isDoTaxaByCommonNames());
825
    }
826

  
827
    public static void firePreferencesChanged(Class clazz) {
828
        getPreferenceStore().firePropertyChangeEvent(PREFERRED_TERMS_CHANGE,
829
                null, clazz);
830
    }
831

  
832
    public static String createPreferenceString(String property){
833
       return prefKey(property);
834

  
835
    }
836
    public static String createOverridePreferenceString(String property){
837
           return prefOverrideKey(property);
838

  
839
        }
840

  
841
    /**
842
     * Set default values for preferences
843
     */
844
    public static void setDefaults() {
845
        getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true);
846
        getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS,
847
                true);
848
        getPreferenceStore().setDefault(createPreferenceString(EDIT_MAP_SERVICE_ACCES_POINT),
849
                "http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php");
850
        //FIXME : changed default for SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution
851
        getPreferenceStore().setDefault(createPreferenceString(SHOULD_CONNECT_AT_STARTUP), false);
852
        getPreferenceStore().setDefault(createPreferenceString(OPENURL_ACCESS_POINT),
853
                "http://www.biodiversitylibrary.org/openurl");
854
        getPreferenceStore().setDefault(createPreferenceString(OPENURL_IMAGE_MAX_WIDTH), "1000");
855
        getPreferenceStore().setDefault(createPreferenceString(OPENURL_IMAGE_MAX_HEIGHT), "1000");
856
        getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true);
857
        getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS, true);
858
        getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_NAMES, true);
859
        getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES, true);
860

  
861
        //Distribution Editor:
862
//      getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DistributionEditorActivated.getKey()), Boolean.valueOf(PreferencePredicate.DistributionEditorActivated.getDefaultValue().toString()));
863
//      getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisplayOfAreasInDistributionEditor.getKey()), PreferencePredicate.DisplayOfAreasInDistributionEditor.getDefaultValue().toString());
864
//      getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisplayOfStatus.getKey()), PreferencePredicate.DisplayOfStatus.getDefaultValue().toString());
865

  
866

  
867
        //Name Details
868
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.NameDetailsView.getKey()), new NameDetailsConfigurator(false).toString());
869

  
870
        //Navigator preferences
871
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), NavigatorOrderEnum.RankAndNameOrder.getKey());
872

  
873
        //getPreferenceStore().setDefault(createPreferenceString(Prefe), true);
874

  
875
        getPreferenceStore().setDefault(createPreferenceString(SHOW_ADVANCED_MEDIA_SECTION), false);
796 876

  
797 877
        getPreferenceStore().setDefault(createPreferenceString(SHOW_MEDIA_PREVIEW), false);
798
		//override db preferences
799
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey())), false);
800
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.ShowSpecimen.getKey())), true);
801
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.NameDetailsView.getKey())), false);
802
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.DistributionEditorActivated.getKey())), true);
803
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionStatus.getKey())), true);
804
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaTerms.getKey())), true);
805
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey())), true);
806
		getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.CommonNameAreaVocabularies.getKey())), false);
807
		getPreferenceStore().setDefault(createPreferenceString(FILTER_COMMON_NAME_REFERENCES), false);
808
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowTaxonNodeWizard.getKey()), Boolean.valueOf(PreferencePredicate.ShowTaxonNodeWizard.getDefaultValue().toString()));
809
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowNamespaceInSource.getKey()), Boolean.valueOf(PreferencePredicate.ShowNamespaceInSource.getDefaultValue().toString()));
810
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowIdInSource.getKey()), Boolean.valueOf(PreferencePredicate.ShowIdInSource.getDefaultValue().toString()));
811
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisableMultiClassification.getKey()), Boolean.valueOf(PreferencePredicate.DisableMultiClassification.getDefaultValue().toString()));
812
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowImportExportMenu.getKey()), Boolean.valueOf(PreferencePredicate.ShowImportExportMenu.getDefaultValue().toString()));
813
		getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowSpecimen.getKey()), Boolean.valueOf(PreferencePredicate.ShowSpecimen.getDefaultValue().toString()));
814

  
815
	}
816

  
817
	public static void checkNomenclaturalCode() {
818
		// First time Editor is opened, no nomenclatural code has been set
819
		if (PreferencesUtil.getPreferredNomenclaturalCode() == null) {
820
			PreferencesUtil.setPreferredNomenclaturalCode(getPreferenceKey(NomenclaturalCode.ICNAFP), true);
821
		}
822

  
823

  
824

  
825
	}
826
	public static void setNomenclaturalCodePreferences(){
827
	    ICdmRepository controller;
878
        //override db preferences
879
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey())), false);
880
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.ShowSpecimen.getKey())), true);
881
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.NameDetailsView.getKey())), false);
882
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.DistributionEditorActivated.getKey())), true);
883
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionStatus.getKey())), true);
884
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaTerms.getKey())), true);
885
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey())), true);
886
        getPreferenceStore().setDefault(createPreferenceString(prefOverrideKey(PreferencePredicate.CommonNameAreaVocabularies.getKey())), false);
887
        getPreferenceStore().setDefault(createPreferenceString(FILTER_COMMON_NAME_REFERENCES), false);
888
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowTaxonNodeWizard.getKey()), Boolean.valueOf(PreferencePredicate.ShowTaxonNodeWizard.getDefaultValue().toString()));
889
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowNamespaceInSource.getKey()), Boolean.valueOf(PreferencePredicate.ShowNamespaceInSource.getDefaultValue().toString()));
890
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowIdInSource.getKey()), Boolean.valueOf(PreferencePredicate.ShowIdInSource.getDefaultValue().toString()));
891
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.DisableMultiClassification.getKey()), Boolean.valueOf(PreferencePredicate.DisableMultiClassification.getDefaultValue().toString()));
892
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowImportExportMenu.getKey()), Boolean.valueOf(PreferencePredicate.ShowImportExportMenu.getDefaultValue().toString()));
893
        getPreferenceStore().setDefault(createPreferenceString(PreferencePredicate.ShowSpecimen.getKey()), Boolean.valueOf(PreferencePredicate.ShowSpecimen.getDefaultValue().toString()));
894

  
895
    }
896

  
897
    public static void checkNomenclaturalCode() {
898
        // First time Editor is opened, no nomenclatural code has been set
899
        if (PreferencesUtil.getPreferredNomenclaturalCode() == null) {
900
            PreferencesUtil.setPreferredNomenclaturalCode(getPreferenceKey(NomenclaturalCode.ICNAFP), true);
901
        }
902

  
903

  
904

  
905
    }
906
    public static void setNomenclaturalCodePreferences(){
907
        ICdmRepository controller;
828 908
        controller = CdmStore.getCurrentApplicationConfiguration();
829 909
        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
830 910
        CdmPreference preference = null;
......
844 924
        setStringValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
845 925
                getPreferenceKey(preferredCode));
846 926

  
847
	}
848

  
849
	public static void checkDefaultLanguage(){
850
	    if(PreferencesUtil.getPreferredDefaultLangugae() == null){
851
	       Shell shell = AbstractUtility.getShell();
852
	       int open = new DefaultLanguageDialog(shell).open();
853
	       if(open == Window.OK){
854
	           PlatformUI.getWorkbench().restart();
855
	       }
856
	    }else{
857
	        //TODO:In case of a reinstall, the config.ini will be overwritten
858
	        //     here you create config.ini with the stored key from preferences
859
	    }
860
	}
861

  
862
	public static String getMapServiceAccessPoint() {
863
		return getStringValue(EDIT_MAP_SERVICE_ACCES_POINT);
864
	}
865

  
866
	public static boolean shouldConnectAtStartUp() {
867
		//FIXME :  force SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution
868
		//return getBooleanValue(SHOULD_CONNECT_AT_STARTUP);
869
		return false;
870
	}
871

  
872
	public static FeatureTree getDefaultFeatureTreeForTextualDescription() {
873
		String uuidString = getStringValue(
874
				FEATURE_TREE_DEFAULT_TEXT);
875
		if (StringUtils.isBlank(uuidString)) {
927
    }
928

  
929
    public static void checkDefaultLanguage(){
930
        if(PreferencesUtil.getPreferredDefaultLangugae() == null){
931
           Shell shell = AbstractUtility.getShell();
932
           int open = new DefaultLanguageDialog(shell).open();
933
           if(open == Window.OK){
934
               PlatformUI.getWorkbench().restart();
935
           }
936
        }else{
937
            //TODO:In case of a reinstall, the config.ini will be overwritten
938
            //     here you create config.ini with the stored key from preferences
939
        }
940
    }
941

  
942
    public static String getMapServiceAccessPoint() {
943
        return getStringValue(EDIT_MAP_SERVICE_ACCES_POINT);
944
    }
945

  
946
    public static boolean shouldConnectAtStartUp() {
947
        //FIXME :  force SHOULD_CONNECT_AT_STARTUP to false (ticket 3828) until resolution
948
        //return getBooleanValue(SHOULD_CONNECT_AT_STARTUP);
949
        return false;
950
    }
951

  
952
    public static FeatureTree getDefaultFeatureTreeForTextualDescription() {
953
        String uuidString = getStringValue(
954
                FEATURE_TREE_DEFAULT_TEXT);
955
        if (StringUtils.isBlank(uuidString)) {
876 956
            return null;
877 957
        }
878
		FeatureTree tree = CdmStore.getService(
879
	                IFeatureTreeService.class).load(UUID.fromString(uuidString));
880
		if (tree.getId() == 0) {
958
        FeatureTree tree = CdmStore.getService(
959
                    IFeatureTreeService.class).load(UUID.fromString(uuidString));
960
        if (tree.getId() == 0) {
881 961
            return null;
882 962
        }
883
		return tree;
884
	}
963
        return tree;
964
    }
885 965

  
886
	public static FeatureTree getDefaultFeatureTreeForStructuredDescription() {
887
		String uuidString = getStringValue(
888
				FEATURE_TREE_DEFAULT_STRUCTURE);
889
		return CdmUtils.isEmpty(uuidString) ? null : CdmStore.getService(
890
				IFeatureTreeService.class).load(UUID.fromString(uuidString));
891
	}
966
    public static FeatureTree getDefaultFeatureTreeForStructuredDescription() {
967
        String uuidString = getStringValue(
968
                FEATURE_TREE_DEFAULT_STRUCTURE);
969
        return CdmUtils.isEmpty(uuidString) ? null : CdmStore.getService(
970
                IFeatureTreeService.class).load(UUID.fromString(uuidString));
971
    }
892 972

  
893
	public static void setSortRanksHierarchichally(boolean selection) {
894
		setBooleanValue(SORT_RANKS_HIERARCHICHALLY, selection);
895
	}
973
    public static void setSortRanksHierarchichally(boolean selection) {
974
        setBooleanValue(SORT_RANKS_HIERARCHICHALLY, selection);
975
    }
896 976

  
897
	public static boolean getSortRanksHierarchichally() {
898
		return getBooleanValue(SORT_RANKS_HIERARCHICHALLY);
899
	}
977
    public static boolean getSortRanksHierarchichally() {
978
        return getBooleanValue(SORT_RANKS_HIERARCHICHALLY);
979
    }
900 980

  
901
	public static boolean isMultilanguageTextEditingCapability() {
902
		return getBooleanValue(
903
				MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
904
	}
981
    public static boolean isMultilanguageTextEditingCapability() {
982
        return getBooleanValue(
983
                MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
984
    }
905 985

  
906
	public static Language getGlobalLanguage() {
986
    public static Language getGlobalLanguage() {
907 987

  
908 988

  
909
		String languageUuidString = getStringValue(
910
				GLOBAL_LANGUAGE_UUID);
989
        String languageUuidString = getStringValue(
990
                GLOBAL_LANGUAGE_UUID);
911 991

  
912
		if(!CdmStore.isActive()) {
992
        if(!CdmStore.isActive()) {
913 993
            MessagingUtils.noDataSourceWarningDialog(languageUuidString);
914 994
            return null;
915 995
        }
916 996

  
917
		if (CdmUtils.isBlank(languageUuidString)) {
918
			return Language.getDefaultLanguage();
919
		}
920

  
921
		UUID languageUuid = UUID.fromString(languageUuidString);
922
		return (Language) CdmStore.getService(ITermService.class).load(
923
				languageUuid);
924
	}
925

  
926
	public static void setGlobalLanguage(Language language) {
927
	    if(language != null) {
928
	        setStringValue(GLOBAL_LANGUAGE_UUID,language.getUuid().toString());
929
	        CdmStore.setDefaultLanguage(language);
930
	    }
931

  
932
	}
933

  
934
	public static Map<MarkerType, Boolean> getEditMarkerTypePreferences() {
935
		List<MarkerType> markerTypes = CdmStore.getTermManager()
936
				.getPreferredTerms(MarkerType.class);
937

  
938
		Map<MarkerType, Boolean> result = new HashMap<MarkerType, Boolean>();
939

  
940
		for (MarkerType markerType : markerTypes) {
941
			String name = getMarkerTypeEditingPreferenceKey(markerType);
942
			Boolean value = getBooleanValue(name);
943

  
944
			result.put(markerType, value);
945
		}
946

  
947
		return result;
948
	}
949

  
950
	public static void setEditMarkerTypePreferences(
951
			Map<MarkerType, Boolean> markerTypeEditingMap) {
952
		for (MarkerType markerType : markerTypeEditingMap.keySet()) {
953
			String name = getMarkerTypeEditingPreferenceKey(markerType);
954
			setBooleanValue(name,
955
					markerTypeEditingMap.get(markerType));
956
		}
957

  
958
	}
959

  
960
	private static String getMarkerTypeEditingPreferenceKey(
961
			MarkerType markerType) {
962
		markerType = HibernateProxyHelper.deproxy(markerType);
963
		return markerType.getClass().getName() + EDIT_MARKER_TYPE_PREFIX;
964
	}
965

  
966
	public static void setEditMarkerTypePreference(MarkerType markerType,
967
			boolean edit) {
968
		setBooleanValue(
969
				getMarkerTypeEditingPreferenceKey(markerType), edit);
970
	}
971

  
972
	public static DerivedUnitFacadeConfigurator getDerivedUnitConfigurator() {
973
		DerivedUnitFacadeConfigurator configurator = DerivedUnitFacadeConfigurator
974
				.NewInstance();
975
		configurator.setMoveDerivedUnitMediaToGallery(true);
976
		configurator.setMoveFieldObjectMediaToGallery(true);
977
		return configurator;
978
	}
979

  
980
	/**
981
	 * This method will write language properties to the config.ini located in the configuration folder
982
	 * of the Taxonomic Ediitor. <b>This method is only used to set the default language for Taxonomic Editor.</b>
983
	 *
984
	 * @param setLanguage 0 is for german and 1 for english.
985
	 * @throws IOException
986
	 */
997
        if (CdmUtils.isBlank(languageUuidString)) {
998
            return Language.getDefaultLanguage();
999
        }
1000

  
1001
        UUID languageUuid = UUID.fromString(languageUuidString);
1002
        return (Language) CdmStore.getService(ITermService.class).load(
1003
                languageUuid);
1004
    }
1005

  
1006
    public static void setGlobalLanguage(Language language) {
1007
        if(language != null) {
1008
            setStringValue(GLOBAL_LANGUAGE_UUID,language.getUuid().toString());
1009
            CdmStore.setDefaultLanguage(language);
1010
        }
1011

  
1012
    }
1013

  
1014
    public static Map<MarkerType, Boolean> getEditMarkerTypePreferences() {
1015
        List<MarkerType> markerTypes = CdmStore.getTermManager()
1016
                .getPreferredTerms(MarkerType.class);
1017

  
1018
        Map<MarkerType, Boolean> result = new HashMap<MarkerType, Boolean>();
1019

  
1020
        for (MarkerType markerType : markerTypes) {
1021
            String name = getMarkerTypeEditingPreferenceKey(markerType);
1022
            Boolean value = getBooleanValue(name);
1023

  
1024
            result.put(markerType, value);
1025
        }
1026

  
1027
        return result;
1028
    }
1029

  
1030
    public static void setEditMarkerTypePreferences(
1031
            Map<MarkerType, Boolean> markerTypeEditingMap) {
1032
        for (MarkerType markerType : markerTypeEditingMap.keySet()) {
1033
            String name = getMarkerTypeEditingPreferenceKey(markerType);
1034
            setBooleanValue(name,
1035
                    markerTypeEditingMap.get(markerType));
1036
        }
1037

  
1038
    }
1039

  
1040
    private static String getMarkerTypeEditingPreferenceKey(
1041
            MarkerType markerType) {
1042
        markerType = HibernateProxyHelper.deproxy(markerType);
1043
        return markerType.getClass().getName() + EDIT_MARKER_TYPE_PREFIX;
1044
    }
1045

  
1046
    public static void setEditMarkerTypePreference(MarkerType markerType,
1047
            boolean edit) {
1048
        setBooleanValue(
1049
                getMarkerTypeEditingPreferenceKey(markerType), edit);
1050
    }
1051

  
1052
    public static DerivedUnitFacadeConfigurator getDerivedUnitConfigurator() {
1053
        DerivedUnitFacadeConfigurator configurator = DerivedUnitFacadeConfigurator
1054
                .NewInstance();
1055
        configurator.setMoveDerivedUnitMediaToGallery(true);
1056
        configurator.setMoveFieldObjectMediaToGallery(true);
1057
        return configurator;
1058
    }
1059

  
1060
    /**
1061
     * This method will write language properties to the config.ini located in the configuration folder
1062
     * of the Taxonomic Ediitor. <b>This method is only used to set the default language for Taxonomic Editor.</b>
1063
     *
1064
     * @param setLanguage 0 is for german and 1 for english.
1065
     * @throws IOException
1066
     */
987 1067
    public void writePropertyToConfigFile(int setLanguage) throws IOException {
988 1068
        File file = org.eclipse.core.runtime.preferences.ConfigurationScope.INSTANCE.getLocation().toFile();
989 1069
        //give warning to user if the directory has no write access
......
1137 1217
    }
1138 1218

  
1139 1219
    public static boolean isStoreNavigatorState() {
1140
		return getBooleanValue(RESTORE_NAVIGATOR_STATE);
1220
        return getBooleanValue(RESTORE_NAVIGATOR_STATE);
1141 1221

  
1142
	}
1222
    }
1143 1223

  
1144
	public static void setStoreNavigatorState(boolean selection) {
1145
		setBooleanValue(RESTORE_NAVIGATOR_STATE, selection);
1224
    public static void setStoreNavigatorState(boolean selection) {
1225
        setBooleanValue(RESTORE_NAVIGATOR_STATE, selection);
1146 1226

  
1147
	}
1227
    }
1148 1228

  
1149 1229
    public static boolean isShowUpWidgetIsDisposedMessages() {
1150 1230
       return getBooleanValue(IS_SHOW_UP_WIDGET_IS_DISPOSED);
......
1329 1409
    }
1330 1410

  
1331 1411
    private static Boolean getValue(Map<String, Boolean> sectionMap, String string) {
1332
		if (sectionMap.containsKey(string)){
1333
			return sectionMap.get(string);
1334
		}else{
1335
			return true;
1336
		}
1412
        if (sectionMap.containsKey(string)){
1413
            return sectionMap.get(string);
1414
        }else{
1415
            return true;
1416
        }
1337 1417

  
1338
	}
1418
    }
1339 1419

  
1340 1420
    public static Abcd206ImportConfigurator getDBAbcdImportConfigurationPreference() {
1341 1421

  
......
1598 1678
    }
1599 1679

  
1600 1680
    public static void updateDBPreferences() {
1601
        CdmPreference preference = null;
1681

  
1682

  
1602 1683
        CdmPreferenceCache cache = CdmPreferenceCache.instance();
1603 1684
        cache.getAllTaxEditorDBPreferences();
1604 1685

  

Also available in: Unified diff