1
2
3 package com.pnpconsult.zeiterfassung.actions.user;
4
5 import java.io.Serializable;
6 import java.text.DateFormat;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Date;
10 import java.util.Iterator;
11 import java.util.List;
12 import java.util.SortedSet;
13 import java.util.TreeSet;
14
15 import org.apache.commons.lang.StringUtils;
16 import org.apache.commons.logging.Log;
17 import org.apache.commons.logging.LogFactory;
18
19 import com.pnpconsult.zeiterfassung.helper.ProjectManager;
20 import com.pnpconsult.zeiterfassung.model.AbstractUserEntry;
21 import com.pnpconsult.zeiterfassung.model.Project;
22 import com.pnpconsult.zeiterfassung.model.UserEntry;
23
24
25 class ProjectEntries implements Serializable
26 {
27 private static final Log LOG = LogFactory.getLog(ProjectEntries.class);
28 private SortedSet involvedSet = new TreeSet();
29 private SortedSet partnerSet = new TreeSet();
30 private List targetDateStringList = new ArrayList();
31 private SortedSet targetDateSet = new TreeSet();
32
33 public ProjectEntries(long projectId)
34 {
35 try
36 {
37 Project project = new ProjectManager().load(projectId);
38 Collection entries = project.getUserEntries();
39 for (Iterator it = entries.iterator(); it.hasNext();)
40 {
41 UserEntry entry = (UserEntry) it.next();
42
43
44
45 add(entry);
46
47
48
49
50
51 }
52 for (Iterator it = targetDateSet.iterator(); it.hasNext();)
53 {
54 Date date = (Date) it.next();
55 targetDateStringList.add(
56 DateFormat.getDateInstance().format(date));
57 }
58 }
59 catch (Exception e)
60 {
61 LOG.fatal("Error creating new ProjectEntries.", e);
62 }
63 }
64
65 private void add(AbstractUserEntry entry)
66 {
67 addNotNull(involvedSet, entry.getInvolved());
68 addNotNull(partnerSet, entry.getPartner());
69 addNotNull(targetDateSet, entry.getTargetDate());
70 }
71
72 private void addNotNull(Collection col, Object obj)
73 {
74 if ((obj == null) || (obj instanceof String && "".equals(obj)))
75 {
76 return;
77 }
78 col.add(obj);
79 }
80
81 public boolean containsTargetDate(Date targetDate)
82 {
83 return targetDate == null
84 || targetDateSet.isEmpty()
85 || targetDateSet.contains(targetDate);
86 }
87
88 public boolean containsInvolved(String involved)
89 {
90 return contains(involved, involvedSet);
91 }
92
93 public boolean containsPartner(String partner)
94 {
95 return contains(partner, partnerSet);
96 }
97
98 private boolean contains(String str, Collection col)
99 {
100 return StringUtils.isEmpty(str) || col.isEmpty() || col.contains(str);
101 }
102
103 public List getTargetDateStringList()
104 {
105 return targetDateStringList;
106 }
107
108 public SortedSet getPartnerSet()
109 {
110 return partnerSet;
111 }
112
113 public SortedSet getInvolvedSet()
114 {
115 return involvedSet;
116 }
117 }