mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)
75011: Merged WAT2 (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud) 70370: Cleaned up the solr stats code, added security check and tenants git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@75339 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,3 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2014 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This file is part of Alfresco
|
||||||
|
*
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
package org.alfresco.repo.web.scripts.solr;
|
package org.alfresco.repo.web.scripts.solr;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -24,8 +42,6 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
|
|||||||
* You can pass one of these facets in eg. facet=content.creator . The facet name can be used as a I18n resource bundle key,
|
* You can pass one of these facets in eg. facet=content.creator . The facet name can be used as a I18n resource bundle key,
|
||||||
* it also has a predefined structure: group.property[.type] eg. content.created.datetime. The [.type] is optional, the default is String.</description>
|
* it also has a predefined structure: group.property[.type] eg. content.created.datetime. The [.type] is optional, the default is String.</description>
|
||||||
*
|
*
|
||||||
* The facets are configured using Spring config. For Dates it may be necessary to display a different value from the one you use to query,
|
|
||||||
* in this case add the value to the "displayedFacets" map.
|
|
||||||
* @author Gethin James
|
* @author Gethin James
|
||||||
*/
|
*/
|
||||||
public class StatsGet extends DeclarativeWebScript
|
public class StatsGet extends DeclarativeWebScript
|
||||||
@@ -34,17 +50,11 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
private StatsService stats;
|
private StatsService stats;
|
||||||
private SiteService siteService;
|
private SiteService siteService;
|
||||||
private Map<String,String> facets;
|
private Map<String,String> facets;
|
||||||
// private Map<String,String> displayedFacets; //alternative facets to use for display
|
|
||||||
|
|
||||||
public void setFacets(Map<String, String> facets)
|
public void setFacets(Map<String, String> facets)
|
||||||
{
|
{
|
||||||
this.facets = facets;
|
this.facets = facets;
|
||||||
}
|
}
|
||||||
//
|
|
||||||
// public void setDisplayedFacets(Map<String, String> displayedFacets)
|
|
||||||
// {
|
|
||||||
// this.displayedFacets = displayedFacets;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void setStats(StatsService stats)
|
public void setStats(StatsService stats)
|
||||||
{
|
{
|
||||||
@@ -82,7 +92,6 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
|
|
||||||
String facetKey = req.getParameter("facet");
|
String facetKey = req.getParameter("facet");
|
||||||
if (facetKey == null) facetKey = facets.entrySet().iterator().next().getKey(); //default
|
if (facetKey == null) facetKey = facets.entrySet().iterator().next().getKey(); //default
|
||||||
//boolean usesDateTime = (facetKey != null && facetKey.endsWith(DATE_TIME_SUFFIX));
|
|
||||||
String query;
|
String query;
|
||||||
|
|
||||||
QName propFacet = findFacet(facetKey);
|
QName propFacet = findFacet(facetKey);
|
||||||
@@ -98,7 +107,6 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
|
|
||||||
model.put("result", result);
|
model.put("result", result);
|
||||||
model.put("resultSize", result.getStats().size());
|
model.put("resultSize", result.getStats().size());
|
||||||
//model.put("isDate", startAndEnd!=null);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,18 +121,8 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
{
|
{
|
||||||
throw new AccessDeniedException("Invalid facet key:"+facetKey);
|
throw new AccessDeniedException("Invalid facet key:"+facetKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
//If there is an alternative facet to use for display then use it.
|
|
||||||
// if (displayedFacets.containsKey(facetKey))
|
|
||||||
// {
|
|
||||||
// QName propFacet = QName.createQName(displayedFacets.get(facetKey));
|
|
||||||
// return propFacet;
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
QName propFacet = QName.createQName(facets.get(facetKey));
|
QName propFacet = QName.createQName(facets.get(facetKey));
|
||||||
return propFacet;
|
return propFacet;
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +134,7 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
if (startEndDate != null)
|
if (startEndDate != null)
|
||||||
{
|
{
|
||||||
//QName propFacet = QName.createQName(facets.get(facetKey));
|
//QName propFacet = QName.createQName(facets.get(facetKey));
|
||||||
String dateFacet = "{http://www.alfresco.org/model/content/1.0}created";//hard coded for now.
|
String dateFacet = ContentModel.PROP_CREATED.toString();//hard coded for now.
|
||||||
luceneQuery.append(" AND "+dateFacet.toString()+":(\""+startEndDate.getFirst()+"\"..\""+startEndDate.getSecond()+"\")");
|
luceneQuery.append(" AND "+dateFacet.toString()+":(\""+startEndDate.getFirst()+"\"..\""+startEndDate.getSecond()+"\")");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +162,7 @@ public class StatsGet extends DeclarativeWebScript
|
|||||||
/**
|
/**
|
||||||
* Allows you to add a facet to the list of available facets for Solr Statistics
|
* Allows you to add a facet to the list of available facets for Solr Statistics
|
||||||
* @param facetKey e.g. content.mimetype
|
* @param facetKey e.g. content.mimetype
|
||||||
* @param facetType e.g. @{http://www.alfresco.org/model/content/1.0}content.mimetype
|
* @param facetType e.g. {http://www.alfresco.org/model/content/1.0}content.mimetype
|
||||||
*/
|
*/
|
||||||
public void addFacet(String facetKey, String facetType)
|
public void addFacet(String facetKey, String facetType)
|
||||||
{
|
{
|
||||||
|
@@ -4,6 +4,7 @@ import junit.framework.JUnit4TestAdapter;
|
|||||||
import junit.framework.Test;
|
import junit.framework.Test;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import org.alfresco.repo.web.scripts.solr.StatsGetTest;
|
||||||
import org.alfresco.repo.web.util.PagingCursorTest;
|
import org.alfresco.repo.web.util.PagingCursorTest;
|
||||||
import org.alfresco.repo.web.util.paging.PagingTest;
|
import org.alfresco.repo.web.util.paging.PagingTest;
|
||||||
import org.alfresco.repo.webdav.GetMethodTest;
|
import org.alfresco.repo.webdav.GetMethodTest;
|
||||||
@@ -32,6 +33,7 @@ public class AllUnitTestsSuite extends TestSuite
|
|||||||
webdavTests(suite);
|
webdavTests(suite);
|
||||||
pagingTests(suite);
|
pagingTests(suite);
|
||||||
|
|
||||||
|
suite.addTest(new JUnit4TestAdapter(StatsGetTest.class));
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2014 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This file is part of Alfresco
|
||||||
|
*
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.web.scripts.solr;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import org.alfresco.util.Pair;
|
||||||
|
import org.joda.time.LocalDate;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests StatsGet Webscript
|
||||||
|
*
|
||||||
|
* @author Gethin James
|
||||||
|
* @since 5.0
|
||||||
|
*/
|
||||||
|
public class StatsGetTest
|
||||||
|
{
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetStartAndEndDates()
|
||||||
|
{
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
Pair<LocalDate, LocalDate> dates = StatsGet.getStartAndEndDates(null, null);
|
||||||
|
assertNull(dates);
|
||||||
|
|
||||||
|
String test1 = "2014-05-01";
|
||||||
|
String test2 = "2015-06-30";
|
||||||
|
dates = StatsGet.getStartAndEndDates(test1, null);
|
||||||
|
assertNotNull(dates);
|
||||||
|
assertEquals(2014, dates.getFirst().getYear());
|
||||||
|
assertEquals(5, dates.getFirst().getMonthOfYear());
|
||||||
|
assertEquals(1, dates.getFirst().getDayOfMonth());
|
||||||
|
assertEquals(currentDate, dates.getSecond());
|
||||||
|
|
||||||
|
dates = StatsGet.getStartAndEndDates(null, test2);
|
||||||
|
assertNull(dates);
|
||||||
|
|
||||||
|
dates = StatsGet.getStartAndEndDates(test1, test2);
|
||||||
|
assertNotNull(dates);
|
||||||
|
assertEquals(2014, dates.getFirst().getYear());
|
||||||
|
assertEquals(5, dates.getFirst().getMonthOfYear());
|
||||||
|
assertEquals(1, dates.getFirst().getDayOfMonth());
|
||||||
|
assertNotNull(dates);
|
||||||
|
assertEquals(2015, dates.getSecond().getYear());
|
||||||
|
assertEquals(6, dates.getSecond().getMonthOfYear());
|
||||||
|
assertEquals(30, dates.getSecond().getDayOfMonth());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void testGetStartAndEndDatesWithRubbish()
|
||||||
|
{
|
||||||
|
Pair<LocalDate, LocalDate> dates = StatsGet.getStartAndEndDates("rubbish", "more");
|
||||||
|
assertNotNull(dates);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user