Foren

Adding new events to a calendar

thumbnail
Jordi Vilaplana, geändert vor 13 Jahren.

Adding new events to a calendar

New Member Beiträge: 4 Beitrittsdatum: 03.11.10 Neueste Beiträge
Hi,

I've done a portlet that adds new events to the Liferay Calendar portlet.

My problem is that when I add an event it doesn't show in the calendar view of the portlet, it only appears in the event list view (and it is also created in the database table 'calevent').

It only appears in the calendar view if I restart Liferay or if I add a new event using the calendar portlet interface.


To add the event I use this code:

CalEvent event = CalEventLocalServiceUtil.createCalEvent(CounterLocalServiceUtil.increment());
// Set all the parameters...
CalEventLocalServiceUtil.addCalEvent(event);


Am I doing something wrong? Any idea? emoticon

I'm using Liferay 6.0.5.
Jan Ophey, geändert vor 13 Jahren.

RE: Adding new events to a calendar

New Member Beiträge: 6 Beitrittsdatum: 17.09.10 Neueste Beiträge
Have you tried to use
CalEventLocalServiceUtil.updateCalEvent(event);
?
thumbnail
Jordi Vilaplana, geändert vor 13 Jahren.

RE: Adding new events to a calendar (Antwort)

New Member Beiträge: 4 Beitrittsdatum: 03.11.10 Neueste Beiträge
Yes, and it didn't work.

Finally I've found a solution that seems to work.
After adding the event I do:

MultiVMPoolUtil.getMultiVMPool().clear();


I guess that it clears the cache. I don't know if this is the best way to do it but it works for me.

Thanks for your reply Jan.
thumbnail
Amos Fong, geändert vor 13 Jahren.

RE: Adding new events to a calendar

Liferay Legend Beiträge: 2047 Beitrittsdatum: 07.10.08 Neueste Beiträge
If you look in CalEventLocalSErviceImpl.addCalEvent(String uuid, long userId, String title, String description...), it does make a call to this to clear the cache:

CalEventLocalUtil.clearEventsPool(event.getGroupId());


If possible use CalEventLocalSErviceImpl.addCalEvent(String uuid, long userId, String title, String description....) because it also does some other stuff too.
Karoly Holczhauser, geändert vor 13 Jahren.

RE: Adding new events to a calendar

New Member Beiträge: 8 Beitrittsdatum: 13.01.11 Neueste Beiträge
Hi all!
I'm trying to add a new event to the calendar from code, but It isn't works very well: don't worksemoticon
Anyone could help ?
Thx

 try{     
  CalEvent calEvent = CalEventLocalServiceUtil
   .createCalEvent(CounterLocalServiceUtil.increment());


  calEvent.setTitle(conferenceEvent.getName());
  calEvent.setDescription(conferenceEvent
   .getAccomodationDescription());
  calEvent.setStartDate(conferenceEvent.getStartTime());
  calEvent.setEndDate(conferenceEvent.getEndTime());
  
CalEventLocalServiceUtil.addCalEvent(calEvent);

        } catch (SystemException e) {
    
        e.printStackTrace();
        } finally {
        MultiVMPoolUtil.getMultiVMPool().clear();
}
thumbnail
Piotr Filipowicz, geändert vor 13 Jahren.

RE: Adding new events to a calendar

Junior Member Beiträge: 52 Beitrittsdatum: 18.11.10 Neueste Beiträge
I think the methods ara fine. IMHO you should fill all CalEvent model's fields (eg. userId, groupId, type).

In the second way you should call another "add" method which correctly fill all CalEvent's fields. If you don't know how to get ServiceContext look into ServiceContextFactory and getInstance method.


public CalEvent addEvent(
			long userId, String title, String description, int startDateMonth,
			int startDateDay, int startDateYear, int startDateHour,
			int startDateMinute, int endDateMonth, int endDateDay,
			int endDateYear, int durationHour, int durationMinute,
			boolean allDay, boolean timeZoneSensitive, String type,
			boolean repeating, TZSRecurrence recurrence, int remindBy,
			int firstReminder, int secondReminder,
			ServiceContext serviceContext)
Karoly Holczhauser, geändert vor 13 Jahren.

RE: Adding new events to a calendar

New Member Beiträge: 8 Beitrittsdatum: 13.01.11 Neueste Beiträge
Hella ! Thank for your answer!


What would, if I don't know all of the parameters ? For example:
TZSRecurrence recurrence, int remindBy, int firstReminder, int secondReminder ?

Can I insert an event with part informations ?
thumbnail
Piotr Filipowicz, geändert vor 13 Jahren.

RE: Adding new events to a calendar

Junior Member Beiträge: 52 Beitrittsdatum: 18.11.10 Neueste Beiträge
Try put null for object, 0 for ints and empty string or null for String.
Karoly Holczhauser, geändert vor 13 Jahren.

RE: Adding new events to a calendar

New Member Beiträge: 8 Beitrittsdatum: 13.01.11 Neueste Beiträge
Okay, thank you so much. All works fine, but never forget to call MultiVMPoolUtil.getMultiVMPool().clear(); in the finally block.

Bye: Károly from Hungaryemoticon
thumbnail
Parth N Vachhani, geändert vor 11 Jahren.

RE: Adding new events to a calendar

New Member Beiträge: 12 Beitrittsdatum: 14.05.10 Neueste Beiträge
Hi ,

I am trying to implement the similar function and getting the same behavior. The event get displayed in the "Events" tab under calendar portlet but does not get displayed in the "Summary" view and also not getting added in the calender view. The code that I have written is as below.

CalEvent calEve = CalEventLocalServiceUtil.createCalEvent(CounterLocalServiceUtil.increment());

long eventId = CounterLocalServiceUtil.increment();
calEve.setEventId(eventId);
String eventUuid = calEve.getUuid();

calEve.setUserId(10196);
calEve.setUserName(UserLocalServiceUtil.getUserById(10196).getFirstName());
calEve.setGroupId(10180);
calEve.setCompanyId(10154);

calEve.setTitle(eventTitle);
calEve.setDescription(eventDescription);


calEve.setStartDate(new Date());
calEve.setCreateDate(new Date());
calEve.setDurationHour(6);
calEve.setDurationMinute(4);

calEve.setType("event");
calEve.setRepeating(true);
calEve.setRemindBy(0);
calEve.setFirstReminder(300000);
calEve.setSecondReminder(300000);

TZSRecurrence occure =new TZSRecurrence();
occure.setFrequency(3);
calEve.setRecurrenceObj(occure);


CalEvent existingEve = CalEventLocalServiceUtil.addCalEvent(calEve);
//CalEventLocalServiceUtil.updateCalEvent(existingEve);

MultiVMPoolUtil.getMultiVMPool().clear();

I have also added the last line as suggested but no luck.

Can please guid me if I am missing something ??

Thanks in Advance.