View Javadoc

1   // $Id: ProjectEntries.java,v 1.6 2004/06/24 20:54:20 powerpete Exp $
2   // [JMP, 01.01.2004] Created this file.
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  //                BackupUserEntry modifiedEntry = entry.getBackupUserEntry();
43  //                if (modifiedEntry == null)
44  //                {
45                      add(entry);
46  //                }
47  //                else
48  //                {
49  //                    add(modifiedEntry);
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 }