/*
* $Id: PropertyFactoryImpl.java,v 1.8 2006/03/25 10:15:59 fortuna Exp $ [05-Apr-2004]
*
* Copyright (c) 2004, Ben Fortuna
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* o Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* o Neither the name of Ben Fortuna nor the names of any other contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.fortuna.ical4j.model;
import java.io.IOException;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import net.fortuna.ical4j.model.property.Action;
import net.fortuna.ical4j.model.property.Attach;
import net.fortuna.ical4j.model.property.Attendee;
import net.fortuna.ical4j.model.property.CalScale;
import net.fortuna.ical4j.model.property.Categories;
import net.fortuna.ical4j.model.property.Clazz;
import net.fortuna.ical4j.model.property.Comment;
import net.fortuna.ical4j.model.property.Completed;
import net.fortuna.ical4j.model.property.Contact;
import net.fortuna.ical4j.model.property.Created;
import net.fortuna.ical4j.model.property.Description;
import net.fortuna.ical4j.model.property.DtEnd;
import net.fortuna.ical4j.model.property.DtStamp;
import net.fortuna.ical4j.model.property.DtStart;
import net.fortuna.ical4j.model.property.Due;
import net.fortuna.ical4j.model.property.Duration;
import net.fortuna.ical4j.model.property.ExDate;
import net.fortuna.ical4j.model.property.ExRule;
import net.fortuna.ical4j.model.property.FreeBusy;
import net.fortuna.ical4j.model.property.Geo;
import net.fortuna.ical4j.model.property.LastModified;
import net.fortuna.ical4j.model.property.Location;
import net.fortuna.ical4j.model.property.Method;
import net.fortuna.ical4j.model.property.Organizer;
import net.fortuna.ical4j.model.property.PercentComplete;
import net.fortuna.ical4j.model.property.Priority;
import net.fortuna.ical4j.model.property.ProdId;
import net.fortuna.ical4j.model.property.RDate;
import net.fortuna.ical4j.model.property.RRule;
import net.fortuna.ical4j.model.property.RecurrenceId;
import net.fortuna.ical4j.model.property.RelatedTo;
import net.fortuna.ical4j.model.property.Repeat;
import net.fortuna.ical4j.model.property.RequestStatus;
import net.fortuna.ical4j.model.property.Resources;
import net.fortuna.ical4j.model.property.Sequence;
import net.fortuna.ical4j.model.property.Status;
import net.fortuna.ical4j.model.property.Summary;
import net.fortuna.ical4j.model.property.Transp;
import net.fortuna.ical4j.model.property.Trigger;
import net.fortuna.ical4j.model.property.TzId;
import net.fortuna.ical4j.model.property.TzName;
import net.fortuna.ical4j.model.property.TzOffsetFrom;
import net.fortuna.ical4j.model.property.TzOffsetTo;
import net.fortuna.ical4j.model.property.TzUrl;
import net.fortuna.ical4j.model.property.Uid;
import net.fortuna.ical4j.model.property.Url;
import net.fortuna.ical4j.model.property.Version;
import net.fortuna.ical4j.model.property.XProperty;
import net.fortuna.ical4j.util.CompatibilityHints;
/**
* A factory for creating iCalendar properties. Note that if relaxed parsing is enabled (via
* specifying the system property: icalj.parsing.relaxed=true) illegal property names are allowed.
* @author Ben Fortuna
*/
public final class PropertyFactoryImpl implements PropertyFactory {
private static PropertyFactoryImpl instance = new PropertyFactoryImpl();
private Map factories;
private boolean allowIllegalNames;
/**
* Constructor made private to prevent instantiation.
*/
private PropertyFactoryImpl() {
allowIllegalNames = CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING);
factories = new HashMap();
factories.put(Property.ACTION, createActionFactory());
factories.put(Property.ATTACH, createAttachFactory());
factories.put(Property.ATTENDEE, createAttendeeFactory());
factories.put(Property.CALSCALE, createCalScaleFactory());
factories.put(Property.CATEGORIES, createCategoriesFactory());
factories.put(Property.CLASS, createClazzFactory());
factories.put(Property.COMMENT, createCommentFactory());
factories.put(Property.COMPLETED, createCompletedFactory());
factories.put(Property.CONTACT, createContactFactory());
factories.put(Property.CREATED, createCreatedFactory());
factories.put(Property.DESCRIPTION, createDescriptionFactory());
factories.put(Property.DTEND, createDtEndFactory());
factories.put(Property.DTSTAMP, createDtStampFactory());
factories.put(Property.DTSTART, createDtStartFactory());
factories.put(Property.DUE, createDueFactory());
factories.put(Property.DURATION, createDurationFactory());
factories.put(Property.EXDATE, createExDateFactory());
factories.put(Property.EXRULE, createExRuleFactory());
factories.put(Property.FREEBUSY, createFreeBusyFactory());
factories.put(Property.GEO, createGeoFactory());
factories.put(Property.LAST_MODIFIED, createLastModifiedFactory());
factories.put(Property.LOCATION, createLocationFactory());
factories.put(Property.METHOD, createMethodFactory());
factories.put(Property.ORGANIZER, createOrganizerFactory());
factories.put(Property.PERCENT_COMPLETE, createPercentCompleteFactory());
factories.put(Property.PRIORITY, createPriorityFactory());
factories.put(Property.PRODID, createProdIdFactory());
factories.put(Property.RDATE, createRDateFactory());
factories.put(Property.RECURRENCE_ID, createRecurrenceIdFactory());
factories.put(Property.RELATED_TO, createRelatedToFactory());
factories.put(Property.REPEAT, createRepeatFactory());
factories.put(Property.REQUEST_STATUS, createRequestStatusFactory());
factories.put(Property.RESOURCES, createResourcesFactory());
factories.put(Property.RRULE, createRRuleFactory());
factories.put(Property.SEQUENCE, createSequenceFactory());
factories.put(Property.STATUS, createStatusFactory());
factories.put(Property.SUMMARY, createSummaryFactory());
factories.put(Property.TRANSP, createTranspFactory());
factories.put(Property.TRIGGER, createTriggerFactory());
factories.put(Property.TZID, createTzIdFactory());
factories.put(Property.TZNAME, createTzNameFactory());
factories.put(Property.TZOFFSETFROM, createTzOffsetFromFactory());
factories.put(Property.TZOFFSETTO, createTzOffsetToFactory());
factories.put(Property.TZURL, createTzUrlFactory());
factories.put(Property.UID, createUidFactory());
factories.put(Property.URL, createUrlFactory());
factories.put(Property.VERSION, createVersionFactory());
}
/**
* @return
*/
private PropertyFactory createActionFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Action(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Action();
}
};
}
/**
* @return
*/
private PropertyFactory createAttachFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Attach(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Attach();
}
};
}
/**
* @return
*/
private PropertyFactory createAttendeeFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Attendee(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Attendee();
}
};
}
/**
* @return
*/
private PropertyFactory createCalScaleFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new CalScale(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new CalScale();
}
};
}
/**
* @return
*/
private PropertyFactory createCategoriesFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Categories(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Categories();
}
};
}
/**
* @return
*/
private PropertyFactory createClazzFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Clazz(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Clazz();
}
};
}
/**
* @return
*/
private PropertyFactory createCommentFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Comment(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Comment();
}
};
}
/**
* @return
*/
private PropertyFactory createCompletedFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Completed(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Completed();
}
};
}
/**
* @return
*/
private PropertyFactory createContactFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Contact(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Contact();
}
};
}
/**
* @return
*/
private PropertyFactory createCreatedFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Created(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Created();
}
};
}
/**
* @return
*/
private PropertyFactory createDescriptionFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Description(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Description();
}
};
}
/**
* @return
*/
private PropertyFactory createDtEndFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new DtEnd(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new DtEnd();
}
};
}
/**
* @return
*/
private PropertyFactory createDtStampFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new DtStamp(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new DtStamp();
}
};
}
/**
* @return
*/
private PropertyFactory createDtStartFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new DtStart(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new DtStart();
}
};
}
/**
* @return
*/
private PropertyFactory createDueFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Due(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Due();
}
};
}
/**
* @return
*/
private PropertyFactory createDurationFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Duration(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Duration();
}
};
}
/**
* @return
*/
private PropertyFactory createExDateFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new ExDate(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new ExDate();
}
};
}
/**
* @return
*/
private PropertyFactory createExRuleFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new ExRule(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new ExRule();
}
};
}
/**
* @return
*/
private PropertyFactory createFreeBusyFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new FreeBusy(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new FreeBusy();
}
};
}
/**
* @return
*/
private PropertyFactory createGeoFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Geo(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Geo();
}
};
}
/**
* @return
*/
private PropertyFactory createLastModifiedFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new LastModified(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new LastModified();
}
};
}
/**
* @return
*/
private PropertyFactory createLocationFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Location(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Location();
}
};
}
/**
* @return
*/
private PropertyFactory createMethodFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Method(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Method();
}
};
}
/**
* @return
*/
private PropertyFactory createOrganizerFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Organizer(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Organizer();
}
};
}
/**
* @return
*/
private PropertyFactory createPercentCompleteFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new PercentComplete(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new PercentComplete();
}
};
}
/**
* @return
*/
private PropertyFactory createPriorityFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Priority(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Priority();
}
};
}
/**
* @return
*/
private PropertyFactory createProdIdFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new ProdId(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new ProdId();
}
};
}
/**
* @return
*/
private PropertyFactory createRDateFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new RDate(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new RDate();
}
};
}
/**
* @return
*/
private PropertyFactory createRecurrenceIdFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new RecurrenceId(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new RecurrenceId();
}
};
}
/**
* @return
*/
private PropertyFactory createRelatedToFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new RelatedTo(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new RelatedTo();
}
};
}
/**
* @return
*/
private PropertyFactory createRepeatFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Repeat(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Repeat();
}
};
}
/**
* @return
*/
private PropertyFactory createRequestStatusFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new RequestStatus(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new RequestStatus();
}
};
}
/**
* @return
*/
private PropertyFactory createResourcesFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Resources(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Resources();
}
};
}
/**
* @return
*/
private PropertyFactory createRRuleFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new RRule(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new RRule();
}
};
}
/**
* @return
*/
private PropertyFactory createSequenceFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Sequence(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Sequence();
}
};
}
/**
* @return
*/
private PropertyFactory createStatusFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Status(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Status();
}
};
}
/**
* @return
*/
private PropertyFactory createSummaryFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Summary(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Summary();
}
};
}
/**
* @return
*/
private PropertyFactory createTranspFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Transp(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Transp();
}
};
}
/**
* @return
*/
private PropertyFactory createTriggerFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Trigger(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Trigger();
}
};
}
/**
* @return
*/
private PropertyFactory createTzIdFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new TzId(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new TzId();
}
};
}
/**
* @return
*/
private PropertyFactory createTzNameFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new TzName(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new TzName();
}
};
}
/**
* @return
*/
private PropertyFactory createTzOffsetFromFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new TzOffsetFrom(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new TzOffsetFrom();
}
};
}
/**
* @return
*/
private PropertyFactory createTzOffsetToFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new TzOffsetTo(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new TzOffsetTo();
}
};
}
/**
* @return
*/
private PropertyFactory createTzUrlFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new TzUrl(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new TzUrl();
}
};
}
/**
* @return
*/
private PropertyFactory createUidFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Uid(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Uid();
}
};
}
/**
* @return
*/
private PropertyFactory createUrlFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Url(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Url();
}
};
}
/**
* @return
*/
private PropertyFactory createVersionFactory() {
return new PropertyFactory() {
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String, net.fortuna.ical4j.model.ParameterList, java.lang.String)
*/
public Property createProperty(final String name, final ParameterList parameters, final String value) throws IOException, URISyntaxException, ParseException {
return new Version(parameters, value);
}
/* (non-Javadoc)
* @see net.fortuna.ical4j.model.PropertyFactory#createProperty(java.lang.String)
*/
public Property createProperty(final String name) {
return new Version();
}
};
}
/**
* @return Returns the instance.
*/
public static PropertyFactoryImpl getInstance() {
return instance;
}
/**
* Creates an uninitialised property.
* @param name
* name of the property
* @return a property
*/
public Property createProperty(final String name) {
PropertyFactory factory = (PropertyFactory) factories.get(name);
if (factory != null) {
return factory.createProperty(name);
}
else if (isExperimentalName(name)) {
return new XProperty(name);
}
else if (allowIllegalNames) {
return new XProperty(name);
}
else {
throw new IllegalArgumentException("Illegal property [" + name + "]");
}
}
/**
* Creates a property.
*
* @param name
* name of the property
* @param parameters
* a list of property parameters
* @param value
* a property value
* @return a component
*/
public Property createProperty(final String name,
final ParameterList parameters, final String value)
throws IOException, URISyntaxException, ParseException {
PropertyFactory factory = (PropertyFactory) factories.get(name);
if (factory != null) {
return factory.createProperty(name, parameters, value);
}
else if (isExperimentalName(name)) {
return new XProperty(name, parameters, value);
}
else if (allowIllegalNames) {
return new XProperty(name);
}
else {
throw new IllegalArgumentException("Illegal property [" + name + "]");
}
}
/**
* @param name
* @return
*/
private boolean isExperimentalName(final String name) {
return name.startsWith(Property.EXPERIMENTAL_PREFIX)
&& name.length() > Property.EXPERIMENTAL_PREFIX.length();
}
}