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()