18 package org.turro.dossier.zul.viewer;
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.List;
24 import org.amic.util.string.Strings;
25 import org.turro.auth.Authentication;
26 import org.turro.dossier.db.DossierPU;
27 import org.turro.dossier.entity.Category;
28 import org.turro.dossier.entity.Dossier;
29 import org.turro.dossier.entity.DossierStatus;
30 import org.turro.dossier.entity.ParticipantRole;
31 import org.turro.dossier.search.DossierResults;
32 import org.turro.elephant.db.WhereClause;
33 import org.turro.plugin.contacts.IContact;
34 import org.turro.plugin.contacts.IContactNameComparator;
35 import org.turro.plugin.contacts.IContactTreeMap;
56 this.category = category;
64 this.contact = contact;
72 this.viewpoint = viewpoint;
77 wc.
addClause(
"select distinct dossier.category from Dossier as dossier");
78 wc.
addClause(
"left join dossier.participants participant");
82 wc.
addClause(
"participant.idContact = :idContact");
85 wc.
addClause(
"and participant.role <> :roleContact");
88 wc.
addClause(
"and participant.role = :roleContact");
100 return new DossierPU().getResultList(wc);
103 public Map<IContact, List<Dossier>>
getDossiersMap(String searchValue,
boolean onlyActive) {
106 if(contact !=
null) {
107 List<Dossier> ld =
getDossiers(searchValue, onlyActive);
110 dossiers.
put(contact, ld);
121 if(d.getSubject() ==
null) {
124 cId = d.getSubject().getIdContact();
126 List<Dossier> tld = dossiers.
getById(cId);
128 tld =
new ArrayList<Dossier>();
140 public List<Dossier>
getDossiers(String searchValue,
boolean onlyActive) {
141 return getDossiers(contact, searchValue, onlyActive);
144 private List<Dossier>
getDossiers(
IContact contact, String searchValue,
boolean onlyActive) {
145 if(Strings.isBlank(searchValue))
return Collections.EMPTY_LIST;
147 wc.
addClause(
"select distinct dossier from Dossier as dossier");
148 wc.
addClause(
"left join dossier.participants participant");
154 wc.
addClause(
"participant.idContact = :idContact");
157 wc.
addClause(
"and participant.role <> :roleContact");
160 wc.
addClause(
"and participant.role = :roleContact");
164 if(viewpoint.equals(ParticipantRole.PARTICIPANT_OWNER)) {
165 DossierResults.addCategoryConditionals(wc,
"or", contact.
getId(), ParticipantRole.PARTICIPANT_SUBJECT,
"<>");
167 DossierResults.addCategoryConditionals(wc,
"or", contact.
getId(), viewpoint,
"=");
182 wc.
addClause(
"and dossier.status = :status");
185 if(category !=
null) {
187 DossierResults.addCategoryAffiliance(wc, category,
"dossier.category");
199 "dossier.description"
202 wc.
addClause(
"or exists (select fieldValue from dossier.fieldValues fieldValue where 1=1");
207 return new DossierPU().getResultList(wc);
static IContact getIContact()
static void addCategoryConditionals(WhereClause wc, String sep, String id, ParticipantRole participantRole, String operator)
static String getCategoryJoins()
List< Dossier > getDossiers(String searchValue, boolean onlyActive)
void setCategory(Category category)
Map< IContact, List< Dossier > > getDossiersMap(String searchValue, boolean onlyActive)
ParticipantRole getViewpoint()
void setViewpoint(ParticipantRole viewpoint)
List< Category > getPossibleCategories()
void setContact(IContact contact)
void setPrefix(String prefix)
void addClause(String clause)
void addLikeFields(String[] fields, String value)
void addNamedValue(String name, Object value)