diff --git a/config/alfresco/ibatis/alfresco-SqlMapConfig.xml b/config/alfresco/ibatis/alfresco-SqlMapConfig.xml index 3925b314c5..49c3d28a9f 100644 --- a/config/alfresco/ibatis/alfresco-SqlMapConfig.xml +++ b/config/alfresco/ibatis/alfresco-SqlMapConfig.xml @@ -75,6 +75,9 @@ Inbound settings from iBatis + + + @@ -190,7 +193,8 @@ Inbound settings from iBatis + - \ No newline at end of file + diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-calendar-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-calendar-common-SqlMap.xml new file mode 100644 index 0000000000..3b9f8c1873 --- /dev/null +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-calendar-common-SqlMap.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/java/org/alfresco/repo/calendar/CalendarServiceImpl.java b/source/java/org/alfresco/repo/calendar/CalendarServiceImpl.java index f26d045e34..49e87a36a2 100644 --- a/source/java/org/alfresco/repo/calendar/CalendarServiceImpl.java +++ b/source/java/org/alfresco/repo/calendar/CalendarServiceImpl.java @@ -42,7 +42,6 @@ import org.alfresco.service.cmr.calendar.CalendarEntry; import org.alfresco.service.cmr.calendar.CalendarService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.tagging.TaggingService; @@ -119,7 +118,7 @@ public class CalendarServiceImpl implements CalendarService /** * Fetches the Calendar Container on a site, creating as required if requested. */ - private NodeRef getSiteCalendarContainer(final String siteShortName, boolean create) + protected NodeRef getSiteCalendarContainer(final String siteShortName, boolean create) { if(! siteService.hasContainer(siteShortName, CALENDAR_COMPONENT)) { @@ -406,6 +405,13 @@ public class CalendarServiceImpl implements CalendarService List containersL = new ArrayList(); for(String siteShortName : siteShortNames) { + // Ensure the site exists, skip if not + if(siteService.getSite(siteShortName) == null) + { + continue; + } + + // Grab the container for this site NodeRef container = getSiteCalendarContainer(siteShortName, false); if(container != null) { diff --git a/source/java/org/alfresco/repo/calendar/CalendarServiceImplTest.java b/source/java/org/alfresco/repo/calendar/CalendarServiceImplTest.java index 87cbcb79d2..832fe3d5d6 100644 --- a/source/java/org/alfresco/repo/calendar/CalendarServiceImplTest.java +++ b/source/java/org/alfresco/repo/calendar/CalendarServiceImplTest.java @@ -125,7 +125,11 @@ public class CalendarServiceImplTest { CalendarEntry entry; - // TODO List to check there aren't any yet + // Nothing to start with + PagingResults results = + CALENDAR_SERVICE.listCalendarEntries(CALENDAR_SITE.getShortName(), new PagingRequest(10)); + assertEquals(0, results.getPage().size()); + // Get with an arbitrary name gives nothing entry = CALENDAR_SERVICE.getCalendarEntry(CALENDAR_SITE.getShortName(), "madeUp"); @@ -436,7 +440,7 @@ public class CalendarServiceImplTest { PagingRequest paging = new PagingRequest(10); - // Nothing to start + // Nothing to start with PagingResults results = CALENDAR_SERVICE.listCalendarEntries(CALENDAR_SITE.getShortName(), paging); assertEquals(0, results.getPage().size()); @@ -488,7 +492,43 @@ public class CalendarServiceImplTest @Test public void calendarMultiSiteListing() throws Exception { - // TODO + PagingRequest paging = new PagingRequest(10); + PagingResults results; + + + // Nothing to start + results = CALENDAR_SERVICE.listCalendarEntries(CALENDAR_SITE.getShortName(), paging); + assertEquals(0, results.getPage().size()); + results = CALENDAR_SERVICE.listCalendarEntries(ALTERNATE_CALENDAR_SITE.getShortName(), paging); + assertEquals(0, results.getPage().size()); + + results = CALENDAR_SERVICE.listCalendarEntries(new String[] { + CALENDAR_SITE.getShortName(), ALTERNATE_CALENDAR_SITE.getShortName()}, paging); + assertEquals(0, results.getPage().size()); + + + // You can pass invalid names in too, won't affect things + results = CALENDAR_SERVICE.listCalendarEntries(new String[] { + CALENDAR_SITE.getShortName(), ALTERNATE_CALENDAR_SITE.getShortName(), + "MadeUpNumber1", "MadeUpTwo", "MadeUp3"}, paging); + assertEquals(0, results.getPage().size()); + + + // Now add some events to one site + + // Check + + // Add to the other site, won't show up due to permissions + + // Make a member of the site, show up + + // Filter by start date + + // Filter by end date + + // Filter by both + + // Filter on just one site, won't see from the other } /** @@ -587,6 +627,8 @@ public class CalendarServiceImplTest private static void createTestSites() throws Exception { + final CalendarServiceImpl privateCalendarService = (CalendarServiceImpl)testContext.getBean("calendarService"); + CALENDAR_SITE = TRANSACTION_HELPER.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() { @Override @@ -598,6 +640,7 @@ public class CalendarServiceImplTest "test site title", "test site description", SiteVisibility.PUBLIC ); + privateCalendarService.getSiteCalendarContainer(site.getShortName(), true); CLASS_TEST_NODES_TO_TIDY.add(site.getNodeRef()); return site; } @@ -616,9 +659,7 @@ public class CalendarServiceImplTest "alternate site title", "alternate site description", SiteVisibility.PRIVATE ); - SITE_SERVICE.createContainer( - site.getShortName(), CalendarServiceImpl.CALENDAR_COMPONENT, null, null - ); + privateCalendarService.getSiteCalendarContainer(site.getShortName(), true); CLASS_TEST_NODES_TO_TIDY.add(site.getNodeRef()); return site; } diff --git a/source/java/org/alfresco/repo/calendar/cannedqueries/CalendarEntity.java b/source/java/org/alfresco/repo/calendar/cannedqueries/CalendarEntity.java index 0d96a4c751..a64c06a29f 100644 --- a/source/java/org/alfresco/repo/calendar/cannedqueries/CalendarEntity.java +++ b/source/java/org/alfresco/repo/calendar/cannedqueries/CalendarEntity.java @@ -43,6 +43,9 @@ public class CalendarEntity // Supplemental query-related parameters private Long parentNodeId; private Long nameQNameId; + private Long contentTypeQNameId; + private Long fromDateQNameId; + private Long toDateQNameId; /** * Default constructor @@ -51,10 +54,14 @@ public class CalendarEntity { } - public CalendarEntity(Long parentNodeId, Long nameQNameId) + public CalendarEntity(Long parentNodeId, Long nameQNameId, Long contentTypeQNameId, + Long fromDateQNameId, Long toDateQNameId) { this.parentNodeId = parentNodeId; this.nameQNameId = nameQNameId; + this.contentTypeQNameId = contentTypeQNameId; + this.fromDateQNameId = fromDateQNameId; + this.toDateQNameId = toDateQNameId; } public Long getId() @@ -127,6 +134,7 @@ public class CalendarEntity this.toDate = toISO8061; } + // Supplemental query-related parameters public Long getParentNodeId() @@ -138,4 +146,19 @@ public class CalendarEntity { return nameQNameId; } + + public Long getContentTypeQNameId() + { + return contentTypeQNameId; + } + + public Long getFromDateQNameId() + { + return fromDateQNameId; + } + + public Long getToDateQNameId() + { + return toDateQNameId; + } } diff --git a/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryFactory.java b/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryFactory.java index fbfa6559d7..da10d3b0a7 100644 --- a/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryFactory.java +++ b/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryFactory.java @@ -128,7 +128,13 @@ public class GetCalendarEntriesCannedQueryFactory extends AbstractCannedQueryFac //FIXME Need tenant service like for GetChildren? GetCalendarEntriesCannedQueryParams paramBean = new GetCalendarEntriesCannedQueryParams( - containerIds, getQNameId(ContentModel.PROP_NAME), fromDate, toDate + containerIds, + getQNameId(ContentModel.PROP_NAME), + getQNameId(CalendarModel.TYPE_EVENT), + getQNameId(CalendarModel.PROP_FROM_DATE), + getQNameId(CalendarModel.PROP_TO_DATE), + fromDate, + toDate ); CannedQueryPageDetails cqpd = createCQPageDetails(pagingReq); diff --git a/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryParams.java b/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryParams.java index 3c495ed5b7..72c2f3cb55 100644 --- a/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryParams.java +++ b/source/java/org/alfresco/repo/calendar/cannedqueries/GetCalendarEntriesCannedQueryParams.java @@ -28,25 +28,28 @@ import java.util.Date; */ public class GetCalendarEntriesCannedQueryParams extends CalendarEntity { - private final Long[] siteContainerNodeIds; + private final Long[] sitesContainerNodeIds; private final Date entriesFromDate; private final Date entriesToDate; - public GetCalendarEntriesCannedQueryParams(Long[] siteContainerNodeIds, + public GetCalendarEntriesCannedQueryParams(Long[] sitesContainerNodeIds, Long nameQNameId, + Long contentTypeQNameId, + Long fromDateQNameId, + Long toDateQNameId, Date entriesFromDate, Date entriesToDate) { - super(null, nameQNameId); + super(null, nameQNameId, contentTypeQNameId, fromDateQNameId, toDateQNameId); - this.siteContainerNodeIds = siteContainerNodeIds; + this.sitesContainerNodeIds = sitesContainerNodeIds; this.entriesFromDate = entriesFromDate; this.entriesToDate = entriesToDate; } - public Long[] getSiteContainerNodeIds() + public Long[] getSitesContainerNodeIds() { - return siteContainerNodeIds; + return sitesContainerNodeIds; } public Date getEntriesFromDate()