Project

General

Profile

« Previous | Next » 

Revision fe43cd3b

Added by Andreas Müller over 8 years ago

Implement taggedTitle for taxon base #5229

View differences:

cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategy.java
9 9

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

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

  
14 16
import org.apache.commons.lang.StringUtils;
......
19 21
import eu.etaxonomy.cdm.model.reference.Reference;
20 22
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
21 23
import eu.etaxonomy.cdm.strategy.StrategyBase;
22
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
24
import eu.etaxonomy.cdm.strategy.cache.HTMLTagRules;
25
import eu.etaxonomy.cdm.strategy.cache.TagEnum;
26
import eu.etaxonomy.cdm.strategy.cache.TaggedCacheHelper;
27
import eu.etaxonomy.cdm.strategy.cache.TaggedText;
28
import eu.etaxonomy.cdm.strategy.cache.name.INameCacheStrategy;
29

  
30
public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase>
31
        extends StrategyBase
32
        implements ITaxonCacheStrategy<T> {
23 33

  
24
public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase> extends StrategyBase implements
25
		IIdentifiableEntityCacheStrategy<T> {
26 34
    private static final long serialVersionUID = 5769890979070021350L;
27 35
    final static UUID uuid = UUID.fromString("931e48f0-2033-11de-8c30-0800200c9a66");
28 36

  
......
31 39
		return uuid;
32 40
	}
33 41

  
34
	@Override
35
	public String getTitleCache(T taxonBase) {
36
		String title;
37
		if (taxonBase.isProtectedTitleCache()){
38
		    return taxonBase.getTitleCache();
39
		}else if (taxonBase.getName() != null && taxonBase.getName().getTitleCache() != null){
40
			String namePart = getNamePart(taxonBase);
41

  
42
			title = namePart + " sec. ";
43
			title += getSecundumPart(taxonBase);
44
		}else{
45
			title = taxonBase.toString();
46
		}
47
		if (taxonBase.isDoubtful()){
48
			title = "?" + title;
49
		}
50
		return title;
51
	}
42
   @Override
43
    public String getTitleCache(T taxonBase) {
44
        return getTitleCache(taxonBase, null);
45
    }
52 46

  
53
	/**
54
	 * @param taxonBase
55
	 * @param title
56
	 * @return
57
	 */
58
	private String getSecundumPart(T taxonBase) {
59
		String result;
60
		Reference<?> sec = taxonBase.getSec();
61
		if (sec != null){
62
			if (sec.getCacheStrategy() != null &&
63
					sec.getAuthorship() != null &&
64
					isNotBlank(sec.getAuthorship().getTitleCache()) &&
65
					isNotBlank(sec.getYear())){
66
				result = sec.getCacheStrategy().getCitation(sec);
67
//				 sec.getAuthorTeam().getTitleCache() + sec.getYear();
68
			}else{
69
				result = taxonBase.getSec().getTitleCache();
70
			}
71
		}else{
72
			result = "???";
73
		}
74
		return result;
75
	}
47

  
48
//	@Override
49
//	public String getTitleCache(T taxonBase) {
50
//		String title;
51
//		if (taxonBase.isProtectedTitleCache()){
52
//		    return taxonBase.getTitleCache();
53
//		}else if (taxonBase.getName() != null && taxonBase.getName().getTitleCache() != null){
54
//			String namePart = getNamePart(taxonBase);
55
//
56
//			title = namePart + " sec. ";
57
//			title += getSecundumPart(taxonBase);
58
//		}else{
59
//			title = taxonBase.toString();
60
//		}
61
//		if (taxonBase.isDoubtful()){
62
//			title = "?" + title;
63
//		}
64
//		return title;
65
//	}
66

  
67
//	/**
68
//	 * @param taxonBase
69
//	 * @param title
70
//	 * @return
71
//	 */
72
//	private String getSecundumPart(T taxonBase) {
73
//		String result;
74
//		Reference<?> sec = taxonBase.getSec();
75
//		if (sec != null){
76
//			if (sec.getCacheStrategy() != null &&
77
//					sec.getAuthorship() != null &&
78
//					isNotBlank(sec.getAuthorship().getTitleCache()) &&
79
//					isNotBlank(sec.getYear())){
80
//				result = sec.getCacheStrategy().getCitation(sec);
81
////				 sec.getAuthorTeam().getTitleCache() + sec.getYear();
82
//			}else{
83
//				result = taxonBase.getSec().getTitleCache();
84
//			}
85
//		}else{
86
//			result = "???";
87
//		}
88
//		return result;
89
//	}
76 90

  
77 91
	/**
78 92
	 * @param name
......
91 105
		return result;
92 106
	}
93 107

  
108
    @Override
109
    public List<TaggedText> getTaggedTitle(T taxonBase) {
110
        if (taxonBase == null){
111
            return null;
112
        }
113

  
114
        List<TaggedText> tags = new ArrayList<TaggedText>();
115

  
116
        if (taxonBase.isDoubtful()){
117
            tags.add(new TaggedText(TagEnum.separator, "?"));
118
        }
119
        if (taxonBase.isProtectedTitleCache()){
120
            //protected title cache
121
            tags.add(new TaggedText(TagEnum.name, taxonBase.getTitleCache()));
122
        }else{
123
            //name
124
            List<TaggedText> nameTags = getNameTags(taxonBase);
125

  
126
            if (nameTags.size() > 0){
127
                tags.addAll(nameTags);
128

  
129
                //sec.
130
                tags.add(new TaggedText(TagEnum.separator, " sec. "));
131

  
132
                //ref.
133
                List<TaggedText> secTags = getSecundumTags(taxonBase);
134
                tags.addAll(secTags);
135
            }else{
136
                tags.add(new TaggedText(TagEnum.fullName, taxonBase.toString()));
137
            }
138
        }
139
        return tags;
140
    }
141

  
142
    private List<TaggedText> getSecundumTags(T taxonBase) {
143
        List<TaggedText> tags = new ArrayList<TaggedText>();
144

  
145
        Reference<?> ref = taxonBase.getSec();
146
        ref = HibernateProxyHelper.deproxy(ref, Reference.class);
147
        if (ref != null){
148
            if (ref.getCacheStrategy() != null &&
149
                    ref.getAuthorship() != null &&
150
                    isNotBlank(ref.getAuthorship().getTitleCache()) &&
151
                    isNotBlank(ref.getYear())){
152
                String citation = ref.getCacheStrategy().getCitation(ref);
153
//                   sec.getAuthorTeam().getTitleCache() + sec.getYear();
154
                tags.add(new TaggedText(TagEnum.reference, citation));
155
            }else{
156
                tags.add(new TaggedText(TagEnum.reference, ref.getTitleCache()));
157
            }
158
        }else{
159
            tags.add(new TaggedText(TagEnum.reference, "???"));
160
        }
161
        return tags;
162
    }
163

  
164
    private List<TaggedText> getNameTags(T taxonBase) {
165
        List<TaggedText> tags = new ArrayList<TaggedText>();
166
        TaxonNameBase<?,INameCacheStrategy<TaxonNameBase>> name = taxonBase.getName();
167
        if (name != null){
168
            if (taxonBase.isUseNameCache() && name.isInstanceOf(NonViralName.class)){
169
                NonViralName<?> nvn = HibernateProxyHelper.deproxy(name, NonViralName.class);
170
                List<TaggedText> nameCacheTags = nvn.getCacheStrategy().getTaggedName(nvn);
171
                tags.addAll(nameCacheTags);
172
            }else{
173
                List<TaggedText> nameTags = name.getTaggedName();
174
                tags.addAll(nameTags);
175
            }
176
            if (StringUtils.isNotBlank(taxonBase.getAppendedPhrase())){
177
                tags.add(new TaggedText(TagEnum.appendedPhrase, taxonBase.getAppendedPhrase().trim()));
178
            }
179
        }
180
        return tags;
181
    }
182

  
183
    @Override
184
    public String getTitleCache(T taxonBase, HTMLTagRules htmlTagRules) {
185
        List<TaggedText> tags = getTaggedTitle(taxonBase);
186
        if (tags == null){
187
            return null;
188
        }else{
189
            String result = TaggedCacheHelper.createString(tags, htmlTagRules);
190
            return result;
191
        }
192
    }
193

  
194

  
195

  
94 196
}

Also available in: Unified diff