
net.fortuna.ical4j.model.ParameterFactoryImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bw-ical4j-cl Show documentation
Show all versions of bw-ical4j-cl Show documentation
A fork of iCal4j with customizations for Bedework.
The newest version!
/**
* Copyright (c) 2011, 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 net.fortuna.ical4j.model.parameter.Abbrev;
import net.fortuna.ical4j.model.parameter.AltRep;
import net.fortuna.ical4j.model.parameter.Cn;
import net.fortuna.ical4j.model.parameter.CuType;
import net.fortuna.ical4j.model.parameter.DelegatedFrom;
import net.fortuna.ical4j.model.parameter.DelegatedTo;
import net.fortuna.ical4j.model.parameter.Dir;
import net.fortuna.ical4j.model.parameter.Encoding;
import net.fortuna.ical4j.model.parameter.FbType;
import net.fortuna.ical4j.model.parameter.FmtType;
import net.fortuna.ical4j.model.parameter.Language;
import net.fortuna.ical4j.model.parameter.Member;
import net.fortuna.ical4j.model.parameter.PartStat;
import net.fortuna.ical4j.model.parameter.PublicComment;
import net.fortuna.ical4j.model.parameter.Range;
import net.fortuna.ical4j.model.parameter.RelType;
import net.fortuna.ical4j.model.parameter.Related;
import net.fortuna.ical4j.model.parameter.Role;
import net.fortuna.ical4j.model.parameter.Rsvp;
import net.fortuna.ical4j.model.parameter.ScheduleAgent;
import net.fortuna.ical4j.model.parameter.ScheduleStatus;
import net.fortuna.ical4j.model.parameter.SentBy;
import net.fortuna.ical4j.model.parameter.StayInformed;
import net.fortuna.ical4j.model.parameter.Type;
import net.fortuna.ical4j.model.parameter.TzId;
import net.fortuna.ical4j.model.parameter.Value;
import net.fortuna.ical4j.model.parameter.Vvenue;
import net.fortuna.ical4j.model.parameter.XParameter;
import net.fortuna.ical4j.util.Strings;
import java.net.URISyntaxException;
/**
* A factory for creating iCalendar parameters.
*
* $Id $
*
* [05-Apr-2004]
*
* @author Ben Fortuna
*/
public class ParameterFactoryImpl extends AbstractContentFactory implements ParameterFactory {
private static final long serialVersionUID = -4034423507432249165L;
private static ParameterFactoryImpl instance = new ParameterFactoryImpl();
protected ParameterFactoryImpl() {
registerDefaultFactory(Parameter.ABBREV, new AbbrevFactory());
registerDefaultFactory(Parameter.ALTREP, new AltRepFactory());
registerDefaultFactory(Parameter.CN, new CnFactory());
registerDefaultFactory(Parameter.CUTYPE, new CuTypeFactory());
registerDefaultFactory(Parameter.DELEGATED_FROM, new DelegatedFromFactory());
registerDefaultFactory(Parameter.DELEGATED_TO, new DelegatedToFactory());
registerDefaultFactory(Parameter.DIR, new DirFactory());
registerDefaultFactory(Parameter.ENCODING, new EncodingFactory());
registerDefaultFactory(Parameter.FMTTYPE, new FmtTypeFactory());
registerDefaultFactory(Parameter.FBTYPE, new FbTypeFactory());
registerDefaultFactory(Parameter.LANGUAGE, new LanguageFactory());
registerDefaultFactory(Parameter.MEMBER, new MemberFactory());
registerDefaultFactory(Parameter.PARTSTAT, new PartStatFactory());
registerDefaultFactory(Parameter.PUBLIC_COMMENT, new PublicCommentFactory());
registerDefaultFactory(Parameter.RANGE, new RangeFactory());
registerDefaultFactory(Parameter.RELATED, new RelatedFactory());
registerDefaultFactory(Parameter.RELTYPE, new RelTypeFactory());
registerDefaultFactory(Parameter.ROLE, new RoleFactory());
registerDefaultFactory(Parameter.RSVP, new RsvpFactory());
registerDefaultFactory(Parameter.SCHEDULE_AGENT, new ScheduleAgentFactory());
registerDefaultFactory(Parameter.SCHEDULE_STATUS, new ScheduleStatusFactory());
registerDefaultFactory(Parameter.SENT_BY, new SentByFactory());
registerDefaultFactory(Parameter.STAY_INFORMED, new StayInformedFactory());
registerDefaultFactory(Parameter.TYPE, new TypeFactory());
registerDefaultFactory(Parameter.TZID, new TzIdFactory());
registerDefaultFactory(Parameter.VALUE, new ValueFactory());
registerDefaultFactory(Parameter.VVENUE, new VvenueFactory());
}
/**
* @return Returns the instance.
*/
public static ParameterFactoryImpl getInstance() {
return instance;
}
/**
* Creates a parameter.
* @param name name of the parameter
* @param value a parameter value
* @return a component
* @throws URISyntaxException thrown when the specified string is not a valid representation of a URI for selected
* parameters
*/
public Parameter createParameter(final String name, final String value)
throws URISyntaxException {
final ParameterFactory factory = (ParameterFactory) getFactory(name);
Parameter parameter = null;
if (factory != null) {
parameter = factory.createParameter(name, value);
}
else if (isExperimentalName(name)) {
parameter = new XParameter(name, value);
}
else if (allowIllegalNames()) {
parameter = new XParameter(name, value);
}
else {
throw new IllegalArgumentException("Invalid parameter name: "
+ name);
}
return parameter;
}
/**
* @param name
* @return
*/
private boolean isExperimentalName(final String name) {
return name.startsWith(Parameter.EXPERIMENTAL_PREFIX)
&& name.length() > Parameter.EXPERIMENTAL_PREFIX.length();
}
private static class AbbrevFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name, final String value) throws URISyntaxException {
return new Abbrev(value);
}
}
private static class AltRepFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name, final String value) throws URISyntaxException {
return new AltRep(value);
}
}
private static class CnFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new Cn(value);
}
}
private static class CuTypeFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name, final String value) throws URISyntaxException {
CuType parameter = new CuType(value);
if (CuType.INDIVIDUAL.equals(parameter)) {
parameter = CuType.INDIVIDUAL;
}
else if (CuType.GROUP.equals(parameter)) {
parameter = CuType.GROUP;
}
else if (CuType.RESOURCE.equals(parameter)) {
parameter = CuType.RESOURCE;
}
else if (CuType.ROOM.equals(parameter)) {
parameter = CuType.ROOM;
}
else if (CuType.UNKNOWN.equals(parameter)) {
parameter = CuType.UNKNOWN;
}
return parameter;
}
}
private static class DelegatedFromFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new DelegatedFrom(value);
}
}
private static class DelegatedToFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new DelegatedTo(value);
}
}
private static class DirFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new Dir(value);
}
}
private static class EncodingFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
Encoding parameter = new Encoding(value);
if (Encoding.EIGHT_BIT.equals(parameter)) {
parameter = Encoding.EIGHT_BIT;
}
else if (Encoding.BASE64.equals(parameter)) {
parameter = Encoding.BASE64;
}
return parameter;
}
}
private static class FmtTypeFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new FmtType(value);
}
}
private static class FbTypeFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
FbType parameter = new FbType(value);
if (FbType.FREE.equals(parameter)) {
parameter = FbType.FREE;
}
else if (FbType.BUSY.equals(parameter)) {
parameter = FbType.BUSY;
}
else if (FbType.BUSY_TENTATIVE.equals(parameter)) {
parameter = FbType.BUSY_TENTATIVE;
}
else if (FbType.BUSY_UNAVAILABLE.equals(parameter)) {
parameter = FbType.BUSY_UNAVAILABLE;
}
return parameter;
}
}
private static class LanguageFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new Language(value);
}
}
private static class MemberFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new Member(value);
}
}
private static class PartStatFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
PartStat parameter = new PartStat(value);
if (PartStat.NEEDS_ACTION.equals(parameter)) {
parameter = PartStat.NEEDS_ACTION;
}
else if (PartStat.ACCEPTED.equals(parameter)) {
parameter = PartStat.ACCEPTED;
}
else if (PartStat.DECLINED.equals(parameter)) {
parameter = PartStat.DECLINED;
}
else if (PartStat.TENTATIVE.equals(parameter)) {
parameter = PartStat.TENTATIVE;
}
else if (PartStat.DELEGATED.equals(parameter)) {
parameter = PartStat.DELEGATED;
}
else if (PartStat.COMPLETED.equals(parameter)) {
parameter = PartStat.COMPLETED;
}
else if (PartStat.IN_PROCESS.equals(parameter)) {
parameter = PartStat.IN_PROCESS;
}
return parameter;
}
}
private static class PublicCommentFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name, final String value) throws URISyntaxException {
return new PublicComment(value);
}
}
private static class RangeFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
Range parameter = new Range(value);
if (Range.THISANDFUTURE.equals(parameter)) {
parameter = Range.THISANDFUTURE;
}
else if (Range.THISANDPRIOR.equals(parameter)) {
parameter = Range.THISANDPRIOR;
}
return parameter;
}
}
private static class RelatedFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
Related parameter = new Related(value);
if (Related.START.equals(parameter)) {
parameter = Related.START;
}
else if (Related.END.equals(parameter)) {
parameter = Related.END;
}
return parameter;
}
}
private static class RelTypeFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new RelType(value);
}
}
private static class RoleFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
Role parameter = new Role(value);
if (Role.CHAIR.equals(parameter)) {
parameter = Role.CHAIR;
}
else if (Role.REQ_PARTICIPANT.equals(parameter)) {
parameter = Role.REQ_PARTICIPANT;
}
else if (Role.OPT_PARTICIPANT.equals(parameter)) {
parameter = Role.OPT_PARTICIPANT;
}
else if (Role.NON_PARTICIPANT.equals(parameter)) {
parameter = Role.NON_PARTICIPANT;
}
return parameter;
}
}
private static class RsvpFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
Rsvp parameter = new Rsvp(value);
if (Rsvp.TRUE.equals(parameter)) {
parameter = Rsvp.TRUE;
}
else if (Rsvp.FALSE.equals(parameter)) {
parameter = Rsvp.FALSE;
}
return parameter;
}
}
private static class ScheduleAgentFactory implements ParameterFactory {
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
final ScheduleAgent parameter = new ScheduleAgent(value);
if (ScheduleAgent.SERVER.equals(parameter)) {
return ScheduleAgent.SERVER;
}
else if (ScheduleAgent.CLIENT.equals(parameter)) {
return ScheduleAgent.CLIENT;
}
else if (ScheduleAgent.NONE.equals(parameter)) {
return ScheduleAgent.NONE;
}
return parameter;
}
}
private static class ScheduleStatusFactory implements ParameterFactory {
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new ScheduleStatus(value);
}
}
private static class SentByFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new SentBy(value);
}
}
private static class StayInformedFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
StayInformed parameter = new StayInformed(value);
if (StayInformed.TRUE.equals(parameter)) {
parameter = StayInformed.TRUE;
}
else if (StayInformed.FALSE.equals(parameter)) {
parameter = StayInformed.FALSE;
}
return parameter;
}
}
private static class VvenueFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name, final String value)
throws URISyntaxException {
return new Vvenue(value);
}
}
private static class TypeFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new Type(value);
}
}
private static class TzIdFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
return new TzId(Strings.unescape(value));
}
}
private static class ValueFactory implements ParameterFactory {
private static final long serialVersionUID = 1L;
public Parameter createParameter(final String name,
final String value) throws URISyntaxException {
Value parameter = new Value(value);
if (Value.BINARY.equals(parameter)) {
parameter = Value.BINARY;
}
else if (Value.BOOLEAN.equals(parameter)) {
parameter = Value.BOOLEAN;
}
else if (Value.CAL_ADDRESS.equals(parameter)) {
parameter = Value.CAL_ADDRESS;
}
else if (Value.DATE.equals(parameter)) {
parameter = Value.DATE;
}
else if (Value.DATE_TIME.equals(parameter)) {
parameter = Value.DATE_TIME;
}
else if (Value.DURATION.equals(parameter)) {
parameter = Value.DURATION;
}
else if (Value.FLOAT.equals(parameter)) {
parameter = Value.FLOAT;
}
else if (Value.INTEGER.equals(parameter)) {
parameter = Value.INTEGER;
}
else if (Value.PERIOD.equals(parameter)) {
parameter = Value.PERIOD;
}
else if (Value.RECUR.equals(parameter)) {
parameter = Value.RECUR;
}
else if (Value.TEXT.equals(parameter)) {
parameter = Value.TEXT;
}
else if (Value.TIME.equals(parameter)) {
parameter = Value.TIME;
}
else if (Value.URI.equals(parameter)) {
parameter = Value.URI;
}
else if (Value.UTC_OFFSET.equals(parameter)) {
parameter = Value.UTC_OFFSET;
}
return parameter;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy