mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)
75001: Merged WAT2 (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud) 69930: Stats Get webscript now uses a configurable content model list git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@75330 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,7 +1,14 @@
|
|||||||
|
<#if facets??>
|
||||||
|
[
|
||||||
|
<#list facets as facet>
|
||||||
|
"${facet}"<#if facet_has_next>,</#if>
|
||||||
|
</#list>
|
||||||
|
]
|
||||||
|
<#else>
|
||||||
{
|
{
|
||||||
"resultset": [
|
"resultset": [
|
||||||
<#list result.stats as item>
|
<#list result.stats as item>
|
||||||
["${jsonUtils.encodeJSONString(item.name)}",${item.sum?c}, ${item.count?c}]
|
["${jsonUtils.encodeJSONString(item.name)}",${item.sum?c}, ${item.count?c}, ${item.min?c}, ${item.max?c}, ${item.mean?c}]
|
||||||
<#if item_has_next>,</#if>
|
<#if item_has_next>,</#if>
|
||||||
</#list>
|
</#list>
|
||||||
],
|
],
|
||||||
@@ -27,6 +34,22 @@
|
|||||||
"colIndex": 2,
|
"colIndex": 2,
|
||||||
"colType": "Numeric",
|
"colType": "Numeric",
|
||||||
"colName": "count"
|
"colName": "count"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colIndex": 3,
|
||||||
|
"colType": "Numeric",
|
||||||
|
"colName": "min"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colIndex": 4,
|
||||||
|
"colType": "Numeric",
|
||||||
|
"colName": "max"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colIndex": 5,
|
||||||
|
"colType": "Numeric",
|
||||||
|
"colName": "mean"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
</#if>
|
@@ -1552,6 +1552,24 @@
|
|||||||
class="org.alfresco.repo.web.scripts.solr.StatsGet" parent="webscript">
|
class="org.alfresco.repo.web.scripts.solr.StatsGet" parent="webscript">
|
||||||
<property name="stats" ref="statsService"/>
|
<property name="stats" ref="statsService"/>
|
||||||
<property name="siteService" ref="SiteService" />
|
<property name="siteService" ref="SiteService" />
|
||||||
|
<property name="facets">
|
||||||
|
<map>
|
||||||
|
<entry key="content.mimetype" value="{http://www.alfresco.org/model/content/1.0}content.mimetype" />
|
||||||
|
<entry key="content.creator" value="{http://www.alfresco.org/model/content/1.0}creator.__" />
|
||||||
|
<entry key="content.modifier" value="{http://www.alfresco.org/model/content/1.0}modifier.__" />
|
||||||
|
<entry key="content.created.datetime" value="{http://www.alfresco.org/model/content/1.0}created" />
|
||||||
|
<entry key="content.modified.datetime" value="{http://www.alfresco.org/model/content/1.0}modified" />
|
||||||
|
<entry key="content.encoding" value="{http://www.alfresco.org/model/content/1.0}content.encoding" />
|
||||||
|
<entry key="content.locale" value="{http://www.alfresco.org/model/content/1.0}content.locale" />
|
||||||
|
<entry key="content.versionLabel" value="{http://www.alfresco.org/model/content/1.0}versionLabel.__" />
|
||||||
|
|
||||||
|
<entry key="exif.model" value="{http://www.alfresco.org/model/exif/1.0}model.__" />
|
||||||
|
<entry key="exif.manufacturer" value="{http://www.alfresco.org/model/exif/1.0}manufacturer.__" />
|
||||||
|
<entry key="exif.iso" value="{http://www.alfresco.org/model/exif/1.0}isoSpeedRatings.__" />
|
||||||
|
<entry key="exif.focalLength" value="{http://www.alfresco.org/model/exif/1.0}focalLength" />
|
||||||
|
<entry key="exif.software" value="{http://www.alfresco.org/model/exif/1.0}software.__" />
|
||||||
|
</map>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="webscript.org.alfresco.repository.solr.nodes.post"
|
<bean id="webscript.org.alfresco.repository.solr.nodes.post"
|
||||||
|
@@ -12,7 +12,6 @@ import org.alfresco.service.cmr.search.StatsResultSet;
|
|||||||
import org.alfresco.service.cmr.search.StatsService;
|
import org.alfresco.service.cmr.search.StatsService;
|
||||||
import org.alfresco.service.cmr.site.SiteInfo;
|
import org.alfresco.service.cmr.site.SiteInfo;
|
||||||
import org.alfresco.service.cmr.site.SiteService;
|
import org.alfresco.service.cmr.site.SiteService;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.springframework.extensions.webscripts.Cache;
|
import org.springframework.extensions.webscripts.Cache;
|
||||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||||
@@ -26,8 +25,15 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
|
|||||||
*/
|
*/
|
||||||
public class StatsGet extends DeclarativeWebScript
|
public class StatsGet extends DeclarativeWebScript
|
||||||
{
|
{
|
||||||
StatsService stats;
|
|
||||||
SiteService siteService;
|
private StatsService stats;
|
||||||
|
private SiteService siteService;
|
||||||
|
private Map<String,String> facets;
|
||||||
|
|
||||||
|
public void setFacets(Map<String, String> facets)
|
||||||
|
{
|
||||||
|
this.facets = facets;
|
||||||
|
}
|
||||||
|
|
||||||
public void setStats(StatsService stats)
|
public void setStats(StatsService stats)
|
||||||
{
|
{
|
||||||
@@ -42,9 +48,18 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
@Override
|
@Override
|
||||||
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
|
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
|
||||||
{
|
{
|
||||||
|
Map<String, Object> model = new HashMap<String, Object>(2, 1.0f);
|
||||||
Map<String, String> templateVars = req.getServiceMatch().getTemplateVars();
|
Map<String, String> templateVars = req.getServiceMatch().getTemplateVars();
|
||||||
SiteInfo siteInfo = null;
|
SiteInfo siteInfo = null;
|
||||||
|
|
||||||
|
String listFacets = req.getParameter("listFacets");
|
||||||
|
if (listFacets != null)
|
||||||
|
{
|
||||||
|
model.put("facets", facets.keySet());
|
||||||
|
model.put("resultSize", 0);
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
if (templateVars != null && templateVars.containsKey("siteId") )
|
if (templateVars != null && templateVars.containsKey("siteId") )
|
||||||
{
|
{
|
||||||
siteInfo = siteService.getSite(templateVars.get("siteId"));
|
siteInfo = siteService.getSite(templateVars.get("siteId"));
|
||||||
@@ -54,26 +69,39 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String contentProp = req.getParameter("contentProp");
|
QName propFacet = findFacet(req.getParameter("facet"));
|
||||||
if (contentProp == null) contentProp = "created"; //default
|
|
||||||
|
|
||||||
QName prop = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, contentProp);
|
|
||||||
|
|
||||||
String query = buildQuery(siteInfo);
|
String query = buildQuery(siteInfo);
|
||||||
|
|
||||||
StatsParameters params = new StatsParameters(SearchService.LANGUAGE_SOLR_FTS_ALFRESCO, query);
|
StatsParameters params = new StatsParameters(SearchService.LANGUAGE_SOLR_FTS_ALFRESCO, query);
|
||||||
params.addSort(new SortDefinition(SortDefinition.SortType.FIELD, "contentsize", false));
|
params.addSort(new SortDefinition(SortDefinition.SortType.FIELD, "contentsize", false));
|
||||||
params.addStatsParameter(StatsParameters.PARAM_FIELD, "contentsize");
|
params.addStatsParameter(StatsParameters.PARAM_FIELD, "contentsize");
|
||||||
params.addStatsParameter(StatsParameters.PARAM_FACET, StatsParameters.FACET_PREFIX+prop.toString());
|
params.addStatsParameter(StatsParameters.PARAM_FACET, StatsParameters.FACET_PREFIX+propFacet.toString());
|
||||||
|
|
||||||
StatsResultSet result = stats.query(params);
|
StatsResultSet result = stats.query(params);
|
||||||
|
|
||||||
Map<String, Object> model = new HashMap<String, Object>(1, 1.0f);
|
|
||||||
model.put("result", result);
|
model.put("result", result);
|
||||||
model.put("resultSize", result.getStats().size());
|
model.put("resultSize", result.getStats().size());
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds a facet based on its key
|
||||||
|
* @param facetKey
|
||||||
|
* @return QName facet
|
||||||
|
*/
|
||||||
|
private QName findFacet(String facetKey)
|
||||||
|
{
|
||||||
|
if (facetKey == null) facetKey = facets.entrySet().iterator().next().getKey(); //default
|
||||||
|
|
||||||
|
if (!facets.containsKey(facetKey))
|
||||||
|
{
|
||||||
|
throw new AccessDeniedException("Invalid facet key:"+facetKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
QName propFacet = QName.createQName(facets.get(facetKey));
|
||||||
|
return propFacet;
|
||||||
|
}
|
||||||
|
|
||||||
protected String buildQuery(SiteInfo siteInfo)
|
protected String buildQuery(SiteInfo siteInfo)
|
||||||
{
|
{
|
||||||
StringBuilder luceneQuery = new StringBuilder();
|
StringBuilder luceneQuery = new StringBuilder();
|
||||||
@@ -86,4 +114,15 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
return luceneQuery.toString();
|
return luceneQuery.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows you to add a facet to the list of available facets for Solr Statistics
|
||||||
|
* @param facetKey e.g. content.mimetype
|
||||||
|
* @param facetType e.g. @{http://www.alfresco.org/model/content/1.0}content.mimetype
|
||||||
|
*/
|
||||||
|
public void addFacet(String facetKey, String facetType)
|
||||||
|
{
|
||||||
|
facets.put(facetKey, facetType);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user