BrightSide Workbench Full Report + Source Code
ProjectVisualElements.java
Go to the documentation of this file.
1 /*
2  * TurrĂ³ i Cutiller Foundation. License notice.
3  * Copyright (C) 2017 Lluis TurrĂ³ Cutiller <http://www.turro.org/>
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Affero General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Affero General Public License for more details.
14  *
15  * You should have received a copy of the GNU Affero General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 package org.turro.dossier.project;
20 
21 import java.util.EnumSet;
22 import org.amic.util.string.Strings;
23 import org.turro.auth.Authentication;
24 import org.turro.dossier.dossier.ProjectContext;
25 import org.turro.dossier.entity.Dossier;
26 import org.turro.dossier.entity.DossierType;
27 import org.turro.dossier.entity.Issue;
28 import org.turro.dossier.entity.IssueResolution;
29 import org.turro.dossier.entity.Project;
30 import org.turro.dossier.entity.ProjectPhase;
31 import org.turro.plugin.contacts.IContact;
32 
37 @Deprecated
38 public class ProjectVisualElements {
39 
40  private final Dossier dossier;
41  private final Project project;
42  private final IContact contact;
43  private final ProjectContext context = new ProjectContext();
44 
45  public ProjectVisualElements(Dossier dossier) {
46  this.dossier = dossier;
47  if(DossierType.TYPE_PROJECT.equals(dossier.getType())) {
48  this.project = dossier.getProject();
49  } else {
50  this.project = null;
51  }
52  this.contact = Authentication.getIContact();
53  }
54 
55  public boolean isShowLike() {
56  if(project != null && EnumSet.of(ProjectPhase.PROJECT_IDEA, ProjectPhase.PROJECT_INCUBATOR).contains(project.getPhase())) {
57  return true;
58  }
59  return false;
60  }
61 
62  public boolean isShowWorths() {
63  if(project != null && EnumSet.of(ProjectPhase.PROJECT_VOTING).contains(project.getPhase())) {
64  return isPatron();
65  }
66  return false;
67  }
68 
69  public boolean isShowWorthsResults() {
70  if(project != null && EnumSet.of(ProjectPhase.PROJECT_VOTING).contains(project.getPhase())) {
71  return isAdministrator();
72  }
73  if(project != null && EnumSet.of(ProjectPhase.PROJECT_DECIDING).contains(project.getPhase())) {
74  return isPatron() || isAdministrator();
75  }
76  return false;
77  }
78 
79  public boolean isShowMoveToOppositing() {
80  if(project != null && EnumSet.of(ProjectPhase.PROJECT_DECIDING).contains(project.getPhase())) {
81  return isPatron();
82  }
83  return false;
84  }
85 
86  public boolean isShowMoveToOppositingResults() {
87  if(project != null && EnumSet.of(ProjectPhase.PROJECT_DECIDING).contains(project.getPhase())) {
88  return isAdministrator();
89  }
90  return false;
91  }
92 
93  public boolean isShowOpenningDescriptors() {
94  return true;
95  }
96 
97  public boolean isEditOpenningDescriptors() {
99  isParticipatesAs(context.getAttribute("Coordinator"));
100  }
101 
102  public boolean isShowClosingDescriptors() {
103  return true;
104  }
105 
106  public boolean isEditClosingDescriptors() {
107  if(project != null && EnumSet.of(ProjectPhase.PROJECT_RESOLUTION).contains(project.getPhase())) {
109  isParticipatesAs(context.getAttribute("Coordinator"));
110  }
111  return false;
112  }
113 
114  public boolean isShowFinalDescriptors() {
115  return true;
116  }
117 
118  public boolean isEditFinalDescriptors() {
119  if(project != null && EnumSet.of(ProjectPhase.PROJECT_RESOLUTION).contains(project.getPhase())) {
121  isParticipatesAs(context.getAttribute("Coordinator")) ||
122  isParticipatesAs(context.getAttribute("Beneficiary"));
123  }
124  return false;
125  }
126 
127  public boolean showDiscriminator(String discriminator) {
128  if(!Strings.isBlank(discriminator)) {
129  if(discriminator.equals(context.getAttribute("Beneficiary"))) {
130  return isShowBeneficiaries();
131  } else if(discriminator.equals(context.getAttribute("Offerer"))) {
132  return isShowOferers();
133  } else if(discriminator.equals(context.getAttribute("Support"))) {
134  return isShowSupportUsers();
135  } else if(discriminator.equals(context.getAttribute("Coordinator"))) {
136  return isShowCoordinators();
137  } else if(discriminator.equals(context.getAttribute("Patron"))) {
138  return isShowPatrons();
139  } else {
140  return true;
141  }
142  } else {
143  return false;
144  }
145  }
146 
147  public boolean isShowBeneficiaries() {
148  return true;
149  }
150 
151  public boolean isShowOferers() {
152  return true;
153  }
154 
155  public boolean isShowSupportUsers() {
156  return false;
157  }
158 
159  public boolean isShowCoordinators() {
160  return !isVisitor();
161  }
162 
163  public boolean isShowPatrons() {
164  return false;
165  }
166 
167  public boolean isShowOffers(Issue issue) {
168  if(project != null && EnumSet.of(ProjectPhase.PROJECT_OPPOSITING, ProjectPhase.PROJECT_VALIDATED,
169  ProjectPhase.PROJECT_RESOLUTION).contains(project.getPhase())) {
170  return isAdministrator() || isResponsibleOfComission() || isOwnOffer(issue);
171  }
172  return false;
173  }
174 
175  public boolean isShowUploadOffer() {
176  if(project != null && EnumSet.of(ProjectPhase.PROJECT_OPPOSITING).contains(project.getPhase())) {
177  return isAdministrator() || isParticipatesAs(context.getAttribute("Offerer"));
178 // (isParticipatesAs(context.getAttribute("Offerer")) &&
179 // (project.getOppositingEndDate() == null || new CheckDate(project.getOppositingEndDate()).addDays(1).getDate().after(new Date())));
180  }
181  return false;
182  }
183 
184  public boolean isShowAddDocsOffer(Issue issue) {
185  if(project != null && EnumSet.of(ProjectPhase.PROJECT_OPPOSITING).contains(project.getPhase())) {
186  return isAdministrator() || isOwnOffer(issue);
187  }
188  if(project != null && EnumSet.of(ProjectPhase.PROJECT_VALIDATED).contains(project.getPhase())) {
189  return isAdministrator() || isOwnWinOffer(issue);
190  }
191  return false;
192  }
193 
194  public boolean isShowOfferComments(Issue issue) {
195  if(project != null && EnumSet.of(ProjectPhase.PROJECT_OPPOSITING).contains(project.getPhase())) {
196  return isAdministrator() || isResponsibleOfComission() || isOwnOffer(issue);
197  }
198  return false;
199  }
200 
201  public boolean isShowMilestones() {
202  return true;
203  }
204 
205  public boolean isShowReportIssue() {
206  return false;
207  }
208 
209  public boolean isShowAskParticipate() {
210  return !isVisitor();
211  }
212 
213  public boolean isShowComments() {
214  return !isVisitor();
215  }
216 
217  public boolean isShowDocuments() {
218  return !isVisitor();
219  }
220 
221  /* Identities */
222 
223  public boolean isAdministrator() {
224  return checkContact() && contact.getSyndications().contains("contacts_admin");
225  }
226 
227  public boolean isPatron() {
228  return checkContact() && contact.getSyndications().contains("patron");
229  }
230 
231  public boolean isResponsibleOfComission() {
232  return checkContact() && dossier.isDirectOwner(contact);
233  }
234 
235  public boolean isInComission() {
236  return checkContact() && dossier.getFullParticipants().isParticipant(contact);
237  }
238 
239  public boolean isPartner() {
240  return checkContact() && contact.getSyndications().contains("partner");
241  }
242 
243  public boolean isVisitor() {
244  return !checkContact() || !(isAdministrator() || isPatron() || isPartner() || isInComission());
245  }
246 
247  public boolean isParticipatesAs(String discriminator) {
248  return checkContact() && dossier.getFullParticipants().isParticipantByDiscriminator(contact, discriminator);
249  }
250 
251  public boolean isWiningOfferer() {
252  for(Issue issue : dossier.getIssuesByGrouping(context.getAttribute("Offer"))) {
253  if(isOwnWinOffer(issue)) {
254  return true;
255  }
256  }
257  return false;
258  }
259 
260  public boolean isOwnWinOffer(Issue issue) {
261  if(checkContact() && issue.getIssueParticipants().isReporter(contact)) {
262  if(IssueResolution.RESOLUTION_FIXED.equals(issue.getResolution())) {
263  return true;
264  }
265  }
266  return false;
267  }
268 
269  public boolean isOwnOffer(Issue issue) {
270  if(checkContact() && issue.getIssueParticipants().isReporter(contact)) {
271  return true;
272  }
273  return false;
274  }
275 
276  private boolean checkContact() {
277  return contact != null && contact.isValid();
278  }
279 
280 }
boolean isDirectOwner(IContact contact)
Definition: Dossier.java:531
ParticipantSet< IDossierParticipant > getFullParticipants()
Definition: Dossier.java:369
Collection< Issue > getIssuesByGrouping(String grouping)
Definition: Dossier.java:353
IssueResolution getResolution()
Definition: Issue.java:225
ParticipantSet< IssueParticipant > getIssueParticipants()
Definition: Issue.java:468