Skip to content

Commit dd7d008

Browse files
committed
- TurCommonsUtils.getKeyValueFromColon and AEM - cq:template
1 parent 69e5921 commit dd7d008

File tree

10 files changed

+75
-81
lines changed

10 files changed

+75
-81
lines changed

turing-aem/aem-commons/src/main/java/com/viglet/turing/connector/aem/commons/TurAemAttrProcess.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
public class TurAemAttrProcess {
4545
public static final String JCR_TITLE = "jcr:title";
4646
public static final String CQ_TAGS = "cq:tags";
47-
public static final String TAG_SEPARATOR = ":";
4847
public static final String DEFAULT = "default";
4948
public static final String TEXT = "text";
5049
public static final String JCR = "jcr:";
@@ -294,16 +293,14 @@ private static void processTagsFromTargetAttr(TurCmsContext context, TurAemSourc
294293
private static void formatTags(TurCmsContext context, TurAemSourceContext turAemSourceContext,
295294
List<TurSNAttributeSpec> turSNAttributeSpecList, String tag,
296295
TurCmsTargetAttrValueMap turCmsTargetAttrValueMap) {
297-
String[] tagSplit = tag.split(TAG_SEPARATOR);
298-
if (tagSplit.length >= 2) {
299-
Optional.ofNullable(tagSplit[0]).ifPresent(facet -> {
300-
turSNAttributeSpecList.add(setTagFacet(turAemSourceContext, facet));
301-
Optional.ofNullable(tagSplit[1]).ifPresent(value ->
302-
turCmsTargetAttrValueMap.addWithSingleValue(facet,
303-
addTagToAttrValueList(context, turAemSourceContext, facet, value), false)
304-
);
305-
});
306-
}
296+
TurCommonsUtils.getKeyValueFromColon(tag).ifPresent(kv ->
297+
Optional.ofNullable(kv.getKey()).ifPresent(facet -> {
298+
turSNAttributeSpecList.add(setTagFacet(turAemSourceContext, facet));
299+
Optional.ofNullable(kv.getValue()).ifPresent(value ->
300+
turCmsTargetAttrValueMap.addWithSingleValue(facet,
301+
addTagToAttrValueList(context, turAemSourceContext, facet, value), false)
302+
);
303+
}));
307304
}
308305

309306
private TurCmsTargetAttrValueMap attributeByClass(TurCmsContext context, TurAemSourceContext turAemSourceContext) {

turing-aem/aem-commons/src/main/java/com/viglet/turing/connector/aem/commons/TurAemObject.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,19 @@ public class TurAemObject {
4747
private final String type;
4848
private final String path;
4949
private final String url;
50-
private String model;
5150
private final JSONObject jcrNode;
5251
private JSONObject jcrContentNode = new JSONObject();
5352
private String title;
53+
private String template;
54+
private String model;
5455
private final Map<String, Object> attributes = new HashMap<>();
5556

5657
public static final String CONTENT_FRAGMENT = "contentFragment";
5758
public static final String CQ_LAST_REPLICATION_ACTION = "cq:lastReplicationAction";
5859
public static final String CQ_LAST_REPLICATION_ACTION_PUBLISH = "cq:lastReplicationAction_publish";
5960
public static final String CQ_LAST_MODIFIED = "cq:lastModified";
6061
public static final String CQ_MODEL = "cq:model";
62+
public static final String CQ_TEMPLATE = "cq:template";
6163
public static final String DATA_FOLDER = "data";
6264
public static final String DATE_JSON_FORMAT = "E MMM dd yyyy HH:mm:ss 'GMT'Z";
6365
public static final String EMPTY_VALUE = "";
@@ -71,6 +73,7 @@ public TurAemObject(String nodePath, JSONObject jcrNode) {
7173
try {
7274
if (jcrNode.has(JCR_CONTENT)) {
7375
this.jcrContentNode = jcrNode.getJSONObject(JCR_CONTENT);
76+
this.template = jcrContentNode.has(CQ_TEMPLATE) ? this.jcrContentNode.getString(CQ_TEMPLATE) : EMPTY_VALUE;
7477
this.delivered = isActivated(CQ_LAST_REPLICATION_ACTION)
7578
&& isActivated(CQ_LAST_REPLICATION_ACTION_PUBLISH);
7679
this.title = jcrContentNode.has(JCR_TITLE) ? this.jcrContentNode.getString(JCR_TITLE) : EMPTY_VALUE;

turing-app/src/main/java/com/viglet/turing/converse/TurConverse.java

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222

2323
import com.google.inject.Inject;
2424
import com.viglet.turing.bean.converse.TurConverseAgentResponse;
25+
import com.viglet.turing.commons.utils.TurCommonsUtils;
2526
import com.viglet.turing.persistence.model.converse.chat.TurConverseChat;
2627
import com.viglet.turing.persistence.model.converse.chat.TurConverseChatResponse;
2728
import com.viglet.turing.persistence.repository.converse.chat.TurConverseChatResponseRepository;
2829
import jakarta.servlet.http.HttpSession;
2930
import lombok.extern.slf4j.Slf4j;
3031
import org.apache.solr.common.SolrDocument;
3132
import org.apache.solr.common.SolrDocumentList;
32-
import org.springframework.beans.factory.annotation.Autowired;
3333
import org.springframework.stereotype.Component;
3434

3535
import java.security.SecureRandom;
@@ -71,7 +71,7 @@ public void saveChatResponseUser(String q, TurConverseChat chat, HttpSession ses
7171
String nextContext = (String) session.getAttribute(TurConverseConstants.NEXT_CONTEXT);
7272
SolrDocumentList results = turConverseSE.askPhrase(chat.getAgent(), q, nextContext);
7373
if (!results.isEmpty()) {
74-
SolrDocument firstResult = results.get(0);
74+
SolrDocument firstResult = results.getFirst();
7575
String intentId = (String) firstResult.getFieldValue(TurConverseConstants.ID);
7676
SimpleEntry<String, String> parameter = this.getParameterValue(q, chat, intentId);
7777
if (parameter != null) {
@@ -91,11 +91,10 @@ public AbstractMap.SimpleEntry<String, String> getParameterValue(String text, Tu
9191
String intentId) {
9292
SolrDocumentList termDocumentList = turConverseSE.sorlGetParameterValue(text, turConverseChat, intentId);
9393
if (!termDocumentList.isEmpty()) {
94-
String parameter = (String) termDocumentList.get(0).getFirstValue(TurConverseConstants.PARAMETERS);
95-
96-
String[] parameterKV = parameter.split(":");
97-
98-
return new AbstractMap.SimpleEntry<>(parameterKV[0], parameterKV[1]);
94+
String parameter = (String) termDocumentList.getFirst().getFirstValue(TurConverseConstants.PARAMETERS);
95+
return TurCommonsUtils.getKeyValueFromColon(parameter).map(p ->
96+
new SimpleEntry<>(p.getKey(), p.getValue()))
97+
.orElse(null);
9998

10099
}
101100
return null;
@@ -127,7 +126,6 @@ public void saveChatResponseBot(TurConverseChat chat, TurConverseAgentResponse t
127126

128127
}
129128

130-
@SuppressWarnings("unchecked")
131129
public void getChatParameter(TurConverseChat chat, HttpSession session,
132130
TurConverseAgentResponse turConverseAgentResponse) {
133131

@@ -172,7 +170,7 @@ public TurConverseAgentResponse interactionNested(TurConverseChat chat, String q
172170
results = turConverseSE.askPhrase(chat.getAgent(), q, nextContext);
173171

174172
if (!results.isEmpty()) {
175-
SolrDocument firstResult = results.get(0);
173+
SolrDocument firstResult = results.getFirst();
176174

177175
if ((boolean) firstResult.getFieldValue(TurConverseConstants.HAS_PARAMETER)) {
178176
session.setAttribute(TurConverseConstants.INTENT, firstResult.getFieldValue(TurConverseConstants.ID));
@@ -192,22 +190,17 @@ public TurConverseAgentResponse interactionNested(TurConverseChat chat, String q
192190
return turConverseAgentResponse;
193191
}
194192

195-
@SuppressWarnings("unchecked")
196193
private void getIntentFlow(TurConverseChat chat, HttpSession session,
197194
TurConverseAgentResponse turConverseAgentResponse, SolrDocument firstResult) {
198-
199195
List<String> contextOutputs = (List<String>) firstResult.getFieldValue(TurConverseConstants.CONTEXT_OUTPUT);
200-
201196
turConverseAgentResponse.setResponse(this.getIntentResponse(chat, firstResult));
202197
turConverseAgentResponse.setIntentId(firstResult.getFieldValue(TurConverseConstants.ID).toString());
203198
turConverseAgentResponse.setIntentName(firstResult.getFieldValue(TurConverseConstants.NAME).toString());
204-
205199
if (contextOutputs != null && !contextOutputs.isEmpty()) {
206-
session.setAttribute(TurConverseConstants.NEXT_CONTEXT, contextOutputs.get(0));
200+
session.setAttribute(TurConverseConstants.NEXT_CONTEXT, contextOutputs.getFirst());
207201
}
208202
}
209203

210-
@SuppressWarnings("unchecked")
211204
private String getIntentResponse(TurConverseChat chat, SolrDocument firstResult) {
212205
List<String> responses = (List<String>) firstResult.getFieldValue(TurConverseConstants.RESPONSES);
213206
int rnd = random.nextInt(responses.size());
@@ -217,12 +210,15 @@ private String getIntentResponse(TurConverseChat chat, SolrDocument firstResult)
217210
StringBuilder responseModified = new StringBuilder();
218211
for (String word : words) {
219212
if (word.startsWith("$")) {
220-
String parameterName = word.replace("\\$", "").replace(",", "").replace(";", "").replace("\\.", "");
213+
String parameterName = word.replace("\\$", "")
214+
.replace(",", "")
215+
.replace(";", "")
216+
.replace("\\.", "");
221217

222218
List<TurConverseChatResponse> values = turConverseChatResponseRepository
223219
.findByChatAndIsUserAndParameterNameOrderByDateDesc(chat, true, parameterName);
224220
if (!values.isEmpty()) {
225-
word = values.get(0).getParameterValue();
221+
word = values.getFirst().getParameterValue();
226222
}
227223
}
228224
responseModified.append(word).append(" ");
@@ -243,7 +239,7 @@ private String getFallbackResponse(TurConverseChat chat) {
243239
if (fallbackList.isEmpty())
244240
return TurConverseConstants.FALLBACK_DEFAULT_MESSAGE;
245241
else {
246-
SolrDocument fallbackIntent = fallbackList.get(0);
242+
SolrDocument fallbackIntent = fallbackList.getFirst();
247243

248244
Collection<Object> responses = fallbackIntent.getFieldValues(TurConverseConstants.RESPONSES);
249245

@@ -263,7 +259,7 @@ private void getIntentWhenFinishParameters(TurConverseChat chat, HttpSession ses
263259

264260
SolrDocumentList results = turConverseSE.solrGetIntent(chat.getAgent(), intent);
265261
if (!results.isEmpty()) {
266-
SolrDocument firstResult = results.get(0);
262+
SolrDocument firstResult = results.getFirst();
267263
this.getIntentFlow(chat, session, turConverseAgentResponse, firstResult);
268264
}
269265
}

turing-app/src/main/java/com/viglet/turing/sn/TurSNSearchProcess.java

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
import com.viglet.turing.solr.TurSolr;
5454
import com.viglet.turing.solr.TurSolrInstance;
5555
import com.viglet.turing.solr.TurSolrInstanceProcess;
56-
import com.viglet.turing.solr.TurSolrUtils;
5756
import org.apache.commons.collections.CollectionUtils;
5857
import org.apache.commons.lang3.SerializationUtils;
5958
import org.jetbrains.annotations.NotNull;
@@ -334,41 +333,31 @@ private TurSNSiteFilterQueryBean requestFilterQuery(List<String> fq) {
334333

335334
private void processFilterQuery(List<String> fq, List<String> facetsInFilterQueries, List<String> filterQueryModified) {
336335
if (!CollectionUtils.isEmpty(fq)) {
337-
fq.forEach(filterQuery -> {
338-
String[] filterParts = filterQuery.split(":");
339-
if (filterParts.length == 2) {
340-
addFacetInFilterQuery(facetsInFilterQueries, filterParts);
341-
if (!filterParts[1].startsWith("\"") && !filterParts[1].startsWith("[")) {
342-
filterParts[1] = "\"" + filterParts[1] + "\"";
343-
filterQueryModified.add(filterParts[0] + ":" + filterParts[1]);
344-
}
345-
} else {
346-
filterQueryModified.add(filterQuery);
347-
}
348-
});
336+
fq.forEach(filterQuery ->
337+
TurCommonsUtils.getKeyValueFromColon(filterQuery).ifPresentOrElse(f -> {
338+
addFacetInFilterQuery(facetsInFilterQueries, f.getKey());
339+
if (!f.getValue().startsWith("\"") && !f.getValue().startsWith("[")) {
340+
filterQueryModified.add("%s:\"%s\"".formatted(f.getKey(), f.getValue()));
341+
}
342+
}, () -> filterQueryModified.add(filterQuery)));
349343
}
350344
}
351345

352-
private void addFacetInFilterQuery(List<String> facetsInFilterQueries, String[] filterParts) {
353-
if (!facetsInFilterQueries.contains(filterParts[0])) {
354-
facetsInFilterQueries.add(filterParts[0]);
346+
private void addFacetInFilterQuery(List<String> facetsInFilterQueries, String key) {
347+
if (!facetsInFilterQueries.contains(key)) {
348+
facetsInFilterQueries.add(key);
355349
}
356350
}
357351

358352
public List<String> requestTargetingRules(List<String> tr) {
359353
List<String> targetingRuleModified = new ArrayList<>();
360354
if (!CollectionUtils.isEmpty(tr)) {
361-
tr.forEach(targetingRule -> {
362-
String[] targetingRuleParts = targetingRule.split(":");
363-
if (targetingRuleParts.length == 2) {
364-
if (!targetingRuleParts[1].startsWith("\"") && !targetingRuleParts[1].startsWith("[")) {
365-
targetingRuleParts[1] = "\"" + targetingRuleParts[1] + "\"";
366-
targetingRuleModified.add(targetingRuleParts[0] + ":" + targetingRuleParts[1]);
367-
}
368-
} else {
369-
targetingRuleModified.add(targetingRule);
370-
}
371-
});
355+
tr.forEach(targetingRule ->
356+
TurCommonsUtils.getKeyValueFromColon(targetingRule).ifPresentOrElse(t -> {
357+
if (!t.getValue().startsWith("\"") && !t.getValue().startsWith("[")) {
358+
targetingRuleModified.add("%s:\"%s\"".formatted(t.getKey(), t.getValue()));
359+
}
360+
}, () -> targetingRuleModified.add(targetingRule)));
372361
}
373362
return targetingRuleModified;
374363
}
@@ -494,7 +483,7 @@ private TurSNSiteSearchFacetBean responseFacetToRemove(TurSNSiteSearchContext co
494483
context.getTurSEParameters().getFilterQueries());
495484
List<TurSNSiteSearchFacetItemBean> turSNSiteSearchFacetToRemoveItemBeans = new ArrayList<>();
496485
context.getTurSEParameters().getFilterQueries().getFq().forEach(facetToRemove ->
497-
TurSolrUtils.getQueryKeyValue(facetToRemove).ifPresent(f -> {
486+
TurCommonsUtils.getKeyValueFromColon(facetToRemove).ifPresent(f -> {
498487
if (turSolr.getFacetsInFilterQuery(turSNFacetTypeContext).contains(f.getKey())) {
499488
turSNSiteSearchFacetToRemoveItemBeans.add(new TurSNSiteSearchFacetItemBean()
500489
.setLabel(f.getValue().replace("\"", ""))

turing-app/src/main/java/com/viglet/turing/sn/TurSNUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public static URI removeFilterQueryByFieldNames(URI uri, List<String> fieldNames
109109
StringBuilder sbQueryString = new StringBuilder();
110110
for (NameValuePair nameValuePair : params) {
111111
if (nameValuePair.getName().equals(TurSNParamType.FILTER_QUERIES_DEFAULT)) {
112-
TurSolrUtils.getQueryKeyValue(nameValuePair.getValue()).ifPresent(kv -> {
112+
TurCommonsUtils.getKeyValueFromColon(nameValuePair.getValue()).ifPresent(kv -> {
113113
if (!(fieldNames.contains(java.net.URLDecoder.decode(kv.getKey(), StandardCharsets.UTF_8)))) {
114114
TurCommonsUtils.addParameterToQueryString(sbQueryString, nameValuePair.getName(), nameValuePair.getValue());
115115
}

turing-app/src/main/java/com/viglet/turing/sn/tr/TurSNTargetingRules.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
package com.viglet.turing.sn.tr;
2323

24+
import com.viglet.turing.commons.utils.TurCommonsUtils;
2425
import com.viglet.turing.solr.TurSolrUtils;
2526
import org.springframework.stereotype.Component;
2627

@@ -91,7 +92,7 @@ public String orMethod(List<String> trs) {
9192
Set<String> attributeList = new HashSet<>();
9293
trs.stream().filter(tr -> tr.contains(TWO_POINTS))
9394
.forEach(tr ->
94-
TurSolrUtils.getQueryKeyValue(tr)
95+
TurCommonsUtils.getKeyValueFromColon(tr)
9596
.ifPresent(kv -> {
9697
attributeList.add(String.format("NOT %s:*", kv.getKey()));
9798
trList.add(String.format("%s:%s",kv.getKey(), kv.getValue()));

turing-app/src/main/java/com/viglet/turing/solr/TurSolr.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ private void setRows(TurSNSite turSNSite, TurSEParameters turSEParameters) {
623623

624624
private void setSortEntry(TurSNSite turSNSite, SolrQuery query, TurSEParameters turSEParameters) {
625625
Optional.ofNullable(turSEParameters.getSort()).ifPresent(sort ->
626-
TurSolrUtils.getQueryKeyValue(sort).ifPresentOrElse(kv ->
626+
TurCommonsUtils.getKeyValueFromColon(sort).ifPresentOrElse(kv ->
627627
query.setSort(kv.getKey(), kv.getValue().equals(ASC) ? ORDER.asc : ORDER.desc),
628628
() -> {
629629
if (sort.equalsIgnoreCase(NEWEST))
@@ -925,7 +925,7 @@ private static void addEnabledFieldAsFacetItem(TurSNSiteFacetFieldEnum facetType
925925
TurSNFacetMapForFilterQuery facetMapForFilterQuery, TurSNSite turSNSite,
926926
TurSEFilterQueryParameters filterQueryParameters) {
927927

928-
TurSolrUtils.getQueryKeyValue(fq).flatMap(kv ->
928+
TurCommonsUtils.getKeyValueFromColon(fq).flatMap(kv ->
929929
enabledFields.stream()
930930
.filter(facet -> facet.getName().equals(kv.getKey()))
931931
.findFirst())
@@ -1036,7 +1036,7 @@ private static TurSNFacetMapForFilterQuery getFilterQueryByDateRange(
10361036
@NotNull
10371037
private static List<String> setFilterQueryRangeValue(List<String> filterQueries, List<TurSNSiteFieldExt> dateFacet) {
10381038
return filterQueries.stream()
1039-
.map(fq -> TurSolrUtils.getQueryKeyValue(fq)
1039+
.map(fq -> TurCommonsUtils.getKeyValueFromColon(fq)
10401040
.map(facetKv ->
10411041
dateFacet.stream()
10421042
.filter(dateFacetItem -> facetKv.getKey().equals(dateFacetItem.getName()) &&
@@ -1156,7 +1156,7 @@ private static boolean isOr(TurSNFacetTypeContext context) {
11561156

11571157
@NotNull
11581158
private static String addDoubleQuotesToValue(String q) {
1159-
return TurSolrUtils.getQueryKeyValue(q)
1159+
return TurCommonsUtils.getKeyValueFromColon(q)
11601160
.map(kv -> String.format("%s:\"%s\"", kv.getKey(), kv.getValue()))
11611161
.orElse(String.format("\"%s\"", q));
11621162
}
@@ -1245,7 +1245,7 @@ public List<String> getFqFields(TurSEFilterQueryParameters queryParameters) {
12451245
private static List<String> getFqFields(List<String> filterQueries) {
12461246
return Optional.ofNullable(filterQueries)
12471247
.map(fqOpt -> fqOpt.stream()
1248-
.map(fq -> TurSolrUtils.getQueryKeyValue(fq)
1248+
.map(fq -> TurCommonsUtils.getKeyValueFromColon(fq)
12491249
.map(KeyValue::getKey)
12501250
.orElse(null))
12511251
.toList())

turing-app/src/main/java/com/viglet/turing/solr/TurSolrUtils.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.jayway.jsonpath.Option;
2828
import com.viglet.turing.commons.se.TurSEParameters;
2929
import com.viglet.turing.commons.se.field.TurSEFieldType;
30+
import com.viglet.turing.commons.utils.TurCommonsUtils;
3031
import com.viglet.turing.persistence.model.se.TurSEInstance;
3132
import com.viglet.turing.se.result.TurSEResult;
3233
import com.viglet.turing.solr.bean.TurSolrFieldBean;
@@ -278,7 +279,7 @@ public static void createCollection(String solrUrl, String coreName, InputStream
278279

279280

280281
public static String getValueFromQuery(String q) {
281-
return getQueryKeyValue(q).map(KeyValue::getValue).orElse(q);
282+
return TurCommonsUtils.getKeyValueFromColon(q).map(KeyValue::getValue).orElse(q);
282283
}
283284

284285
public static TurSEResult createTurSEResultFromDocument(SolrDocument document) {
@@ -296,17 +297,6 @@ public static int lastRowPositionFromCurrentPage(TurSEParameters turSEParameters
296297
return (turSEParameters.getCurrentPage() * turSEParameters.getRows());
297298
}
298299

299-
public static Optional<KeyValue<String, String>> getQueryKeyValue(String query) {
300-
String[] attributeKV = query.split(":");
301-
if (attributeKV.length >= 2) {
302-
String key = attributeKV[0];
303-
String value = Arrays.stream(attributeKV).skip(1).collect(Collectors.joining(":"));
304-
return Optional.of(new DefaultMapEntry<>(key, value));
305-
} else {
306-
return Optional.empty();
307-
}
308-
}
309-
310300
public static boolean coreExists(TurSEInstance turSEInstance, String core) {
311301
try (HttpClient client = getHttpClient()) {
312302
HttpRequest request = getHttpRequestBuilderJson()

turing-commons/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
<groupId>org.json</groupId>
3434
<artifactId>json</artifactId>
3535
</dependency>
36+
<dependency>
37+
<groupId>org.apache.commons</groupId>
38+
<artifactId>commons-collections4</artifactId>
39+
<version>4.4</version>
40+
</dependency>
3641
<dependency>
3742
<groupId>org.apache.httpcomponents.client5</groupId>
3843
<artifactId>httpclient5</artifactId>

0 commit comments

Comments
 (0)