Clover Coverage Report - itracker
Coverage timestamp: Tue May 1 2012 16:42:12 CEST
43   186   35   1.43
10   141   0.81   30
30     1.17  
1    
 
 
  ProjectPTO       Line # 16 43 35 0% 0.0
 
No Tests
 
1    package org.itracker.web.ptos;
2   
3    import java.util.Collections;
4    import java.util.Date;
5    import java.util.Map;
6    import java.util.Set;
7   
8    import org.apache.commons.lang.builder.ToStringBuilder;
9    import org.itracker.model.PermissionType;
10    import org.itracker.model.Project;
11    import org.itracker.model.Status;
12    import org.itracker.services.ProjectService;
13    import org.itracker.services.util.UserUtilities;
14    import org.itracker.web.util.ServletContextUtils;
15   
 
16    public class ProjectPTO {
17   
18    private final Project project;
19   
20    private Long totalOpenIssues = null;
21    private Long totalResolvedIssues = null;
22    private Date lastUpdatedIssueDate = null;
23    private Boolean canCreate = null;
24   
25    private final ProjectService projectService;
26    private final Map<Integer, Set<PermissionType>> permissions;
27   
 
28  0 toggle public ProjectPTO(Project project, Map<Integer, Set<PermissionType>> permissions) {
29  0 this(project, ServletContextUtils.getItrackerServices().getProjectService(), permissions);
30   
31    }
 
32  0 toggle public ProjectPTO(Project project, ProjectService projectService, final Map<Integer, Set<PermissionType>> permissions) {
33  0 if (null == project) {
34  0 throw new IllegalArgumentException("Project must not be null");
35    }
36  0 this.project = project;
37  0 this.projectService = projectService;
38  0 this.permissions = Collections.unmodifiableMap(permissions);
39    }
 
40  0 toggle public Project getProject() {
41  0 return project;
42    }
43   
 
44  0 toggle public Long getTotalNumberIssues() {
45  0 return getTotalOpenIssues() + getTotalResolvedIssues();
46    }
 
47  0 toggle public void setTotalNumberIssues(Long totalNumberIssues) {
48  0 setTotalOpenIssues(totalNumberIssues);
49  0 setTotalResolvedIssues(0l);
50    }
51   
 
52  0 toggle public void setTotalOpenIssues(Long totalOpenIssues) {
53  0 this.totalOpenIssues = totalOpenIssues;
54    }
 
55  0 toggle public Long getTotalOpenIssues() {
56  0 if (null == totalOpenIssues) {
57  0 setupNumberOfOpenIssues(this, projectService);
58    }
59  0 return totalOpenIssues;
60    }
 
61  0 toggle public void setTotalResolvedIssues(Long totalResolvedIssues) {
62  0 this.totalResolvedIssues = totalResolvedIssues;
63    }
 
64  0 toggle public Long getTotalResolvedIssues() {
65  0 if (null == totalResolvedIssues) {
66  0 setupNumberOfResolvedIssues(this, projectService);
67    }
68  0 return totalResolvedIssues;
69    }
70   
71    /**
72    * @return
73    * @see org.itracker.model.AbstractEntity#getCreateDate()
74    */
 
75  0 toggle public Date getCreateDate() {
76  0 return project.getCreateDate();
77    }
78    /**
79    * @return
80    * @see org.itracker.model.Project#getDescription()
81    */
 
82  0 toggle public String getDescription() {
83  0 return project.getDescription();
84    }
85    /**
86    * @return
87    * @see org.itracker.model.AbstractEntity#getId()
88    */
 
89  0 toggle public Integer getId() {
90  0 return project.getId();
91    }
92    /**
93    * @return
94    * @see org.itracker.model.AbstractEntity#getLastModifiedDate()
95    */
 
96  0 toggle public Date getLastModifiedDate() {
97  0 return project.getLastModifiedDate();
98    }
99    /**
100    * @return
101    * @see org.itracker.model.Project#getName()
102    */
 
103  0 toggle public String getName() {
104  0 return project.getName();
105    }
106    /**
107    * @return
108    * @see org.itracker.model.Project#getStatus()
109    */
 
110  0 toggle public Status getStatus() {
111  0 return project.getStatus();
112    }
113   
 
114  0 toggle public Boolean getActive() {
115  0 return getStatus() == Status.ACTIVE;
116    }
 
117  0 toggle public Boolean isActive() {
118  0 return getActive();
119    }
 
120  0 toggle public Boolean getViewable() {
121  0 return getProject().getStatus() == Status.VIEWABLE;
122    }
 
123  0 toggle public Boolean isViewable() {
124  0 return getViewable();
125    }
 
126  0 toggle public Boolean getCanCreate() {
127  0 if (null == this.canCreate) {
128  0 setupCanCreate(this, permissions);
129    }
130  0 return this.canCreate;
131    }
 
132  0 toggle public Boolean isCanCreate() {
133  0 return getCanCreate();
134    }
 
135  0 toggle public void setCanCreate(Boolean canCreate) {
136  0 this.canCreate = canCreate;
137    }
138   
139   
 
140  0 toggle public void setLastUpdatedIssueDate(Date lastUpdatedIssueDate) {
141  0 if (null == lastUpdatedIssueDate) {
142  0 setupLastIssueUpdateDate(this, projectService);
143    }
144  0 this.lastUpdatedIssueDate = lastUpdatedIssueDate;
145    }
 
146  0 toggle public Date getLastUpdatedIssueDate() {
147  0 return lastUpdatedIssueDate;
148    }
 
149  0 toggle @Override
150    public String toString() {
151  0 return new ToStringBuilder(this).append("project", getProject()).toString();
152    }
153   
154    //TODO: Code Cleanup: this method is not used and I don't like the name (what does setup stand for?)
155    //TODO: Decide if this code is really needed and document for what
 
156  0 toggle @SuppressWarnings("unused")
157    private static final void setupNumberOfIssues(ProjectPTO pto,
158    ProjectService service) {
159  0 pto.setTotalNumberIssues(service.getTotalNumberIssuesByProject(pto
160    .getId()));
161    }
162   
 
163  0 toggle private static final void setupNumberOfOpenIssues(ProjectPTO pto,
164    ProjectService service) {
165  0 pto.setTotalOpenIssues(service.getTotalNumberOpenIssuesByProject(pto
166    .getId()));
167    }
168   
 
169  0 toggle private static final void setupNumberOfResolvedIssues(ProjectPTO pto,
170    ProjectService service) {
171  0 pto.setTotalResolvedIssues(service
172    .getTotalNumberResolvedIssuesByProject(pto.getId()));
173    }
174   
 
175  0 toggle private static final void setupCanCreate(ProjectPTO pto,
176    final Map<Integer, Set<PermissionType>> permissions) {
177  0 pto.setCanCreate(UserUtilities.hasPermission(permissions, pto.getId(),
178    UserUtilities.PERMISSION_CREATE));
179    }
180   
 
181  0 toggle private static final void setupLastIssueUpdateDate(ProjectPTO pto,
182    ProjectService service) {
183  0 pto.setLastUpdatedIssueDate(service
184    .getLatestIssueUpdatedDateByProjectId(pto.getId()));
185    }
186    }