Project

General

Profile

Download (3.67 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.api.service.util;
2

    
3
import org.apache.log4j.Logger;
4

    
5
import eu.etaxonomy.cdm.model.agent.AgentBase;
6
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
7
import eu.etaxonomy.cdm.model.description.DescriptionBase;
8
import eu.etaxonomy.cdm.model.media.Media;
9
import eu.etaxonomy.cdm.model.molecular.Sequence;
10
import eu.etaxonomy.cdm.model.name.TaxonName;
11
import eu.etaxonomy.cdm.model.occurrence.Collection;
12
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
13
import eu.etaxonomy.cdm.model.reference.Reference;
14
import eu.etaxonomy.cdm.model.taxon.Classification;
15
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
16
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
17
import eu.etaxonomy.cdm.model.term.FeatureTree;
18
import eu.etaxonomy.cdm.model.term.TermVocabulary;
19
import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseShortSecCacheStrategy;
20

    
21
//@Component
22
public class CacheUpdaterWithNewCacheStrategy extends CacheUpdater {
23

    
24
    private static final long serialVersionUID = 7667521864001167289L;
25
    private static final Logger logger = Logger.getLogger(CacheUpdaterWithNewCacheStrategy.class);
26

    
27

    
28
	private boolean handleSingleTableClass(Class<? extends IdentifiableEntity> clazz) {
29
		logger.warn("Updating class " + clazz.getSimpleName() + " ...");
30
		try {
31
			//TermBase
32
			if (DefinedTermBase.class.isAssignableFrom(clazz)){
33
				termService.updateCaches((Class) clazz, null, null, null);
34
			}else if (FeatureTree.class.isAssignableFrom(clazz)){
35
				featureTreeService.updateCaches((Class) clazz, null, null, null);
36
			}else if (TermVocabulary.class.isAssignableFrom(clazz)){
37
				vocabularyService.updateCaches((Class) clazz, null, null, null);
38
			}
39
			//DescriptionBase
40
			else if (DescriptionBase.class.isAssignableFrom(clazz)){
41
				descriptionService.updateCaches((Class) clazz, null, null, null);
42
			}
43
			//Media
44
			else if (Media.class.isAssignableFrom(clazz)){
45
				mediaService.updateCaches((Class) clazz, null, null, null);
46
			}//TaxonBase
47
			else if (TaxonBase.class.isAssignableFrom(clazz)){
48
				TaxonBaseShortSecCacheStrategy<TaxonBase> cacheStrategy = new TaxonBaseShortSecCacheStrategy<TaxonBase>();
49
				taxonService.updateCaches((Class) clazz, null,cacheStrategy , null);
50
			}
51
			//IdentifiableMediaEntity
52
			else if (AgentBase.class.isAssignableFrom(clazz)){
53
				agentService.updateCaches((Class) clazz, null, null, null);
54
			}else if (Collection.class.isAssignableFrom(clazz)){
55
				collectionService.updateCaches((Class) clazz, null, null, null);
56
			}else if (Reference.class.isAssignableFrom(clazz)){
57
				referenceService.updateCaches((Class) clazz, null, null, null);
58
			}else if (SpecimenOrObservationBase.class.isAssignableFrom(clazz)){
59
				occurrenceService.updateCaches((Class) clazz, null, null, null);
60

    
61
			}
62
			//Sequence
63
			else if (Sequence.class.isAssignableFrom(clazz)){
64
				//TODO misuse TaxonServic for sequence update, use sequence service when it exists
65
				taxonService.updateCaches((Class) clazz, null, null, null);
66
			}
67
			//TaxonName
68
			else if (TaxonName.class.isAssignableFrom(clazz)){
69
				nameService.updateCaches((Class) clazz, null, null, null);
70
			}
71
			//Classification
72
			else if (Classification.class.isAssignableFrom(clazz)){
73
				classificationService.updateCaches((Class) clazz, null, null, null);
74
			}
75
			//unknown class
76
			else {
77
				String warning = "Unknown identifable entity subclass + " + clazz.getName();
78
				logger.error(warning);
79
				return false;
80
				//getTaxonService().updateTitleCache((Class) clazz);
81
			}
82
			return true;
83
		} catch (Exception e) {
84
			String warning = "Exception occurred when trying to update class + " + clazz.getName();
85
			warning += " Exception was: " + e.getMessage();
86
			logger.error(warning);
87
			e.printStackTrace();
88
			return false;
89
		}
90
	}
91

    
92
}
(3-3/5)