View Javadoc

1   /*
2    * $Id: ParameterFactory.java [05-Apr-2004]
3    *
4    * Copyright (c) 2004, Ben Fortuna
5    * All rights reserved.
6    *
7    * Redistribution and use in source and binary forms, with or without
8    * modification, are permitted provided that the following conditions
9    * are met:
10   *
11   * 	o Redistributions of source code must retain the above copyright
12   * notice, this list of conditions and the following disclaimer.
13   *
14   * 	o Redistributions in binary form must reproduce the above copyright
15   * notice, this list of conditions and the following disclaimer in the
16   * documentation and/or other materials provided with the distribution.
17   *
18   * 	o Neither the name of Ben Fortuna nor the names of any other contributors
19   * may be used to endorse or promote products derived from this software
20   * without specific prior written permission.
21   *
22   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25   * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
26   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
29   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
30   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33   */
34  package net.fortuna.ical4j.model;
35  
36  import java.net.URISyntaxException;
37  
38  import net.fortuna.ical4j.model.parameter.AltRep;
39  import net.fortuna.ical4j.model.parameter.Cn;
40  import net.fortuna.ical4j.model.parameter.CuType;
41  import net.fortuna.ical4j.model.parameter.DelegatedFrom;
42  import net.fortuna.ical4j.model.parameter.DelegatedTo;
43  import net.fortuna.ical4j.model.parameter.Dir;
44  import net.fortuna.ical4j.model.parameter.Encoding;
45  import net.fortuna.ical4j.model.parameter.FbType;
46  import net.fortuna.ical4j.model.parameter.FmtType;
47  import net.fortuna.ical4j.model.parameter.Language;
48  import net.fortuna.ical4j.model.parameter.Member;
49  import net.fortuna.ical4j.model.parameter.PartStat;
50  import net.fortuna.ical4j.model.parameter.Range;
51  import net.fortuna.ical4j.model.parameter.RelType;
52  import net.fortuna.ical4j.model.parameter.Related;
53  import net.fortuna.ical4j.model.parameter.Role;
54  import net.fortuna.ical4j.model.parameter.Rsvp;
55  import net.fortuna.ical4j.model.parameter.SentBy;
56  import net.fortuna.ical4j.model.parameter.TzId;
57  import net.fortuna.ical4j.model.parameter.Value;
58  import net.fortuna.ical4j.model.parameter.XParameter;
59  
60  /***
61   * A factory for creating iCalendar parameters.
62   *
63   * @author benfortuna
64   */
65  public final class ParameterFactory {
66  
67      private static ParameterFactory instance = new ParameterFactory();
68  
69      /***
70       * Constructor made private to prevent instantiation.
71       */
72      private ParameterFactory() {
73      }
74  
75      /***
76       * @return Returns the instance.
77       */
78      public static ParameterFactory getInstance() {
79          return instance;
80      }
81  
82      /***
83       * Creates a parameter.
84       *
85       * @param name
86       *            name of the parameter
87       * @param value
88       *            a parameter value
89       * @return a component
90       * @throws URISyntaxException thrown when the specified string
91       * is not a valid representation of a URI for selected parameters
92       */
93      public Parameter createParameter(final String name, final String value)
94              throws URISyntaxException {
95  
96          if (Parameter.ALTREP.equals(name)) {
97              return new AltRep(value);
98          }
99          else if (Parameter.CN.equals(name)) {
100             return new Cn(value);
101         }
102         else if (Parameter.CUTYPE.equals(name)) {
103             return new CuType(value);
104         }
105         else if (Parameter.DELEGATED_FROM.equals(name)) {
106             return new DelegatedFrom(value);
107         }
108         else if (Parameter.DELEGATED_TO.equals(name)) {
109             return new DelegatedTo(value);
110         }
111         else if (Parameter.DIR.equals(name)) {
112             return new Dir(value);
113         }
114         else if (Parameter.ENCODING.equals(name)) {
115             return new Encoding(value);
116         }
117         else if (Parameter.FMTTYPE.equals(name)) {
118             return new FmtType(value);
119         }
120         else if (Parameter.FBTYPE.equals(name)) {
121             return new FbType(value);
122         }
123         else if (Parameter.LANGUAGE.equals(name)) {
124             return new Language(value);
125         }
126         else if (Parameter.MEMBER.equals(name)) {
127             return new Member(value);
128         }
129         else if (Parameter.PARTSTAT.equals(name)) {
130             return new PartStat(value);
131         }
132         else if (Parameter.RANGE.equals(name)) {
133             return new Range(value);
134         }
135         else if (Parameter.RELATED.equals(name)) {
136             return new Related(value);
137         }
138         else if (Parameter.RELTYPE.equals(name)) {
139             return new RelType(value);
140         }
141         else if (Parameter.ROLE.equals(name)) {
142             return new Role(value);
143         }
144         else if (Parameter.RSVP.equals(name)) {
145             return new Rsvp(value);
146         }
147         else if (Parameter.SENT_BY.equals(name)) {
148             return new SentBy(value);
149         }
150         else if (Parameter.TZID.equals(name)) {
151             return new TzId(value);
152         }
153         else if (Parameter.VALUE.equals(name)) {
154             return new Value(value);
155         }
156         // assume experimental parameter..
157         else {
158             return new XParameter(name, value);
159         }
160     }
161 }