Project

General

Profile

« Previous | Next » 

Revision 3eecdd85

Added by Andreas Müller about 5 years ago

ref #8062 first implementation to delete default preferences (only for cdmlib predicates)

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/PreferenceDaoImpl.java
19 19
import org.springframework.beans.factory.InitializingBean;
20 20
import org.springframework.stereotype.Repository;
21 21

  
22
import eu.etaxonomy.cdm.common.CdmUtils;
22 23
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
23 24
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
24 25
import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
26
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
25 27
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
26 28
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
27 29
import eu.etaxonomy.cdm.persistence.dao.common.IPreferenceDao;
......
54 56
		if (pref != null){
55 57
			getSession().delete(pref);
56 58
		}
57
		getSession().save(preference);
59
		IPreferencePredicate<?> predicate = PreferencePredicate.getByKey(preference.getPredicate());
60
		if (predicate == null ||
61
		        !preference.isAllowOverride() ||
62
		        !CdmUtils.nullSafeEqual(predicate.getDefaultValue().toString(), preference.getValue())){
63
		    //do not save is value is default value with allow override
64
		    getSession().save(preference);
65
		}
58 66

  
59 67
		//old
60 68
//		if (pref == null){
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/PreferenceDaoTest.java
91 91

  
92 92
         CdmPreference pref = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.Test, "200");
93 93
//         CdmPreference pref = CdmPreference.NewInstance(PreferenceSubjectEnum.Database, PreferencePredicate.Test, "200");
94
        int addedPrefs = 1;
94 95
        dao.set(pref);
95 96
	   	long count = dao.count();
96
	    Assert.assertEquals("There should be 1 new preference", countStart + 1, count);
97
	    Assert.assertEquals("There should be 1 new preference", countStart + addedPrefs, count);
97 98

  
98 99
	    pref = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, "ICZN");
99 100
//        pref = CdmPreference.NewInstance(PreferenceSubjectEnum.Database, PreferencePredicate.NomenclaturalCode, "ICZN");
100 101
        dao.set(pref);
101 102

  
102 103
	   	count = dao.count();
103
	    Assert.assertEquals("There should be only 1 new preference", countStart + 1, count);
104
	    Assert.assertEquals("There should still be only 1 new preference", countStart + addedPrefs, count);
105

  
106
	    //delete default values
107
	    pref = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, PreferencePredicate.NomenclaturalCode.getDefaultValue().toString());
108
	    pref.setAllowOverride(true);
109
	    dao.set(pref);
110
	    count = dao.count();
111
        Assert.assertEquals("There should be only 1 preference left. Nomenclatural Code should be delete", addedPrefs, count);
112

  
113
        pref = dao.get(CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode));
114
        Assert.assertNull(pref);
104 115
    }
105 116

  
106 117
    @Test

Also available in: Unified diff