DamIndexBootstrap.java
8.2 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
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.google.common.collect.ImmutableList
* org.apache.felix.scr.annotations.Component
* org.apache.felix.scr.annotations.Reference
* org.apache.felix.scr.annotations.ReferencePolicy
* org.apache.sling.api.resource.LoginException
* org.apache.sling.api.resource.Resource
* org.apache.sling.api.resource.ResourceResolver
* org.apache.sling.api.resource.ResourceResolverFactory
* org.osgi.service.component.ComponentContext
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.adobe.cq.dam.index.bootstrap;
import com.adobe.cq.dam.index.builder.AggregationRule;
import com.adobe.cq.dam.index.builder.IndexRule;
import com.adobe.cq.dam.index.builder.LuceneIndexDefinition;
import com.adobe.cq.dam.index.builder.OakPropertyIndexDefinition;
import com.adobe.cq.dam.index.builder.OrderedPropertyDefinition;
import com.adobe.cq.dam.index.builder.SimplePropertyDefinition;
import com.adobe.cq.dam.index.builder.api.PropertyDefinition;
import com.adobe.cq.dam.index.helper.IndexHelper;
import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Map;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
public class DamIndexBootstrap {
private static final Logger log = LoggerFactory.getLogger(DamIndexBootstrap.class);
@Reference(policy=ReferencePolicy.STATIC)
private ResourceResolverFactory jcrResolverFactory;
private static String[] disableIndexList = new String[]{"dcFormat", "videoCodec", "damFileSize", "damSha1", "xmpMMDocumentId", "xmpMMInstanceId"};
private static String[] depriortiseIndexList = new String[]{"cqTags", "damStatus", "offTime", "onTime"};
private static final String INDEX_ROOT_PATH = "/oak:index";
protected void activate(ComponentContext context) {
try {
ResourceResolver resolver = this.jcrResolverFactory.getAdministrativeResourceResolver(null);
this.disableDefaultIndex(resolver);
this.depriortiseIndex(resolver);
this.createDefaultIndex(resolver);
}
catch (LoginException e) {
log.error("Error while setting up dam index", (Throwable)e);
}
}
private void disableDefaultIndex(ResourceResolver resolver) {
for (String path : disableIndexList) {
Resource indexRsc = resolver.getResource("/oak:index/" + path);
if (indexRsc == null) continue;
IndexHelper.disableIndex(indexRsc);
}
}
private void depriortiseIndex(ResourceResolver resolver) {
for (String path : depriortiseIndexList) {
Resource indexRsc = resolver.getResource("/oak:index/" + path);
if (indexRsc == null) continue;
IndexHelper.deprioritiseIndex(indexRsc);
}
}
private void createDefaultIndex(ResourceResolver resolver) {
Resource indexRootRsc = resolver.getResource("/");
LuceneIndexDefinition indexDef = new LuceneIndexDefinition("damAssetLucene", DamIndexBootstrap.createAggregationRules(), DamIndexBootstrap.createIndexRules());
if (IndexHelper.getReIndexCount(indexRootRsc.getChild("oak:index/damAssetLucene")) <= 0) {
if (indexDef.build(indexRootRsc, true)) {
log.debug("IndexDefinition created successfully at {}", (Object)indexRootRsc.getPath());
} else {
log.debug("IndexDefinition creation failed");
}
}
OakPropertyIndexDefinition oakPropertyIndexDefProcProf = new OakPropertyIndexDefinition(new String[]{"processingProfile"}, "processingProfile");
if (IndexHelper.getReIndexCount(indexRootRsc.getChild("oak:index/processingProfile")) <= 0) {
oakPropertyIndexDefProcProf.build(indexRootRsc, true);
}
OakPropertyIndexDefinition oakPropertyIndexDefRefExp = new OakPropertyIndexDefinition(new String[]{"refExpired"}, "refExpired");
if (IndexHelper.getReIndexCount(indexRootRsc.getChild("oak:index/refExpired")) <= 0) {
oakPropertyIndexDefRefExp.build(indexRootRsc, true);
}
OakPropertyIndexDefinition oakPropertyIndexDefSubType = new OakPropertyIndexDefinition(new String[]{"subType"}, "subType");
if (IndexHelper.getReIndexCount(indexRootRsc.getChild("oak:index/subType")) <= 0) {
oakPropertyIndexDefSubType.build(indexRootRsc, true);
}
OakPropertyIndexDefinition profileIndexDef = new OakPropertyIndexDefinition(new String[]{"metadataProfile", "videoProfile", "imageProfile"}, "profiles");
if (IndexHelper.getReIndexCount(indexRootRsc.getChild("oak:index/profiles")) <= 0) {
profileIndexDef.build(indexRootRsc, true);
}
}
public static List<AggregationRule> createAggregationRules() {
return ImmutableList.of((Object)new AggregationRule("dam:Asset", (List<String>)ImmutableList.of((Object)"jcr:content", (Object)"jcr:content/metadata", (Object)"jcr:content/metadata/*", (Object)"jcr:content/renditions", (Object)"jcr:content/renditions/original", (Object)"jcr:content/renditions/original/jcr:content", (Object)"jcr:content/comments", (Object)"jcr:content/comments/*", (Object)"jcr:content/usages")));
}
public static List<IndexRule> createIndexRules() {
return ImmutableList.of((Object)new IndexRule("dam:Asset", (List<? extends PropertyDefinition>)ImmutableList.of((Object)new SimplePropertyDefinition("jcr:content/metadata/cq:tags", "cqTags", 1.0f, false, true, true), (Object)new SimplePropertyDefinition("jcr:content/metadata/dc:format", "dcFormat", 1.0f, true), (Object)new SimplePropertyDefinition("jcr:content/metadata/dam:status", "damStatus"), (Object)new SimplePropertyDefinition("jcr:content/metadata/videoCodec", "videoCodec"), (Object)new SimplePropertyDefinition("jcr:content/metadata/audioCodec", "audioCodec"), (Object)new SimplePropertyDefinition("jcr:content/metadata/dc:title", "dcTitle", 2.0f, false, true, true), (Object)new SimplePropertyDefinition("jcr:content/metadata/dc:description", "dcDescription", 1.0f, false, true, true), (Object)new SimplePropertyDefinition("jcr:content/metadata/xmpMM:InstanceID", "xmpMMInstanceId"), (Object)new SimplePropertyDefinition("jcr:content/metadata/xmpMM:DocumentID", "xmpMMDocumentId"), (Object)new SimplePropertyDefinition("jcr:content/metadata/dam:sha1", "damSha1"), (Object)new SimplePropertyDefinition("jcr:content/hasValidMetadata", "hasValidMetadata", "Boolean"), (Object)new SimplePropertyDefinition("jcr:content/metadata/videoBitrate", "videoBitrate"), (Object[])new SimplePropertyDefinition[]{new SimplePropertyDefinition("jcr:content/metadata/audioBitrate", "audioBitRate"), new SimplePropertyDefinition("jcr:content/usages/usedBy", "usedBy"), new OrderedPropertyDefinition("jcr:content/jcr:lastModified", "jcrLastModified", "Date"), new OrderedPropertyDefinition("jcr:content/metadata/prism:expirationDate", "expirationDate", "Date"), new OrderedPropertyDefinition("jcr:content/onTime", "onTime", "Date"), new OrderedPropertyDefinition("jcr:content/offTime", "offTime", "Date"), new OrderedPropertyDefinition("jcr:content/metadata/dam:size", "damSize", "Long"), new OrderedPropertyDefinition("jcr:content/averageRating", "averageRating", "Double"), new OrderedPropertyDefinition("jcr:content/metadata/tiff:ImageWidth", "tiffImageWidth", "Long"), new OrderedPropertyDefinition("jcr:content/metadata/tiff:ImageLength", "tiffImageLength", "Long"), new OrderedPropertyDefinition("jcr:content/usages/dam:score", "score", "Long")})));
}
protected void bindJcrResolverFactory(ResourceResolverFactory resourceResolverFactory) {
this.jcrResolverFactory = resourceResolverFactory;
}
protected void unbindJcrResolverFactory(ResourceResolverFactory resourceResolverFactory) {
if (this.jcrResolverFactory == resourceResolverFactory) {
this.jcrResolverFactory = null;
}
}
}