package org.osaf.caldav4j.scheduling.methods;
import java.io.IOException;
import net.fortuna.ical4j.model.ComponentList;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.component.CalendarComponent;
import net.fortuna.ical4j.model.component.VTimeZone;
import net.fortuna.ical4j.model.property.Attendee;
import net.fortuna.ical4j.model.property.Method;
import net.fortuna.ical4j.model.property.Organizer;
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpState;
import org.osaf.caldav4j.methods.PostMethod;
public class SchedulePostMethod extends PostMethod {
// we have to set the Attendees and Organize headers taken from Calendar
protected void addRequestHeaders(HttpState state, HttpConnection conn)
throws IOException, HttpException {
boolean addOrganizerToAttendees = false;
boolean hasAttendees = false;
// get ATTENDEES and ORGANIZER from ical and add
// Originator and Recipient to Header
if ( this.calendar != null) {
ComponentList cList = calendar.getComponents();
if (Method.REPLY.equals(calendar.getProperty(Property.METHOD))) {
addOrganizerToAttendees = true;
}
for (Object obj : cList) {
if (! (obj instanceof VTimeZone)) {
CalendarComponent event = (CalendarComponent) obj;
Organizer organizer = (Organizer) event.getProperty(Property.ORGANIZER);
if ((organizer != null) && (organizer.getValue() != null) &&
(organizer.getValue().startsWith("mailto:"))
) {
super.addRequestHeader("Originator", organizer.getValue());
if (addOrganizerToAttendees) {
super.addRequestHeader("Recipient", organizer.getValue());
}
for (Object oAttendee: event.getProperties(Property.ATTENDEE)) {
Attendee a = (Attendee) oAttendee;
if (a.getValue().startsWith("mailto:")) {
super.addRequestHeader("Recipient", a.getValue());
}
}
}
}
}
}
super.addRequestHeaders(state, conn);
}
}