CampaignsDataSourceServlet.java
6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.granite.ui.components.ds.DataSource
* com.adobe.granite.ui.components.ds.SimpleDataSource
* com.adobe.granite.ui.components.ds.ValueMapResource
* com.day.cq.commons.inherit.HierarchyNodeInheritanceValueMap
* com.day.cq.commons.inherit.InheritanceValueMap
* com.day.cq.wcm.webservicesupport.Configuration
* com.day.cq.wcm.webservicesupport.ConfigurationManager
* com.day.cq.wcm.webservicesupport.ConfigurationManagerFactory
* javax.servlet.ServletException
* org.apache.sling.api.SlingHttpServletRequest
* org.apache.sling.api.SlingHttpServletResponse
* org.apache.sling.api.resource.AbstractResourceVisitor
* org.apache.sling.api.resource.Resource
* org.apache.sling.api.resource.ResourceMetadata
* org.apache.sling.api.resource.ResourceResolver
* org.apache.sling.api.resource.ValueMap
* org.apache.sling.api.servlets.SlingSafeMethodsServlet
* org.apache.sling.api.wrappers.ValueMapDecorator
*/
package com.day.cq.personalization;
import com.adobe.granite.ui.components.ds.DataSource;
import com.adobe.granite.ui.components.ds.SimpleDataSource;
import com.adobe.granite.ui.components.ds.ValueMapResource;
import com.day.cq.commons.inherit.HierarchyNodeInheritanceValueMap;
import com.day.cq.commons.inherit.InheritanceValueMap;
import com.day.cq.wcm.webservicesupport.Configuration;
import com.day.cq.wcm.webservicesupport.ConfigurationManager;
import com.day.cq.wcm.webservicesupport.ConfigurationManagerFactory;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.*;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.apache.sling.api.wrappers.ValueMapDecorator;
import javax.servlet.ServletException;
import java.io.IOException;
import java.text.Collator;
import java.util.*;
@Deprecated
public class CampaignsDataSourceServlet
extends SlingSafeMethodsServlet {
private static final String CAMPAIGNPAGE_RESOURCE_TYPE = "cq/personalization/components/campaignpage";
private static final String CAMPAIGNS_ROOT = "/content/campaigns";
private static final String ACTIVITY_TYPE = "campaignType";
private ConfigurationManagerFactory configManagerFactory;
protected void bindConfigManagerFactory(ConfigurationManagerFactory configManagerFactory) {
}
protected void unbindConfigManagerFactory(ConfigurationManagerFactory configManagerFactory) {
}
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
ResourceResolver resolver = request.getResourceResolver();
CampaignsRetriever visitor = new CampaignsRetriever();
visitor.accept(resolver.getResource("/content/campaigns"));
List<Resource> resourceList = visitor.getCampaigns();
final Collator c = Collator.getInstance(request.getLocale());
Collections.sort(resourceList, new Comparator<Resource>(){
@Override
public int compare(Resource r1, Resource r2) {
String t1 = (String)r1.getValueMap().get("text", (Object)"");
String t2 = (String)r2.getValueMap().get("text", (Object)"");
return c.compare(t1, t2);
}
});
request.setAttribute(DataSource.class.getName(), (Object)new SimpleDataSource(resourceList.iterator()));
}
private Configuration getTargetConfiguration(InheritanceValueMap properties, ConfigurationManager cfgMgr) {
String[] services = (String[])properties.getInherited("cq:cloudserviceconfigs", (Object)new String[0]);
if (cfgMgr != null) {
return cfgMgr.getConfiguration("testandtarget", services);
}
return null;
}
class CampaignsRetriever
extends AbstractResourceVisitor {
List<Resource> campaigns;
CampaignsRetriever() {
this.campaigns = new ArrayList<Resource>();
}
protected void visit(Resource resource) {
if ("cq/personalization/components/campaignpage".equals(resource.getResourceType())) {
HierarchyNodeInheritanceValueMap props = new HierarchyNodeInheritanceValueMap(resource);
ResourceResolver resolver = resource.getResourceResolver();
ConfigurationManager cfgMgr = CampaignsDataSourceServlet.this.configManagerFactory.getConfigurationManager(resolver);
Configuration targetConfig = CampaignsDataSourceServlet.this.getTargetConfiguration((InheritanceValueMap)props, cfgMgr);
String activityTitle = (String)props.get("jcr:title", (Object)resource.getParent().getName());
String activityType = (String)props.get("campaignType", (Object)"landingPage");
String activityTypeMarker = "AEM";
boolean isActiveProp = (Boolean)props.get("campaignActive", (Object)true);
Calendar campaignEndTime = (Calendar)props.get("offTime", Calendar.class);
Calendar currentTime = Calendar.getInstance();
boolean isActive = isActiveProp && (campaignEndTime == null || currentTime.before(campaignEndTime));
boolean useActivity = true;
if (targetConfig != null) {
activityTypeMarker = "landingPage".equals(activityType) ? "XT" : "A/B";
useActivity = isActive;
}
if (useActivity) {
final String title = activityTitle + " [" + activityTypeMarker + "]";
final String path = resource.getParent().getPath();
HashMap<String, Object> entry = new HashMap<String, Object>(){};
ValueMapResource vmRes = new ValueMapResource(resolver, new ResourceMetadata(), "", (ValueMap)new ValueMapDecorator((Map)entry));
this.campaigns.add((Resource)vmRes);
}
}
}
public List<Resource> getCampaigns() {
return this.campaigns;
}
}
}