Locale locale = request.getLocale();
String prefValue = userPrefs.getSyncAsPrivate();
boolean syncAsPrivate = (prefValue != null && prefValue.equals("YES")) ? true : false;
// date format for incoming dates: 2004-01-13 15:00:00
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// date format for writing to the form should be in the format based on
// locale
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
ActivityAddHandler requestForm = (ActivityAddHandler)form;
String sessionID = requestForm.getSessionID();
// check sessionid is matching or not
if (userobjectd.getSessionID().equals(sessionID)) {
ActivityForm activityForm = new ActivityForm();
activityForm.setLocale(locale);
String priority = requestForm.getPriority();
// this is the string that we'll pass to the activityform
// set to 2 (medium) by default
String detailpriority = "2";
if (priority != null) {
// set the String integer value based on the String string value
// (confused yet?)
if (priority.equals("High")) {
detailpriority = "1";
} else if (priority.equals("Low")) {
detailpriority = "3";
}
}
String detailstatus = requestForm.getStatus();
if (detailstatus == null) {
detailstatus = "1";
}
if (detailstatus != null && !detailstatus.equals("")) {
if (detailstatus.equals("Pending")) {
detailstatus = "1";
} else if (detailstatus.equals("Completed")) {
detailstatus = "2";
}
}
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