Project

General

Profile

« Previous | Next » 

Revision 4bafd675

Added by Andreas Müller almost 3 years ago

ref #9664 , ref #4311 fix updateCaches in Person

View differences:

cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/agent/Person.java
36 36
import org.hibernate.search.annotations.IndexedEmbedded;
37 37
import org.springframework.beans.factory.annotation.Configurable;
38 38

  
39
import eu.etaxonomy.cdm.common.CdmUtils;
39 40
import eu.etaxonomy.cdm.hibernate.search.OrcidBridge;
40 41
import eu.etaxonomy.cdm.model.common.TimePeriod;
41 42
import eu.etaxonomy.cdm.strategy.cache.agent.PersonDefaultCacheStrategy;
......
455 456
    public boolean updateCaches(){
456 457
        boolean result = false;
457 458
        result |= super.updateCaches();
458
        if (this.nomenclaturalTitle == null){
459
            this.nomenclaturalTitleCache = this.getTitleCache();
460
            if ( this.nomenclaturalTitleCache != null ){
461
                 result = true;
462
            }
463
         }
459
        result |= updateNomenclaturalCache();
460
        result |= updateCollectorCache();
464 461

  
465 462
         return result;
463
    }
464

  
465
    private boolean updateNomenclaturalCache() {
466
        //updates the nomenclaturalTitleCache if necessary
467
        String oldCache = this.nomenclaturalTitleCache;
468
        String newCache = getCacheStrategy().getNomenclaturalTitleCache(this);
469
        if (!CdmUtils.nullSafeEqual(oldCache, newCache)){
470
//            this.setNomenclaturalTitleCache(null, false);
471
            this.getNomenclaturalTitleCache();
472
            return true;
473
        }
474
        return false;
475
    }
476

  
477
    private boolean updateCollectorCache() {
478
        //updates the collectorTitleCache if necessary
479
        String oldCache = this.collectorTitleCache;
480
        String newCache = getCacheStrategy().getCollectorTitleCache(this);
481
        if (!CdmUtils.nullSafeEqual(oldCache, newCache)){
482
//            this.setNomenclaturalTitleCache(null, false);
483
            this.getCollectorTitleCache();
484
            return true;
485
        }
486
        return false;
466 487
     }
467 488

  
468 489
//*********************** CLONE ********************************************************/
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/agent/PersonDefaultCacheStrategy.java
74 74

  
75 75
    @Override
76 76
    public String getTitleCache(Person person) {
77
        if (person.isProtectedTitleCache()){
78
            return person.getTitleCache();
79
        }
77 80
        String result = "";
81

  
78 82
        if (isNotBlank(person.getFamilyName() ) ){
79 83
            result = person.getFamilyName().trim();
80 84
            result = addInitials(result, person);
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/AgentServiceImplTest.java
268 268
        turland_monro = (Team) service.load(UUID.fromString("30ca93d6-b543-4bb9-b6ff-e9ededa65af7"));
269 269
        ehrenberg = (Person)service.load(UUID_EHRENBERG);
270 270

  
271
        assertEquals("Expecting nomenclaturalTitle to be set since it was NULL", "Turland, N.J.", nomenclaturalTitleField.get(turland));
272
        assertEquals("Expecting nomenclaturalTitle to be set since it was NULL", "Ehrenb.", nomenclaturalTitleField.get(ehrenberg));
271
        assertNull("Expecting nomenclaturalTitle to be still NULL", nomenclaturalTitleField.get(turland));
272
        assertEquals("Expecting nomenclaturalTitleCache to be set since it was NULL", "Turland, N.J.", nomenclaturalTitleCacheField.get(turland));
273
        assertNull("Expecting nomenclaturalTitle to be still NULL", nomenclaturalTitleField.get(ehrenberg));
274
        assertEquals("Expecting nomenclaturalTitleCache to be set since it was NULL", "Ehrenb.", nomenclaturalTitleCacheField.get(ehrenberg));
273 275
        assertEquals("Expecting titleChache to be unchaged since it was protecetd", "Ehrenb.", ehrenberg.getTitleCache());
274
        assertEquals("Expecting nomenclaturalTitle to be unchanged", "A.M. Monro", nomenclaturalTitleField.get(monro).toString());
276
        assertEquals("Expecting nomenclaturalTitleCache to be unchanged", "A.M. Monro", nomenclaturalTitleCacheField.get(monro).toString());
275 277

  
276 278
        assertEquals("Turland, Monro", nomenclaturalTitleCacheField.get(turland_monro_protected));
277 279
        assertEquals("Turland, N.J. & A.M. Monro", nomenclaturalTitleCacheField.get(turland_monro).toString());

Also available in: Unified diff