Fórumok
Query CalendarBookings
Hiran Chaudhuri, módosítva 9 év-val korábban
Query CalendarBookings
Regular Member Bejegyzések: 188 Csatlakozás dátuma: 2010.09.01. Legújabb bejegyzések
Hi there.
Using the nice calendar portlet I create CalendarBookings through API code. Now I need to detect whether other events are on the calendar at a given time already. This code retrieves the already existing events starting at the same time as my new event would:
The difficulty is that this code seems to display also CalendarBookings that were deleted via the Calendar Portlet (GUI).
So how can I strip off all the deleted events?
Using the nice calendar portlet I create CalendarBookings through API code. Now I need to detect whether other events are on the calendar at a given time already. This code retrieves the already existing events starting at the same time as my new event would:
String servletContextName = "calendar-portlet";
ClassLoader classLoader = (ClassLoader)com.liferay.portal.kernel.bean.PortletBeanLocatorUtil.locate(servletContextName, "portletClassLoader");
com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery = com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil.forClass(com.liferay.calendar.model.CalendarBooking.class, classLoader);
dynamicQuery.add(com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil.forName("calendarId").eq(calendarId));
dynamicQuery.add(com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil.forName("startTime").eq(start.getTime()));
List<com.liferay.calendar.model.calendarbooking> bookings = com.liferay.calendar.service.CalendarBookingLocalServiceUtil.dynamicQuery(dynamicQuery);
for(com.liferay.calendar.model.CalendarBooking cb: bookings) {
log.info("Found CalendarBooking "+cb);
}
</com.liferay.calendar.model.calendarbooking>
The difficulty is that this code seems to display also CalendarBookings that were deleted via the Calendar Portlet (GUI).
So how can I strip off all the deleted events?
Hiran Chaudhuri, módosítva 9 év-val korábban
RE: Query CalendarBookings (Válasz)
Regular Member Bejegyzések: 188 Csatlakozás dátuma: 2010.09.01. Legújabb bejegyzések
I found that Liferay sets the CalendarBooking's status to 0 when an event is created, and sets it to 8 when an event is deleted.
That means events never get deleted from the table, and the query just needs to filter them out. With that I ended up on
That means events never get deleted from the table, and the query just needs to filter them out. With that I ended up on
com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery = com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil.forClass(com.liferay.calendar.model.CalendarBooking.class, classLoader);
dynamicQuery.add(com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil.forName("calendarId").eq(calendarId));
dynamicQuery.add(com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil.forName("startTime").eq(start.getTime()));
dynamicQuery.add(com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil.forName("status").ne(8));
List<com.liferay.calendar.model.calendarbooking> bookings = com.liferay.calendar.service.CalendarBookingLocalServiceUtil.dynamicQuery(dynamicQuery);
</com.liferay.calendar.model.calendarbooking>