Project

General

Profile

« Previous | Next » 

Revision 87d7d6ff

Added by Andreas Müller over 7 years ago

Remove all old reference cache strategies completely #5833

View differences:

cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/NewDefaultReferenceCacheStrategy.java
22 22
import eu.etaxonomy.cdm.model.reference.Reference;
23 23
import eu.etaxonomy.cdm.model.reference.ReferenceType;
24 24
import eu.etaxonomy.cdm.strategy.StrategyBase;
25
import eu.etaxonomy.cdm.strategy.cache.reference.old.InRefDefaultCacheStrategyBase;
26
import eu.etaxonomy.cdm.strategy.cache.reference.old.NomRefDefaultCacheStrategyBase;
27
import eu.etaxonomy.cdm.strategy.cache.reference.old.ReferenceDefaultCacheStrategy;
28 25

  
29 26
/**
30 27
 * #5833
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/ArticleDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.log4j.Logger;
14

  
15
import eu.etaxonomy.cdm.common.CdmUtils;
16
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
17
import eu.etaxonomy.cdm.model.reference.IJournal;
18
import eu.etaxonomy.cdm.model.reference.Reference;
19
import eu.etaxonomy.cdm.strategy.cache.reference.NewDefaultReferenceCacheStrategy;
20

  
21
public class ArticleDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase {
22
	private static final long serialVersionUID = -1639068590864589314L;
23

  
24
	@SuppressWarnings("unused")
25
	private static final Logger logger = Logger.getLogger(ArticleDefaultCacheStrategy.class);
26

  
27
//	public static final String UNDEFINED_JOURNAL = "- undefined journal -";
28
	private String prefixReferenceJounal = "in";
29
	private String blank = " ";
30
	private String comma = ",";
31
	private String prefixSeries = "ser.";
32

  
33

  
34
	final static UUID uuid = UUID.fromString("0d45343a-0c8a-4a64-97ca-e94974b65c96");
35

  
36
	@Override
37
	protected UUID getUuid() {
38
		return uuid;
39
	}
40

  
41

  
42
	/**
43
	 * Factory method
44
	 * @return
45
	 */
46
	public static ArticleDefaultCacheStrategy NewInstance(){
47
		return new ArticleDefaultCacheStrategy();
48
	}
49

  
50
	/**
51
	 * Constructor
52
	 */
53
	private ArticleDefaultCacheStrategy(){
54
		super();
55
	}
56

  
57
	@Override
58
	public String getTitleCache(Reference article) {
59
		if (article.isProtectedTitleCache()){
60
			return article.getTitleCache();
61
		}
62
		String result =  getTitleWithoutYearAndAuthor(article, false);
63
		result = addYear(result, article, false);
64
		TeamOrPersonBase<?> team = article.getAuthorship();
65
		result = CdmUtils.concat(" ", article.getTitle(), result);
66
		if (team != null &&  isNotBlank(team.getTitleCache())){
67
			String authorSeparator = isNotBlank(article.getTitle())? afterAuthor : " ";
68
			result = team.getTitleCache() + authorSeparator + result;
69
		}
70
		return result;
71
	}
72

  
73
	@Override
74
	public String getFullAbbrevTitleString(Reference article) {
75
		if (article.isProtectedAbbrevTitleCache()){
76
			return article.getAbbrevTitleCache();
77
		}
78
		String result =  getTitleWithoutYearAndAuthor(article, true);
79
		result = addYear(result, article, false);
80
		TeamOrPersonBase<?> team = article.getAuthorship();
81
		String articleTitle = CdmUtils.getPreferredNonEmptyString(article.getAbbrevTitle(), article.getTitle(), false, true);
82
		result = CdmUtils.concat(" ", articleTitle, result);  //Article should maybe left out for nomenclatural references (?)
83
		if (team != null &&  isNotBlank(team.getNomenclaturalTitle())){
84
			String authorSeparator = isNotBlank(articleTitle) ? afterAuthor : " ";
85
			result = team.getNomenclaturalTitle() + authorSeparator + result;
86
		}
87
		return result;
88
	}
89

  
90
	@Override
91
	protected String getTitleWithoutYearAndAuthor(Reference article, boolean isAbbrev){
92
		if (article == null){
93
			return null;
94
		}
95
		IJournal journal = article.getInReference();
96

  
97
		String journalTitel;
98
		if (journal != null){
99
			journalTitel = CdmUtils.getPreferredNonEmptyString(journal.getTitle(), journal.getAbbrevTitle(), isAbbrev, true);
100
		}else{
101
			journalTitel = NewDefaultReferenceCacheStrategy.UNDEFINED_JOURNAL;
102
		}
103

  
104
		String series = Nz(article.getSeriesPart()).trim();
105
		String volume = Nz(article.getVolume()).trim();
106

  
107
		boolean needsComma = false;
108

  
109
		String nomRefCache = "";
110

  
111
		//inJournal
112
		nomRefCache = prefixReferenceJounal + blank;
113

  
114
		//titelAbbrev
115
		if (isNotBlank(journalTitel)){
116
			nomRefCache = nomRefCache + journalTitel;
117
			needsComma = makeNeedsComma(needsComma, nomRefCache, volume, series);
118
			if (! needsComma){
119
				nomRefCache = nomRefCache + blank;
120
			}
121
		}
122

  
123
		//series and vol.
124
		nomRefCache = getSeriesAndVolPart(series, volume, needsComma, nomRefCache);
125

  
126
		//delete "."
127
		while (nomRefCache.endsWith(".")){
128
			nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1);
129
		}
130

  
131
		return nomRefCache.trim();
132
	}
133

  
134
	private boolean makeNeedsComma(boolean needsComma, String nomRefCache, String volume, String series) {
135
		if (needsComma){
136
			return true;
137
		}else{
138
			nomRefCache = nomRefCache.toLowerCase();
139
			int serIndex = nomRefCache.indexOf(" ser. ");
140
			int sectIndex = nomRefCache.indexOf(" sect. ");
141
			int abtIndex = nomRefCache.indexOf(" abt. ");
142
			int index = Math.max(Math.max(serIndex, sectIndex), abtIndex);
143
			int commaIndex = nomRefCache.indexOf(",", index);
144
			if (index > -1 && commaIndex == -1 && isNotBlank(volume)){
145
				return true;
146
			}else if (isNotBlank(series)){
147
				return true;
148
			}else{
149
				return false;
150
			}
151
		}
152
	}
153

  
154
	protected String getSeriesAndVolPart(String series, String volume,
155
			boolean needsComma, String nomRefCache) {
156
		//inSeries
157
		String seriesPart = "";
158
		if (isNotBlank(series)){
159
			seriesPart = series;
160
			if (CdmUtils.isNumeric(series)){
161
				seriesPart = prefixSeries + blank + seriesPart;
162
			}
163
//			if (needsComma){
164
				seriesPart = comma + blank + seriesPart;
165
//			}
166
			needsComma = true;
167
		}
168
		nomRefCache += seriesPart;
169

  
170

  
171
		//volume Part
172
		String volumePart = "";
173
		if (!"".equals(volume)){
174
			volumePart = volume;
175
			if (needsComma){
176
				volumePart = comma + blank + volumePart;
177
			}
178
			//needsComma = false;
179
		}
180
		nomRefCache += volumePart;
181
		return nomRefCache;
182
	}
183
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/BookDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.commons.lang.StringUtils;
14
import org.apache.log4j.Logger;
15

  
16
import eu.etaxonomy.cdm.common.CdmUtils;
17
import eu.etaxonomy.cdm.model.reference.Reference;
18

  
19
public class BookDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase {
20
	static final long serialVersionUID = -8535065052672341462L;
21

  
22
	@SuppressWarnings("unused")
23
	private static final Logger logger = Logger.getLogger(BookDefaultCacheStrategy.class);
24

  
25
	private String prefixEdition = "ed.";
26
	private String prefixSeries = ", ser.";
27
	private String blank = " ";
28
	private String comma = ",";
29

  
30
	final static UUID uuid = UUID.fromString("68076ca5-d517-489c-8ae2-01d3c38cc788");
31

  
32
	@Override
33
	protected UUID getUuid() {
34
		return uuid;
35
	}
36

  
37

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

  
46
	/**
47
	 * Constructor
48
	 */
49
	private BookDefaultCacheStrategy(){
50
		super();
51
	}
52

  
53

  
54
	@Override
55
	public String getTitleWithoutYearAndAuthor(Reference ref, boolean isAbbrev){
56
		if (ref == null){
57
			return null;
58
		}
59
		//TODO
60
		String title = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true);
61
		String edition = Nz(ref.getEdition()).trim();
62
		String series = ""; //TODO ref.getSeries();  //SeriesPart is handled later
63
		String refSeriesPart = Nz(ref.getSeriesPart());
64
		String volume = CdmUtils.Nz(ref.getVolume()).trim();
65
		String refYear = "";  //TODO nomenclaturalReference.getYear();
66

  
67

  
68
		String nomRefCache = "";
69
		Integer len;
70
		String lastChar = "";
71
		String character =".";
72
		len = title.length();
73
		if (len > 0){
74
			lastChar = title.substring(len-1, len);
75
		}
76
		//lastCharIsDouble = f_core_CompareStrings(RIGHT(@TitelAbbrev,1),character);
77
		boolean lastCharIsDouble = title.equals(character);
78

  
79
		if(lastCharIsDouble  && edition.length() == 0 && refSeriesPart.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){
80
			title =  title.substring(1, len-1); //  SUBSTRING(@TitelAbbrev,1,@LEN-1)
81
		}
82

  
83

  
84
		boolean needsComma = false;
85
		//titelAbbrev
86
		if (!"".equals(title) ){
87
			String postfix = isNotBlank(edition + refSeriesPart) ? "" : blank;
88
			nomRefCache = title + postfix;
89
		}
90
		//edition
91
		String editionPart = "";
92
		if (StringUtils.isNotBlank(edition)){
93
			editionPart = edition;
94
			if (isNumeric(edition)){
95
				editionPart = prefixEdition + blank + editionPart;
96
			}
97
			needsComma = true;
98
		}
99
		nomRefCache = CdmUtils.concat(", ", nomRefCache, editionPart);
100

  
101
		//inSeries
102
		String seriesPart = "";
103
		if (StringUtils.isNotBlank(refSeriesPart)){
104
			seriesPart = refSeriesPart;
105
			if (isNumeric(refSeriesPart)){
106
				seriesPart = prefixSeries + blank + seriesPart;
107
			}
108
			if (needsComma){
109
				seriesPart = comma + seriesPart;
110
			}
111
			needsComma = true;
112
		}
113
		nomRefCache += seriesPart;
114

  
115

  
116
		//volume Part
117
		String volumePart = "";
118
		if (StringUtils.isNotBlank(volume)){
119
			volumePart = volume;
120
			if (needsComma){
121
				volumePart = comma + blank + volumePart;
122
			}else{
123
				volumePart = "" + volumePart;
124
			}
125
			//needsComma = false;
126
		}
127
		nomRefCache += volumePart;
128

  
129
		//delete .
130
		while (nomRefCache.endsWith(".")){
131
			nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1);
132
		}
133

  
134
		return nomRefCache.trim();
135
	}
136

  
137
	private boolean isNumeric(String string){
138
		if (string == null){
139
			return false;
140
		}
141
		try {
142
			Double.valueOf(string);
143
			return true;
144
		} catch (NumberFormatException e) {
145
			return false;
146
		}
147
	}
148

  
149

  
150

  
151
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/BookSectionDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.log4j.Logger;
14

  
15
import eu.etaxonomy.cdm.model.reference.Reference;
16
import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
17

  
18
public class BookSectionDefaultCacheStrategy extends InRefDefaultCacheStrategyBase implements INomenclaturalReferenceCacheStrategy {
19
	private static final long serialVersionUID = 7293886681984614996L;
20

  
21
	private static final Logger logger = Logger.getLogger(BookSectionDefaultCacheStrategy.class);
22
	final static UUID uuid = UUID.fromString("f9c53f20-addd-4d2f-9697-ef1fe727deba");
23
	
24
	private static final String inRefTypeStr = "book";
25

  
26
	private static final boolean inRefIsObligatory = true;
27
	
28
	@Override
29
	protected UUID getUuid() {
30
		return uuid; 
31
	}
32
	
33
	@Override
34
	protected String getInRefType() {
35
		return inRefTypeStr;
36
	}
37

  
38
	/**
39
	 * Factory method
40
	 * @return
41
	 */
42
	public static BookSectionDefaultCacheStrategy NewInstance(){
43
		return new BookSectionDefaultCacheStrategy();
44
	}
45
	
46
	/**
47
	 * Constructor
48
	 */
49
	private BookSectionDefaultCacheStrategy(){
50
		super();
51
	}
52

  
53
	@Override
54
	protected String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev) {
55
		// not needed in BookSection
56
		logger.warn("Questionable procedure call. Procedure not implemented because not needed. ");
57
		return null;
58
	}
59

  
60
	@Override
61
	public String getTokenizedNomenclaturalTitel(Reference generic) {
62
		return super.getTokenizedNomenclaturalTitel(generic, inRefIsObligatory);
63
	}
64

  
65
	@Override
66
	public String getTitleCache(Reference thisRef) {
67
		return super.getTitleCache(thisRef, inRefIsObligatory, false);
68
	}
69
	
70
	@Override
71
	public String getFullAbbrevTitleString(Reference thisRef) {
72
		return super.getTitleCache(thisRef, inRefIsObligatory, true);
73
	}
74
	
75

  
76
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/CdDvdDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.log4j.Logger;
14

  
15
import eu.etaxonomy.cdm.common.CdmUtils;
16
import eu.etaxonomy.cdm.model.reference.Reference;
17

  
18
public class CdDvdDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase {
19
    private static final long serialVersionUID = 8482637736512817472L;
20

  
21
    @SuppressWarnings("unused")
22
    private static final Logger logger = Logger.getLogger(CdDvdDefaultCacheStrategy.class);
23

  
24
	private String blank = " ";
25

  
26
	final static UUID uuid = UUID.fromString("68076ca5-d517-489c-8ae2-01d3c38cc788");
27

  
28
	@Override
29
	protected UUID getUuid() {
30
		return uuid;
31
	}
32

  
33
	/**
34
	 * Factory method
35
	 * @return
36
	 */
37
	public static CdDvdDefaultCacheStrategy NewInstance(){
38
		return new CdDvdDefaultCacheStrategy();
39
	}
40

  
41
	/**
42
	 * Constructor
43
	 */
44
	private CdDvdDefaultCacheStrategy(){
45
		super();
46
	}
47

  
48
	@Override
49
	protected String getTitleWithoutYearAndAuthor(Reference ref, boolean isAbbrev){
50
		if (ref == null){
51
			return null;
52
		}
53
		String nomRefCache = "";
54
		//TODO
55
		String titel = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true);
56
//		String publisher = CdmUtils.Nz(nomenclaturalReference.getPublisher());
57

  
58
		//titelAbbrev
59
		if (titel.length() > 0){
60
			nomRefCache = titel + blank;
61
		}
62
//		//publisher
63
//		String publisherPart = "";
64
//		if (!"".equals(publisher)){
65
//			publisherPart = publisher;
66
//			needsComma = true;
67
//		}
68
//		nomRefCache += publisherPart;
69

  
70

  
71
		//delete .
72
		while (nomRefCache.endsWith(".")){
73
			nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1);
74
		}
75
		return nomRefCache.trim();
76
	}
77

  
78
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/GenericDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.commons.lang.StringUtils;
14
import org.apache.log4j.Logger;
15

  
16
import eu.etaxonomy.cdm.common.CdmUtils;
17
import eu.etaxonomy.cdm.model.reference.Reference;
18
import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
19

  
20
public class GenericDefaultCacheStrategy extends InRefDefaultCacheStrategyBase implements INomenclaturalReferenceCacheStrategy {
21
	private static final long serialVersionUID = 6687224678019228192L;
22

  
23
	@SuppressWarnings("unused")
24
	private static final Logger logger = Logger.getLogger(GenericDefaultCacheStrategy.class);
25

  
26

  
27
	private static final String inRefTypeStr = "generic reference";
28

  
29
	@Override
30
	protected String getInRefType() {
31
		return inRefTypeStr;
32
	}
33

  
34
	private String prefixEdition = "ed.";
35
	private String prefixSeries = "ser.";
36
//	private String prefixVolume = "vol.";
37
	private String blank = " ";
38
	private String comma = ",";
39
//	private String dot =".";
40

  
41
	final static UUID uuid = UUID.fromString("95cceb30-6b16-4dc3-8243-c15e746565bc");
42

  
43
	@Override
44
	protected UUID getUuid() {
45
		return uuid;
46
	}
47

  
48

  
49
	/**
50
	 * Factory method
51
	 * @return
52
	 */
53
	public static GenericDefaultCacheStrategy NewInstance(){
54
		return new GenericDefaultCacheStrategy();
55
	}
56

  
57
	/**
58
	 * Constructor
59
	 */
60
	private GenericDefaultCacheStrategy(){
61
		super();
62
	}
63

  
64

  
65
	@Override
66
	protected String getTitleWithoutYearAndAuthor(Reference genericReference, boolean isAbbrev){
67
		if (genericReference == null){
68
			return null;
69
		}
70
		//TODO
71
		String titel = CdmUtils.getPreferredNonEmptyString(genericReference.getTitle(), genericReference.getAbbrevTitle(), isAbbrev, true);
72
		String edition = CdmUtils.Nz(genericReference.getEdition());
73
		//TODO
74
		String series = CdmUtils.Nz(genericReference.getSeriesPart()).trim(); //nomenclaturalReference.getSeries();
75
		String volume = CdmUtils.Nz(genericReference.getVolume()).trim();
76

  
77
		String result = "";
78
		boolean lastCharIsDouble;
79
		Integer len;
80
		String lastChar ="";
81
		String character =".";
82
		len = titel.length();
83
		if (len > 0){lastChar = titel.substring(len-1, len);}
84
		//lastCharIsDouble = f_core_CompareStrings(RIGHT(@TitelAbbrev,1),character);
85
		lastCharIsDouble = titel.equals(character);
86

  
87
//		if(lastCharIsDouble  && edition.length() == 0 && series.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){
88
//			titelAbbrev =  titelAbbrev.substring(1, len-1); //  SUBSTRING(@TitelAbbrev,1,@LEN-1)
89
//		}
90

  
91

  
92
		boolean needsComma = false;
93
		//titelAbbrev
94
		if (titel.length() > 0 ){
95
			String postfix = StringUtils.isNotBlank(edition) ? "" : blank;
96
			result = titel + postfix;
97
		}
98
		//edition
99
		String editionPart = "";
100
		if (StringUtils.isNotBlank(edition)){
101
			editionPart = edition;
102
			if (isNumeric(edition)){
103
				editionPart = prefixEdition + blank + editionPart;
104
			}
105
			needsComma = true;
106
		}
107
		result = CdmUtils.concat(", ", result, editionPart);
108

  
109
		//inSeries
110
		String seriesPart = "";
111
		if (isNotBlank(series)){
112
			seriesPart = series;
113
			if (isNumeric(series)){
114
				seriesPart = prefixSeries + blank + seriesPart;
115
			}
116
			if (needsComma){
117
				seriesPart = comma + seriesPart;
118
			}
119
			needsComma = true;
120
		}
121
		result += seriesPart;
122

  
123

  
124
		//volume Part
125
		String volumePart = "";
126
		if (!"".equals(volume)){
127
			volumePart = volume;
128
			if (needsComma){
129
				volumePart = comma + blank + volumePart;
130
			}
131
			//needsComma = false;
132
		}
133
		result += volumePart;
134

  
135
		//delete .
136
		while (result.endsWith(".")){
137
			result = result.substring(0, result.length()-1);
138
		}
139

  
140

  
141

  
142
		//	--Edition and series are null or numeric
143

  
144
//		if (isNumeric(edition) ){
145
//			if (titelAbbrev.length() > 0 && edition.length() > 0 &&  series.length() > 0 && isNumeric(series) && volume.length() > 0 && refYear.length() > 0 ){
146
//				nomRefCache = titelAbbrev + blank + prefixEdition + blank + edition + comma + blank + prefixSeries + blank + series + comma + blank + volume + dot + blank + refYear + dot;
147
//			}
148
//		}
149

  
150

  
151
//  FROM BERLIN MODEL TRIGGER:
152
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
153
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @comma +  @blank + @Refyear + @dot
154
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @dot
155
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition+ @blank + @Edition +  @comma + @blank + @Volume + @dot
156
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition +  @dot
157
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
158
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixSeries + @blank + @Series + @dot
159
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Volume + @dot
160
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @dot
161
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
162
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @dot
163
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition +  @comma + @blank + @Volume + @dot
164
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition +  @dot
165
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
166
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixSeries + @blank + @Series + @dot
167
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Volume + @dot
168
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @Refyear + @dot
169
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = NULL
170
//
171
//
172
//
173
//
174
//
175
//
176
//	--Edition and/or Series is not numeric
177
//
178
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @comma + @blank + @Series + @comma + @blank + @Volume + @dot
179
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @comma + @blank + @Series + @comma +  @blank + @Refyear + @dot
180
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @comma + @blank + @Series + @dot
181
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @comma + @blank + @Volume + @dot
182
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @dot
183
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Series + @comma + @blank + @Volume + @dot
184
//
185
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Series + @dot
186
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition +  @comma + @blank + @Series + @comma + @blank + @Volume + @dot
187
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition +  @comma + @blank + @Series + @dot
188
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition +  @comma + @blank + @Volume + @dot
189
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition +  @dot
190
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Series + @comma + @blank + @Volume + @dot
191
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Series + @dot
192
//
193
//
194
//
195
//
196
//	--Edition is numeric and series is not numeric
197
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition +  @comma + @blank + @Series + @comma + @blank + @Volume + @dot
198
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition +  @comma + @blank + @Series + @comma +  @blank + @Refyear + @dot
199
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition +  @comma + @blank + @Series + @comma + @blank + @Volume + @dot
200
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition+  @comma + @blank + @Series + @dot
201
//
202
//
203
//
204
//	--Series is numeric and editon is not numeric
205
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
206
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @comma +  @blank + @Refyear + @dot
207
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition +  @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
208
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition+  @comma + @blank + @prefixSeries + @blank + @Series + @dot
209
//
210
//	--Changes (Marc Geoffroy)
211
//
212
//		IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0)  SET @NomRefCache = NULL
213
//
214
//
215
//		Return @NomRefCache
216

  
217
		return result.trim();
218
	}
219

  
220
	private boolean isNumeric(String string){
221
		if (string == null){
222
			return false;
223
		}
224
		try {
225
			Double.valueOf(string);
226
			return true;
227
		} catch (NumberFormatException e) {
228
			return false;
229
		}
230

  
231
	}
232

  
233

  
234

  
235
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/InRefDefaultCacheStrategyBase.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import org.apache.commons.lang.StringUtils;
12
import org.apache.log4j.Logger;
13

  
14
import eu.etaxonomy.cdm.common.CdmUtils;
15
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
16
import eu.etaxonomy.cdm.model.common.TimePeriod;
17
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
18
import eu.etaxonomy.cdm.model.reference.Reference;
19

  
20
/**
21
 * @author a.mueller
22
 * @created 15.03.2012
23
 */
24
public abstract class InRefDefaultCacheStrategyBase extends NomRefDefaultCacheStrategyBase {
25

  
26
	private static final long serialVersionUID = -8418443677312335864L;
27
	private static final Logger logger = Logger.getLogger(InRefDefaultCacheStrategyBase.class);
28

  
29
	private String inSeparator = "in ";
30
	private String afterSectionAuthor = " - ";
31
	private String blank = " ";
32

  
33

  
34

  
35
	protected abstract String getInRefType();
36

  
37
	protected String afterInRefAuthor = ", ";
38

  
39
	@Override
40
	public String getTokenizedNomenclaturalTitel(Reference generic) {
41
		return getTokenizedNomenclaturalTitel(generic, false);
42
	}
43

  
44
	protected String getTokenizedNomenclaturalTitel(Reference thisRef, boolean inRefIsObligatory) {
45
		//generic == null
46
		if (thisRef == null /* || generic.getInReference() == null */){
47
			return null;
48
		}
49

  
50
		Reference inRef = thisRef.getInReference();
51

  
52
		//inRef == null
53
		if (! inRefIsObligatory && inRef == null){
54
			return super.getTokenizedNomenclaturalTitel(thisRef);
55
		}
56

  
57
		String result;
58
		//use generics's publication date if it exists
59
		if (inRef == null ||  (thisRef.hasDatePublished() ) ){
60
			GenericDefaultCacheStrategy inRefStrategy = GenericDefaultCacheStrategy.NewInstance();
61
			result =  inRef == null ? "" : inRefStrategy.getTitleWithoutYearAndAuthor(inRef, true);
62
			//added //TODO unify with non-inRef references formatting
63

  
64
			if (isNotBlank(thisRef.getVolume())){
65
				result = result + " " + thisRef.getVolume();
66
			}
67
			//TODO series / edition
68

  
69
			//end added
70
			result += INomenclaturalReference.MICRO_REFERENCE_TOKEN;
71
			result = addYear(result, thisRef, true);
72
		}else{
73
			//else use inRefs's publication date
74
			result = inRef.getNomenclaturalCitation(INomenclaturalReference.MICRO_REFERENCE_TOKEN);
75
			if (result != null){
76
				result = result.replace(beforeMicroReference +  INomenclaturalReference.MICRO_REFERENCE_TOKEN, INomenclaturalReference.MICRO_REFERENCE_TOKEN);
77
			}
78
		}
79
		//FIXME: vol. etc., http://dev.e-taxonomy.eu/trac/ticket/2862
80

  
81
		result = getInRefAuthorPart(thisRef.getInReference(), afterInRefAuthor) + result;
82
		result = "in " +  result;
83
		return result;
84
	}
85

  
86

  
87

  
88
	protected String getInRefAuthorPart(Reference book, String seperator){
89
		if (book == null){
90
			return "";
91
		}
92
		TeamOrPersonBase<?> team = book.getAuthorship();
93
		String result = Nz( team == null ? "" : team.getNomenclaturalTitle());
94
		if (! result.trim().equals("")){
95
			result = result + seperator;
96
		}
97
		return result;
98
	}
99

  
100

  
101
	@Override
102
	public String getTitleCache(Reference thisRef) {
103
		return getTitleCache(thisRef, false, false);
104
	}
105

  
106
	@Override
107
	public String getFullAbbrevTitleString(Reference thisRef) {
108
		return getTitleCache(thisRef, false, true);
109
	}
110

  
111

  
112
	protected String getTitleCache(Reference thisRef, boolean inRefIsObligatory, boolean isAbbrev) {
113
		String result;
114

  
115
		Reference inRef = thisRef.getInReference();
116
		boolean hasInRef = (inRef != null);
117
		// get inRef part
118
		if (inRef != null){
119
			result = CdmUtils.getPreferredNonEmptyString(inRef.getTitleCache(), inRef.getAbbrevTitleCache(), isAbbrev, true)  ;
120
		}else{
121
			if ( ! inRefIsObligatory){
122
				return super.getTitleCache(thisRef);
123
			}else{
124
				result = String.format("- undefined %s -", getInRefType());
125
			}
126
		}
127

  
128
		//in
129
		result = inSeparator +  result;
130

  
131
		//section title
132
		String title = CdmUtils.getPreferredNonEmptyString(
133
				thisRef.getTitle(), thisRef.getAbbrevTitle(), isAbbrev, true);
134
		if (title.length() > 0){
135
			result = title + blank + result;
136
		}
137

  
138
		//section author
139
		TeamOrPersonBase<?> thisRefTeam = thisRef.getAuthorship();
140
		String thisRefAuthor = "";
141
		if (thisRefTeam != null){
142
			thisRefAuthor = CdmUtils.getPreferredNonEmptyString(thisRefTeam.getTitleCache(), thisRefTeam.getNomenclaturalTitle(), isAbbrev, true);
143
		}
144
		result = CdmUtils.concat(afterSectionAuthor, thisRefAuthor, result);
145

  
146
		//date
147
		if (thisRef.getDatePublished() != null && ! thisRef.getDatePublished().isEmpty()){
148
			String thisRefDate = thisRef.getDatePublished().toString();
149
			if (hasInRef && thisRef.getInBook().getDatePublished() != null){
150
				TimePeriod inRefDate = thisRef.getInReference().getDatePublished();
151
				String inRefDateString = inRefDate.getYear();
152
				if (isNotBlank(inRefDateString)){
153
					int pos = StringUtils.lastIndexOf(result, inRefDateString);
154
					if (pos > -1 ){
155
						result = result.substring(0, pos) + thisRefDate + result.substring(pos + inRefDateString.length());
156
					}else{
157
						logger.warn("InRefDateString (" + inRefDateString + ") could not be found in result (" + result +")");
158
					}
159
				}else{
160
					//avoid duplicate dots ('..')
161
					String bYearSeparator = result.substring(result.length() -1).equals(beforeYear.substring(0, 1)) ? beforeYear.substring(1) : beforeYear;
162
					result = result + bYearSeparator + thisRefDate + afterYear;
163
				}
164
			}else{
165
				result = result + beforeYear + thisRefDate + afterYear;
166
			}
167
		}
168
		return result;
169
	}
170

  
171
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/JournalDefaultCacheStrategy.java
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.reference.old;
11

  
12
import java.util.UUID;
13

  
14
import org.apache.commons.lang.StringUtils;
15
import org.apache.log4j.Logger;
16

  
17
import eu.etaxonomy.cdm.common.CdmUtils;
18
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
19
import eu.etaxonomy.cdm.model.reference.Reference;
20
import eu.etaxonomy.cdm.strategy.StrategyBase;
21
import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceCacheStrategy;
22

  
23
/**
24
 * @author a.mueller
25
 * @created 29.06.2008
26
 */
27
public class JournalDefaultCacheStrategy extends StrategyBase implements IReferenceCacheStrategy {
28
	private static final long serialVersionUID = 8495999505123620960L;
29

  
30

  
31
	@SuppressWarnings("unused")
32
	private static final Logger logger = Logger.getLogger(JournalDefaultCacheStrategy.class);
33

  
34

  
35
	protected String beforeYear = ". ";
36
	protected String afterYear = "";
37
	protected String afterAuthor = ", ";
38

  
39

  
40
	final static UUID uuid = UUID.fromString("c84846cd-c862-462e-81b8-53cf4100ed32");
41

  
42
	@Override
43
	protected UUID getUuid() {
44
		return uuid;
45
	}
46

  
47

  
48
	/**
49
	 * Factory method
50
	 * @return
51
	 */
52
	public static JournalDefaultCacheStrategy NewInstance(){
53
		return new JournalDefaultCacheStrategy();
54
	}
55

  
56
	/**
57
	 * Constructor
58
	 */
59
	private JournalDefaultCacheStrategy(){
60
		super();
61
	}
62

  
63

  
64
	@Override
65
	public String getTitleCache(Reference journal) {
66
		return getTitleCache(journal, false);
67
	}
68

  
69

  
70
	@Override
71
	public String getFullAbbrevTitleString(Reference journal) {
72
		return getTitleCache(journal, true);
73
	}
74

  
75

  
76
	private String getTitleCache(Reference journal, boolean isAbbrev){
77
		if (journal == null){
78
			return null;
79
		}
80

  
81
		String title = CdmUtils.getPreferredNonEmptyString(journal.getTitle(), journal.getAbbrevTitle(), isAbbrev, true);
82

  
83
		String result = title;
84

  
85
//		//delete .
86
//		while (result.endsWith(".")){
87
//			result = result.substring(0, result.length()-1);
88
//		}
89

  
90
//		result = addYear(result, journal);
91

  
92

  
93
		TeamOrPersonBase<?> team = journal.getAuthorship();
94
		if (team != null){
95
			String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);
96
			if (StringUtils.isNotBlank(author)){
97
				result = author + afterAuthor + result;
98
			}
99
		}
100
		return result;
101
	}
102

  
103

  
104
	@Override
105
    public String getCitation(Reference referenceBase) {
106
		StringBuilder stringBuilder = new StringBuilder();
107

  
108
		TeamOrPersonBase<?> team = referenceBase.getAuthorship();
109
		if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){
110
			//String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());
111
			stringBuilder.append(team.getTitleCache() + afterAuthor);
112
		}
113

  
114
		String year = CdmUtils.Nz(referenceBase.getYear());
115
		if (!"".equals(year)){
116
			stringBuilder.append(beforeYear + year);
117
		}
118

  
119
		return stringBuilder.toString();
120
	}
121

  
122

  
123
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/NomRefDefaultCacheStrategyBase.java
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.reference.old;
11

  
12
import org.apache.commons.lang.StringUtils;
13
import org.apache.log4j.Logger;
14

  
15
import eu.etaxonomy.cdm.common.CdmUtils;
16
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
17
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
18
import eu.etaxonomy.cdm.model.reference.Reference;
19
import eu.etaxonomy.cdm.strategy.StrategyBase;
20
import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
21

  
22
/**
23
 * @author a.mueller
24
 * @created 29.06.2008
25
 */
26
public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implements INomenclaturalReferenceCacheStrategy{
27
	private static final long serialVersionUID = -725290113353165022L;
28

  
29
	private static final Logger logger = Logger.getLogger(NomRefDefaultCacheStrategyBase.class);
30

  
31
	protected String beforeYear = ". ";
32
	protected String beforeMicroReference = ": ";
33
	protected String afterYear = "";
34
	protected String afterAuthor = ", ";
35

  
36

  
37
	/**
38
	 * Returns the nomenclatural title with micro reference represented as token
39
	 * which can later be replaced by the real data.
40
	 *
41
	 * @see INomenclaturalReference#MICRO_REFERENCE_TOKEN
42
	 *
43
	 * @param ref The reference
44
	 * @return
45
	 */
46
	protected String getTokenizedNomenclaturalTitel(Reference ref) {
47
		String result = getTitleWithoutYearAndAuthor(ref, true);
48
		result += INomenclaturalReference.MICRO_REFERENCE_TOKEN;
49
		result = addYear(result, ref, true);
50
		return result;
51
	}
52

  
53
	@Override
54
	public String getTitleCache(Reference nomenclaturalReference) {
55
		return getTitleCache(nomenclaturalReference, false);
56
	}
57

  
58
	@Override
59
	public String getFullAbbrevTitleString(Reference nomenclaturalReference) {
60
		return getTitleCache(nomenclaturalReference, true);
61
	}
62

  
63
	private String getTitleCache(Reference ref, boolean isAbbrev) {
64
		//TODO needed?
65
		if (isAbbrev && ref.isProtectedAbbrevTitleCache()){
66
			return ref.getAbbrevTitleCache();
67
		}else if (!isAbbrev && ref.isProtectedTitleCache()){
68
			return ref.getTitleCache();
69
		}
70
		String result =  getTitleWithoutYearAndAuthor(ref, isAbbrev);
71
		result = addYear(result, ref, false);
72
		TeamOrPersonBase<?> team = ref.getAuthorship();
73

  
74
		if (team != null){
75
			String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);
76
			if (teamTitle.length() > 0 ){
77
				String concat = isNotBlank(result) ? afterAuthor : "";
78
				result = teamTitle + concat + result;
79
			}
80

  
81
		}
82
		return result;
83
	}
84

  
85
	protected abstract String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev);
86

  
87

  
88
	@Override
89
	public String getCitation(Reference referenceBase) {
90
		StringBuilder stringBuilder = new StringBuilder();
91

  
92
		String nextConcat = "";
93

  
94
		TeamOrPersonBase<?> team = referenceBase.getAuthorship();
95
		if (team != null &&  isNotBlank(team.getTitleCache())){
96
			stringBuilder.append(team.getTitleCache() );
97
			nextConcat = afterAuthor;
98
		}
99

  
100
		String year = referenceBase.getYear();
101
		if (StringUtils.isNotBlank(year)){
102
			stringBuilder.append(nextConcat + year);
103
		}
104

  
105
		return stringBuilder.toString();
106
	}
107

  
108

  
109
	@Override
110
	public String getBeforeMicroReference(){
111
		return beforeMicroReference;
112
	}
113

  
114
	protected String addYear(String string, Reference nomRef, boolean useFullDatePublished){
115
		String result;
116
		if (string == null){
117
			return null;
118
		}
119
		String year = useFullDatePublished ? nomRef.getDatePublishedString() : nomRef.getYear();
120
		if (isBlank(year)){
121
			result = string + afterYear;
122
		}else{
123
			String concat = isBlank(string)  ? "" : string.endsWith(".")  ? " " : beforeYear;
124
			result = string + concat + year + afterYear;
125
		}
126
		return result;
127
	}
128

  
129
    @Override
130
    public String getNomenclaturalCache(Reference reference) {
131
        return this.getNomenclaturalCitation(reference, null);
132
    }
133

  
134
	@Override
135
	public String getNomenclaturalCitation(Reference nomenclaturalReference, String microReference) {
136
		if (nomenclaturalReference.isProtectedAbbrevTitleCache()){
137
			String cache = nomenclaturalReference.getAbbrevTitleCache();
138
			return handleDetailAndYearForPreliminary(nomenclaturalReference, cache, microReference);
139

  
140
		}
141
		String result = getTokenizedNomenclaturalTitel(nomenclaturalReference);
142
		//if no data is available and only titleCache is protected take the protected title
143
		//this is to avoid empty cache if someone forgets to set also the abbrevTitleCache
144
		//we need to think about handling protected not separate for abbrevTitleCache  and titleCache
145
		if (result.equals(INomenclaturalReference.MICRO_REFERENCE_TOKEN)
146
		        && nomenclaturalReference.isProtectedTitleCache() ){
147
			String cache = nomenclaturalReference.getTitleCache();
148
			return handleDetailAndYearForPreliminary(nomenclaturalReference, cache, microReference);
149
		}
150

  
151
		microReference = Nz(microReference);
152
		if (StringUtils.isNotBlank(microReference)){
153
			microReference = getBeforeMicroReference() + microReference;
154
			if (microReference.endsWith(".")  && result.contains(INomenclaturalReference.MICRO_REFERENCE_TOKEN + ".") ){
155
				microReference = microReference.substring(0, microReference.length() - 1);
156
			}
157
		}
158
		result = replaceMicroRefToken(microReference, result);
159
		if (result.startsWith(". ")){  //only year available, remove '. '
160
			result = result.substring(2);
161
		}
162
		return result;
163
	}
164

  
165
	/**
166
	 * @param microReference
167
	 * @param result
168
	 * @return
169
	 */
170
	private String replaceMicroRefToken(String microReference, String string) {
171
		int index = string.indexOf(INomenclaturalReference.MICRO_REFERENCE_TOKEN);
172

  
173
		if (index > -1){
174
			String before = string.substring(0, index);
175
			String after = string.substring(index + INomenclaturalReference.MICRO_REFERENCE_TOKEN.length() );
176
			String localMicroReference = microReference.trim();   //needed ?
177
			if (after.length() > 0){
178
				if (  ("".equals(localMicroReference) && before.endsWith(after.substring(0,1)) || localMicroReference.endsWith(after.substring(0,1)))){
179
					after = after.substring(1);
180
				}
181
			}
182
			String result = before + localMicroReference + after;
183
			return result;
184
		}else{
185
			return string;
186
		}
187
	}
188

  
189
	/**
190
	 * @param nomenclaturalReference
191
	 * @param microRef
192
	 * @return
193
	 */
194
	private String handleDetailAndYearForPreliminary(Reference nomenclaturalReference, String cache, String microReference) {
195
		String microRef = isNotBlank(microReference) ? getBeforeMicroReference() + microReference : "";
196
		if (cache == null){
197
			logger.warn("Cache is null. This should never be the case.");
198
			cache = "";
199
		}
200
		String	result = cache + (cache.contains(microRef) ? "" : microRef);
201

  
202
		String date = nomenclaturalReference.getDatePublishedString();
203
		if (isNotBlank(date) && ! result.contains(date)){
204
			result = result + beforeYear + date;
205
		}
206
		return result;
207
	}
208

  
209
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/ReferenceDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.log4j.Logger;
14

  
15
import eu.etaxonomy.cdm.common.CdmUtils;
16
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
17
import eu.etaxonomy.cdm.model.reference.Reference;
18
import eu.etaxonomy.cdm.strategy.StrategyBase;
19
import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceCacheStrategy;
20
/**
21
 * @author a.mueller
22
 * @created 08-Aug-2008 22:06:45
23
 */
24
public class ReferenceDefaultCacheStrategy extends StrategyBase implements IReferenceCacheStrategy {
25
	private static final long serialVersionUID = 4350124746874497766L;
26
	@SuppressWarnings("unused")
27
	private static final Logger logger = Logger.getLogger(ReferenceDefaultCacheStrategy.class);
28

  
29
	final static UUID uuid = UUID.fromString("763fe4a0-c79f-4f14-9693-631680225ec3");
30

  
31

  
32
	protected String beforeYear = ". ";
33
	protected String afterYear = "";
34
	protected String afterAuthor = ", ";
35

  
36
	private String blank = " ";
37

  
38

  
39
// ****************** FACTORY *******************************/
40

  
41
	public static ReferenceDefaultCacheStrategy NewInstance(){
42
		return new ReferenceDefaultCacheStrategy();
43
	}
44

  
45
// ***************** CONSTRUCTOR ********************************/
46

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

  
54

  
55

  
56

  
57

  
58
	@Override
59
	public String getFullAbbrevTitleString(Reference reference) {
60
		return getTitleCache(reference, true);
61
	}
62

  
63
	@Override
64
	public String getTitleCache(Reference reference) {
65
		return getTitleCache(reference, false);
66
	}
67

  
68
	private String getTitleCache(Reference ref, boolean isAbbrev) {
69
		String result = "";
70
		if (ref == null){
71
			return null;
72
		}
73
		String titel = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true);
74
		//titelAbbrev
75
		if (isNotBlank(titel)){
76
			result = titel + blank;
77
		}
78
		//delete .
79
		while (result.endsWith(".")){
80
			result = result.substring(0, result.length()-1);
81
		}
82

  
83
		result = addYear(result, ref);
84
		TeamOrPersonBase<?> team = ref.getAuthorship();
85
		if (team != null){
86
			String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);
87
			if (isNotBlank(author)){
88
				result = author + afterAuthor + result;
89
			}
90
		}
91
		return result;
92
	}
93

  
94
	protected String addYear(String string, Reference ref){
95
		String result;
96
		if (string == null){
97
			return null;
98
		}
99
		String year = CdmUtils.Nz(ref.getYear());
100
		if ("".equals(year)){
101
			result = string + afterYear;
102
		}else{
103
			result = string + beforeYear + year + afterYear;
104
		}
105
		return result;
106
	}
107

  
108
	@Override
109
	public String getCitation(Reference referenceBase) {
110
		StringBuilder stringBuilder = new StringBuilder();
111

  
112
		TeamOrPersonBase<?> team = referenceBase.getAuthorship();
113
		if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){
114
			//String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());
115
			stringBuilder.append(team.getTitleCache() + afterAuthor);
116
		}
117

  
118
		String year = CdmUtils.Nz(referenceBase.getYear());
119
		if (!"".equals(year)){
120
			stringBuilder.append(beforeYear + year);
121
		}
122

  
123
		return stringBuilder.toString();
124
	}
125

  
126

  
127

  
128
	@Override
129
	protected UUID getUuid() {
130
		return UUID.fromString("919dbf70-33e7-11de-b418-0800200c9a66");
131
	}
132

  
133

  
134
	/**
135
	 *
136
	 * @param referenceTitleCache
137
	 * @param authorTitleCache
138
	 * @return
139
	 */
140
	public static String putAuthorToEndOfString(String referenceTitleCache, String authorTitleCache) {
141
		if(authorTitleCache != null){
142
			referenceTitleCache = referenceTitleCache.replace(authorTitleCache + ", ", "");
143
			referenceTitleCache += " - " + authorTitleCache;
144
		}
145
		return referenceTitleCache;
146
	}
147

  
148
}
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/SectionDefaultCacheStrategy.java
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
package eu.etaxonomy.cdm.strategy.cache.reference.old;
10

  
11
import java.util.UUID;
12

  
13
import org.apache.log4j.Logger;
14

  
15
import eu.etaxonomy.cdm.model.common.CdmBase;
16
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
17
import eu.etaxonomy.cdm.model.reference.Reference;
18
import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceCacheStrategy;
19

  
20
public class SectionDefaultCacheStrategy extends InRefDefaultCacheStrategyBase {
21
	private static final long serialVersionUID = -4534389083526558368L;
22
	private static final Logger logger = Logger.getLogger(SectionDefaultCacheStrategy.class);
23

  
24
	final static UUID uuid = UUID.fromString("a7150cd3-107b-4169-ac84-71ffe3219152");
25

  
26
	private static final String inRefTypeStr = "in reference";
27

  
28
	private static final boolean inRefIsObligatory = true;
29

  
30
	@Override
31
	protected UUID getUuid() {
32
		return uuid;
33
	}
34

  
35
	@Override
36
	protected String getInRefType() {
37
		return inRefTypeStr;
38
	}
39

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

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff