/*
* Copyright 2005 Open Source Applications Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.osaf.caldav4j.methods;
import net.fortuna.ical4j.data.CalendarBuilder;
import net.fortuna.ical4j.data.CalendarOutputter;
import org.osaf.caldav4j.CalDAVConstants;
public class CalDAV4JMethodFactory {
protected String prodID = CalDAVConstants.PROC_ID_DEFAULT;
private boolean validatingOutputter = false;
private ThreadLocal<CalendarBuilder> calendarBuilderThreadLocal = new ThreadLocal<CalendarBuilder>();
private CalendarOutputter calendarOutputter = null;
public CalDAV4JMethodFactory(){
}
public String getProdID() {
return prodID;
}
public void setProdID(String prodID) {
this.prodID = prodID;
}
public PutMethod createPutMethod(){
PutMethod putMethod = new PutMethod();
putMethod.setProcID(prodID);
putMethod.setCalendarOutputter(getCalendarOutputterInstance());
return putMethod;
}
public PostMethod createPostMethod(){
PostMethod postMethod = new PostMethod();
postMethod.setProcID(prodID);
postMethod.setCalendarOutputter(getCalendarOutputterInstance());
return postMethod;
}
public MkCalendarMethod createMkCalendarMethod(){
MkCalendarMethod mkCalendarMethod = new MkCalendarMethod();
return mkCalendarMethod;
}
public MkTicketMethod createMkTicketMethod(){
MkTicketMethod mkTicketMethod = new MkTicketMethod();
return mkTicketMethod;
}
public DelTicketMethod createDelTicketMethod(){
DelTicketMethod delTicketMethod = new DelTicketMethod();
return delTicketMethod;
}
public PropFindMethod createPropFindMethod(){
PropFindMethod propFindMethod = new PropFindMethod();
return propFindMethod;
}
public GetMethod createGetMethod(){
GetMethod getMethod = new GetMethod();
getMethod.setCalendarBuilder(getCalendarBuilderInstance());
return getMethod;
}
public CalDAVReportMethod createCalDAVReportMethod(){
CalDAVReportMethod reportMethod = new CalDAVReportMethod();
reportMethod.setCalendarBuilder(getCalendarBuilderInstance());
return reportMethod;
}
public CalendarCalDAVReportMethod createCalendarCalDAVReportMethod(){
CalendarCalDAVReportMethod reportMethod = new CalendarCalDAVReportMethod();
reportMethod.setCalendarBuilder(getCalendarBuilderInstance());
return reportMethod;
}
public boolean isCalendarValidatingOutputter() {
return validatingOutputter;
}
public void setCalendarValidatingOutputter(boolean validatingOutputter) {
this.validatingOutputter = validatingOutputter;
}
protected synchronized CalendarOutputter getCalendarOutputterInstance(){
if (calendarOutputter == null){
calendarOutputter = new CalendarOutputter(validatingOutputter);
}
return calendarOutputter;
}
private CalendarBuilder getCalendarBuilderInstance(){
CalendarBuilder builder = calendarBuilderThreadLocal.get();
if (builder == null){
builder = new CalendarBuilder();
calendarBuilderThreadLocal.set(builder);
}
return builder;
}
}