implement cache strategy for "et al." #4791
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / agent / TeamDefaultCacheStrategy.java
1 /**
2 * Copyright (C) 2009 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.agent;
11
12 import java.util.List;
13 import java.util.UUID;
14
15 import org.apache.log4j.Logger;
16
17 import eu.etaxonomy.cdm.model.agent.Person;
18 import eu.etaxonomy.cdm.model.agent.Team;
19 import eu.etaxonomy.cdm.strategy.StrategyBase;
20
21 /**
22 * @author AM
23 *
24 */
25 public class TeamDefaultCacheStrategy extends StrategyBase implements INomenclaturalAuthorCacheStrategy<Team> {
26 private static final String FINAL_TEAM_CONCATINATION = " & ";
27 private static final String STD_TEAM_CONCATINATION = ", ";
28 private static final long serialVersionUID = 8375295443642690479L;
29 @SuppressWarnings("unused")
30 private static final Logger logger = Logger.getLogger(TeamDefaultCacheStrategy.class);
31
32 final static UUID uuid = UUID.fromString("1cbda0d1-d5cc-480f-bf38-40a510a3f223");
33
34 public static final String EMPTY_TEAM = "-empty team-";
35
36 static public TeamDefaultCacheStrategy NewInstance(){
37 return new TeamDefaultCacheStrategy();
38 }
39
40 private TeamDefaultCacheStrategy() {
41 super();
42 }
43
44 @Override
45 protected UUID getUuid() {
46 return uuid;
47 }
48
49 @Override
50 public String getNomenclaturalTitle(Team team) {
51 String result = "";
52
53 List<Person> teamMembers = team.getTeamMembers();
54 int i = 0;
55 for (Person teamMember : teamMembers){
56 i++;
57 String concat;
58 if (i <= 1){
59 concat = "";
60 }else if (i < teamMembers.size() || ( team.isHasMoreMembers() && i == teamMembers.size()) ){
61 concat = STD_TEAM_CONCATINATION;
62 }else{
63 concat = FINAL_TEAM_CONCATINATION;
64 }
65 result += concat + teamMember.getNomenclaturalTitle();
66 }
67 if (teamMembers.size() == 0){
68 result = team.getTitleCache();
69 }else if (team.isHasMoreMembers()){
70 result += " et al.";
71 }
72 return result;
73 }
74
75 @Override
76 public String getTitleCache(Team team) {
77 // TODO is still dummy
78 String result = "";
79 List<Person> teamMembers = team.getTeamMembers();//Hibernate.initialize(teamMembers);
80
81 int i = 0;
82 for (Person teamMember : teamMembers){
83 i++;
84 String concat;
85 if (i <= 1){
86 concat = "";
87 }else if (i < teamMembers.size()){
88 concat = STD_TEAM_CONCATINATION;
89 }else{
90 concat = FINAL_TEAM_CONCATINATION;
91 }
92 result += concat + teamMember.getTitleCache();
93 }
94 if (teamMembers.size() == 0){
95 result = EMPTY_TEAM;
96 }
97 return result;
98 }
99
100 }