String detailtitle = requestForm.getTitle();
String detaildetail = requestForm.getDescription();
// startdate
Calendar start = new GregorianCalendar(tz, locale);
String activityStartDate = requestForm.getStartDateTime();
if (activityStartDate != null && (!activityStartDate.equals(""))) {
try {
Date dd = simpleDateFormat.parse(activityStartDate);
start.setTime(dd);
} catch (Exception e) {
logger.error("[execute]: Exception", e);
}
}
activityForm.setActivityStartDate(df.format(start.getTime()));
activityForm.setActivityStartTime(tf.format(start.getTime()));
// enddate
Calendar end = new GregorianCalendar(tz, locale);
String activityenddate = requestForm.getEndDateTime();
if (activityenddate != null && (!activityenddate.equals(""))) {
try {
Date dd = simpleDateFormat.parse(activityenddate);
end.setTime(dd);
} catch (Exception e) {
logger.error("[execute]: Exception", e);
}
}
activityForm.setActivityEndDate(df.format(end.getTime()));
activityForm.setActivityEndTime(tf.format(end.getTime()));
activityForm.setActivityPriority(detailpriority);
activityForm.setActivityStatus(detailstatus);
activityForm.setActivityTitle(detailtitle);
activityForm.setActivityDetail(detaildetail);
// alarm date time
String alarmDateTime = requestForm.getAlarmDateTime(); // alarmDateTime
// ="01/09/2003";
if (alarmDateTime != null && (!alarmDateTime.equals(""))) {
try {
Date d = simpleDateFormat.parse(alarmDateTime);
GregorianCalendar remind = new GregorianCalendar();
remind.setTime(d);
activityForm.setActivityRemindDate(df.format(remind.getTime()));
activityForm.setActivityReminder("on");
} catch (Exception e) {
logger.error("[execute]: Exception", e);
}
}
// now, add the Activity to the database using our SyncFacade bean
String linkCompany = requestForm.getLinkCompany();
if (linkCompany == null) {
activityForm.setLinkCompany(linkCompany);
}
// create an instance of our SyncFacade EJB
SyncFacade syncfacade = new SyncFacade();
syncfacade.setDataSource(dataSource);
// now, add the Activity to the database using our SyncFacade bean
String activitytype = requestForm.getType();
if (activitytype == null) {
activitytype = "Appointment";
}
String result = "";
int individualID = userobjectd.getIndividualID();
// Appointment
if (activitytype.equals("Appointment")) {
activityForm.setActivityType("1");
}
// Call
if (activitytype.equals("Call")) {
activityForm.setActivityType("2");
}
// Meeting
if (activitytype.equals("Meeting")) {
activityForm.setActivityType("5");
}
// ToDo
if (activitytype.equals("To Do")) {
activityForm.setActivityType("6");
}
// NextAction
if (activitytype.equals("Next Action")) {
activityForm.setActivityType("7");
}
result = syncfacade.addActivity(activityForm, individualID);
com.centraview.syncfacade.SyncFacade sfremote = null;
try {
SyncFacadeHome syncHome = (SyncFacadeHome)CVUtility.getHomeObject(
"com.centraview.syncfacade.SyncFacadeHome", "SyncFacade");
sfremote = syncHome.create();
sfremote.setDataSource(dataSource);
} catch (Exception e) {
logger.error("[execute]: Exception", e);
writer.print("FAIL");
return (null);
}
// Check to see if the user's preference is to create sync'ed
// records as private. If so, delete all records from recordauthorisation
// and publicrecords tables that link to the newly created records.
if (syncAsPrivate) {
ArrayList recordIDs = new ArrayList();
try {
recordIDs.add(new Integer(result));
} catch (NumberFormatException nfe) {
// don't need to do anything, because we obviously didn't add an
// activity successfully.
System.out.println("\n\n\nCAUGHT A NumberFormatException!!!!\n\n\n");
}
sfremote.markRecordsPrivate(3, recordIDs);
}
// we need to make all the Activities lists dirty, so that the next time
// they are viewed, they are refreshed and contain the record we just
// added
ListGenerator lg = ListGenerator.getListGenerator(dataSource);
lg.makeListDirty("MultiActivity");
lg.makeListDirty("AllActivity");
lg.makeListDirty("Appointment");
lg.makeListDirty("Call");
lg.makeListDirty("Meeting");
lg.makeListDirty("NextAction");
lg.makeListDirty("ToDo");
// Now we check to see if this is a recurring activity.
// Check the "recurrenceType" field. If it is not null,
// then process the other recurring fields "every" and "on".
// Then call the SyncFacadeEJB to add the recurring data
// to the recurrence table.
String recurrenceType = requestForm.getRecurrenceType();
if (result != null && !result.equals("")) {
// only do this if we actually created an activity above
if (recurrenceType != null && !recurrenceType.equals("")) {
// this is a recurring activity, get the other recurring fields
String every = requestForm.getEvery();
String recurrOn = requestForm.getOn();
// NOTE: we do not care about recurringStartDate anymore, only copy
// startDateTime into recurringStartDate
String recurringStartDateString = requestForm.getStartDateTime();
String recurringEndDateString = requestForm.getRecurrenceEndDate();
Date recurringStartDate = null;
Date recurringEndDate = null;
try {
recurringStartDate = simpleDateFormat.parse(recurringStartDateString);
if (recurringEndDateString != null) {
recurringEndDate = simpleDateFormat.parse(recurringEndDateString);
} else {
recurringEndDate = simpleDateFormat.parse("2099-12-31 00:00:00");
}
// NOTE: There is a bug in the CompanionLink Client API, that is
// sending us the day of the month in the "every" field, instead of
// the month of the year; when the recurring type is Yearly. To fix
// this issue, we now get the month of the year from the start date,
// and set every equal to that value. When CompanionLink addresses
// this issue correctly, we can remove this hack.
if (recurrenceType.equals("YEAR")) {
Calendar recurStart = new GregorianCalendar(tz, locale);
recurStart.setTime(recurringStartDate);
every = String.valueOf(recurStart.get(Calendar.MONTH));
}
// END HACK for yearly bug from CompanionLink
// next line returns boolean, but there's no real reason to check.
// (since we can't ROLLBACK)