Project

General

Profile

Download (3.44 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.strategy.cache.name;
11

    
12
import java.util.List;
13
import java.util.UUID;
14

    
15
import org.apache.log4j.Logger;
16

    
17
import eu.etaxonomy.cdm.common.CdmUtils;
18
import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
19
import eu.etaxonomy.cdm.model.name.IZoologicalName;
20
import eu.etaxonomy.cdm.strategy.cache.TaggedText;
21

    
22
public class ZooNameDefaultCacheStrategy
23
            extends NonViralNameDefaultCacheStrategy<IZoologicalName> {
24

    
25
	@SuppressWarnings("unused")
26
	private static final Logger logger = Logger.getLogger(ZooNameDefaultCacheStrategy.class);
27
	private static final long serialVersionUID = 6640953957903705560L;
28

    
29
	final static UUID uuid = UUID.fromString("950c4236-8156-4675-b866-785df33bc4d9");
30

    
31
	protected String AuthorYearSeperator = ", ";
32

    
33
	@Override
34
	public UUID getUuid(){
35
		return uuid;
36
	}
37

    
38

    
39
	/**
40
	 * Factory method
41
	 * @return
42
	 */
43
	public static ZooNameDefaultCacheStrategy NewInstance(){
44
		return new ZooNameDefaultCacheStrategy();
45
	}
46

    
47
	/**
48
	 * Constructor
49
	 */
50
	protected ZooNameDefaultCacheStrategy(){
51
		super();
52
	}
53

    
54

    
55

    
56
	/**
57
	 * @return Strings that separates the author part and the year part
58
	 * @return
59
	 */
60
	public String getAuthorYearSeperator() {
61
		return AuthorYearSeperator;
62
	}
63

    
64

    
65
	public void setAuthorYearSeperator(String authorYearSeperator) {
66
		AuthorYearSeperator = authorYearSeperator;
67
	}
68

    
69
	@Override
70
	protected String getNonCacheAuthorshipCache(IZoologicalName nonViralName) {
71
		if (nonViralName == null){
72
			return null;
73
		}
74
		String result = "";
75
		INomenclaturalAuthor combinationAuthor = nonViralName.getCombinationAuthorship();
76
		INomenclaturalAuthor exCombinationAuthor = nonViralName.getExCombinationAuthorship();
77
		INomenclaturalAuthor basionymAuthor = nonViralName.getBasionymAuthorship();
78
		INomenclaturalAuthor exBasionymAuthor = nonViralName.getExBasionymAuthorship();
79
		Integer publicationYear = nonViralName.getPublicationYear();
80
		Integer originalPublicationYear = nonViralName.getOriginalPublicationYear();
81

    
82
		String basionymPart = "";
83
		String authorPart = "";
84
		//basionym
85
		if (basionymAuthor != null || exBasionymAuthor != null || originalPublicationYear != null ){
86
			String authorAndEx = getAuthorAndExAuthor(basionymAuthor, exBasionymAuthor);
87
			String originalPublicationYearString = originalPublicationYear == null ? null : String.valueOf(originalPublicationYear);
88
			String authorAndExAndYear = CdmUtils.concat(AuthorYearSeperator, authorAndEx, originalPublicationYearString );
89
			basionymPart = BasionymStart + authorAndExAndYear +BasionymEnd;
90
		}
91
		if (combinationAuthor != null || exCombinationAuthor != null){
92
			String authorAndEx = getAuthorAndExAuthor(combinationAuthor, exCombinationAuthor);
93
			String publicationYearString = publicationYear == null ? null : String.valueOf(publicationYear);
94
			authorPart = CdmUtils.concat(AuthorYearSeperator, authorAndEx, publicationYearString);
95
		}
96
		result = CdmUtils.concat(BasionymAuthorCombinationAuthorSeperator, basionymPart, authorPart);
97
		if (result == null){
98
			result = "";
99
		}
100
		return result;
101
	}
102

    
103

    
104
	@Override
105
	protected List<TaggedText> getInfraSpeciesTaggedNameCache(IZoologicalName nonViralName){
106
		boolean includeMarker = ! (nonViralName.isAutonym());
107
		return getInfraSpeciesTaggedNameCache(nonViralName, includeMarker);
108
	}
109

    
110
}
(8-8/9)