diff --git a/source/java/org/alfresco/repo/web/scripts/solr/StatsGet.java b/source/java/org/alfresco/repo/web/scripts/solr/StatsGet.java index c528561c29..290684e353 100644 --- a/source/java/org/alfresco/repo/web/scripts/solr/StatsGet.java +++ b/source/java/org/alfresco/repo/web/scripts/solr/StatsGet.java @@ -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 . + */ package org.alfresco.repo.web.scripts.solr; 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, * it also has a predefined structure: group.property[.type] eg. content.created.datetime. The [.type] is optional, the default is String. * - * 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 */ public class StatsGet extends DeclarativeWebScript @@ -34,17 +50,11 @@ public class StatsGet extends DeclarativeWebScript private StatsService stats; private SiteService siteService; private Map facets; - // private Map displayedFacets; //alternative facets to use for display - + public void setFacets(Map facets) { this.facets = facets; } -// -// public void setDisplayedFacets(Map displayedFacets) -// { -// this.displayedFacets = displayedFacets; -// } public void setStats(StatsService stats) { @@ -82,7 +92,6 @@ public class StatsGet extends DeclarativeWebScript String facetKey = req.getParameter("facet"); if (facetKey == null) facetKey = facets.entrySet().iterator().next().getKey(); //default - //boolean usesDateTime = (facetKey != null && facetKey.endsWith(DATE_TIME_SUFFIX)); String query; QName propFacet = findFacet(facetKey); @@ -98,7 +107,6 @@ public class StatsGet extends DeclarativeWebScript model.put("result", result); model.put("resultSize", result.getStats().size()); - //model.put("isDate", startAndEnd!=null); return model; } @@ -113,18 +121,8 @@ public class StatsGet extends DeclarativeWebScript { 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)); - return propFacet; - // } + QName propFacet = QName.createQName(facets.get(facetKey)); + return propFacet; } @@ -136,7 +134,7 @@ public class StatsGet extends DeclarativeWebScript if (startEndDate != null) { //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()+"\")"); } @@ -164,7 +162,7 @@ public class StatsGet extends DeclarativeWebScript /** * 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 + * @param facetType e.g. {http://www.alfresco.org/model/content/1.0}content.mimetype */ public void addFacet(String facetKey, String facetType) { diff --git a/source/test-java/org/alfresco/remoteapi/AllUnitTestsSuite.java b/source/test-java/org/alfresco/remoteapi/AllUnitTestsSuite.java index 9350fcfaf8..baa8faf2b7 100644 --- a/source/test-java/org/alfresco/remoteapi/AllUnitTestsSuite.java +++ b/source/test-java/org/alfresco/remoteapi/AllUnitTestsSuite.java @@ -4,6 +4,7 @@ import junit.framework.JUnit4TestAdapter; import junit.framework.Test; 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.paging.PagingTest; import org.alfresco.repo.webdav.GetMethodTest; @@ -32,6 +33,7 @@ public class AllUnitTestsSuite extends TestSuite webdavTests(suite); pagingTests(suite); + suite.addTest(new JUnit4TestAdapter(StatsGetTest.class)); return suite; } diff --git a/source/test-java/org/alfresco/repo/web/scripts/solr/StatsGetTest.java b/source/test-java/org/alfresco/repo/web/scripts/solr/StatsGetTest.java new file mode 100644 index 0000000000..ae000d0c63 --- /dev/null +++ b/source/test-java/org/alfresco/repo/web/scripts/solr/StatsGetTest.java @@ -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 . + */ +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 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 dates = StatsGet.getStartAndEndDates("rubbish", "more"); + assertNotNull(dates); + } + +}