19 package org.turro.alliance.content;
21 import java.io.Writer;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import org.apache.commons.lang3.ObjectUtils;
25 import org.turro.action.Interceptors;
26 import org.turro.alliance.db.AlliancePU;
27 import org.turro.alliance.db.entities.AxChallenge;
28 import org.turro.alliance.db.entities.ProcedenceId;
29 import org.turro.alliance.www.CategoriesTree;
30 import org.turro.elephant.context.ElephantContext;
31 import org.turro.elephant.context.IConstructor;
32 import org.turro.elephant.db.WhereClause;
33 import org.turro.elephant.impl.repository.Repository;
34 import org.turro.elephant.impl.repository.RepositoryFile;
35 import org.turro.elephant.web.SocialImageMap;
36 import org.turro.elephant.web.SocialNet;
37 import org.turro.file.util.FileAttach;
38 import org.turro.jpa.content.EntityDaoContentIterator;
39 import org.turro.jpa.search.DaoHtmlSearch;
40 import org.turro.jpa.search.DaoSearchKey;
41 import org.turro.marker.ElephantMarker;
42 import org.turro.plugin.contacts.IContact;
43 import org.turro.string.Strings;
44 import org.turro.tags.TagCloud;
45 import org.turro.util.Arrays;
46 import org.turro.ws.WsMember;
54 private long lastCategoryId = -1;
61 if(ObjectUtils.allNotNull(member, challenge)) {
79 wc.
addClause(
"select distinct challenge from AxChallenge as challenge");
80 wc.
addClause(
"join AxTalentCategory as category on challenge.categoryId = category.categoryId");
81 wc.
addClause(
"left outer join challenge.responses response");
83 addCriteria(wc,
true);
84 wc.
addClause(
"order by challenge.creation desc");
91 wc.
addClause(
"select count(distinct challenge) from AxChallenge as challenge");
92 wc.
addClause(
"join AxTalentCategory as category on challenge.categoryId = category.categoryId");
93 wc.
addClause(
"left outer join challenge.responses response");
95 addCriteria(wc,
true);
96 wc.
addClause(
"order by challenge.creation desc");
110 prepareValues(e, page);
119 prepareValues(e, page);
126 return "axchallenge";
132 wc.
addClause(
"select distinct challenge from AxChallenge as challenge");
133 wc.
addClause(
"join AxTalentCategory as category on challenge.categoryId = category.categoryId");
134 wc.
addClause(
"left outer join challenge.responses response");
136 addCriteria(wc,
true);
137 wc.
addClause(
"and challenge.challengeId = :id");
145 if(identifier ==
null) {
146 identifier = super.getIdentifier();
151 private void addCriteria(
WhereClause wc,
boolean filterPhase) {
154 if(!Strings.isBlank(selected)) {
155 wc.
addClause(
"and concat(category.uniquePath, '/') like :category");
160 DaoHtmlSearch dhs = DaoHtmlSearch.getInstance(
constructor, ElephantContext.getContextVariable(
constructor));
162 DaoSearchKey dsk = dhs.get(
"search-value");
164 dsk.applyToQuery(wc, Arrays.objects(
"challenge.name"),
true);
168 if(TagCloud.hasSelected(
constructor,
"axchallenge")) {
169 wc.
addIn(
"and",
"challenge.id", TagCloud.getIdentifiers(
constructor,
"axchallenge"));
173 private void prepareValues(
final AxChallenge challenge,
int page) {
179 if(!Strings.isBlank(e.
getName())) {
187 ArrayList<RepositoryFile> files =
new ArrayList<>();
201 return isMail() ?
"content/newsletter/sections/alliance/challenges" :
"alliance/challenge";
247 if(Strings.isBlank(path)) {
250 if(Strings.isBlank(path)) {
258 return "/user/alliance/challenges";
static Parameters parameters(String root)
Parameters add(String key, Object value)
Object doAttachmentsCtrl(AxChallenge e)
Object doFilesCtrl(AxChallenge e)
Object doVotesCtrl(AxChallenge e)
String getItemLink(AxChallenge challenge)
Object doCommentsCtrl(AxChallenge e)
String stringId(ProcedenceId value)
ChallengeContentIterator(IConstructor constructor, Writer writer, IContact contact, boolean mail, String pubPath)
String getRestrictedLink()
Object doInterestCtrl(AxChallenge e)
void renderItem(ElephantMarker marker, AxChallenge e, int page)
WhereClause getWhereClause()
AxChallenge entity(ProcedenceId value)
Collection< String > metas(AxChallenge e)
ProcedenceId parseId(String value)
String getChallengeUrl(WsMember member, AxChallenge challenge)
WhereClause getCountClause()
Object doDescriptionsCtrl(AxChallenge e)
String title(AxChallenge e)
ProcedenceId getIdentifier()
void renderSummary(ElephantMarker marker, AxChallenge e, int page)
Object doPollsCtrl(AxChallenge e)
static String getObjectPath(Object object)
AxTalentCategory getCategory()
ProcedenceId getChallengeId()
static ProcedenceId from(String id)
static String getSiteForcedDomain()
static String getEntityWebContext(String path)
void addClause(String clause)
void addIn(String operator, String field, List values)
void addNamedValue(String name, Object value)
Set< RepositoryFile > getRepositoryFiles(String pattern)
static boolean hasImage(String url)
List< String > getMetas()
Repository getPublishableRepository(IConstructor constructor)
Object getSingleResultOrNull(SqlClause sc)
void prepareControls(E entity, int page)
String doItemLink(E entity, ID id, boolean obfuscated)
ID getIDFromURL(String root)
String getSummaryTemplate()
DaoHtmlTree getNavigationTree()
void process(String rootTmpl, String tmpl)
Object put(Object key, Object value)