Revision 3eecdd85
Added by Andreas Müller about 5 years ago
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
ref #8062 first implementation to delete default preferences (only for cdmlib predicates)