1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package net.fortuna.ical4j.model;
35
36 import java.io.IOException;
37 import java.net.URISyntaxException;
38 import java.text.ParseException;
39
40 import net.fortuna.ical4j.model.property.Action;
41 import net.fortuna.ical4j.model.property.Attach;
42 import net.fortuna.ical4j.model.property.Attendee;
43 import net.fortuna.ical4j.model.property.CalScale;
44 import net.fortuna.ical4j.model.property.Categories;
45 import net.fortuna.ical4j.model.property.Clazz;
46 import net.fortuna.ical4j.model.property.Comment;
47 import net.fortuna.ical4j.model.property.Completed;
48 import net.fortuna.ical4j.model.property.Contact;
49 import net.fortuna.ical4j.model.property.Created;
50 import net.fortuna.ical4j.model.property.Description;
51 import net.fortuna.ical4j.model.property.DtEnd;
52 import net.fortuna.ical4j.model.property.DtStamp;
53 import net.fortuna.ical4j.model.property.DtStart;
54 import net.fortuna.ical4j.model.property.Due;
55 import net.fortuna.ical4j.model.property.Duration;
56 import net.fortuna.ical4j.model.property.ExDate;
57 import net.fortuna.ical4j.model.property.ExRule;
58 import net.fortuna.ical4j.model.property.Geo;
59 import net.fortuna.ical4j.model.property.LastModified;
60 import net.fortuna.ical4j.model.property.Location;
61 import net.fortuna.ical4j.model.property.Method;
62 import net.fortuna.ical4j.model.property.Organizer;
63 import net.fortuna.ical4j.model.property.PercentComplete;
64 import net.fortuna.ical4j.model.property.Priority;
65 import net.fortuna.ical4j.model.property.ProdId;
66 import net.fortuna.ical4j.model.property.RDate;
67 import net.fortuna.ical4j.model.property.RRule;
68 import net.fortuna.ical4j.model.property.RecurrenceId;
69 import net.fortuna.ical4j.model.property.RelatedTo;
70 import net.fortuna.ical4j.model.property.Repeat;
71 import net.fortuna.ical4j.model.property.RequestStatus;
72 import net.fortuna.ical4j.model.property.Resources;
73 import net.fortuna.ical4j.model.property.Sequence;
74 import net.fortuna.ical4j.model.property.Status;
75 import net.fortuna.ical4j.model.property.Summary;
76 import net.fortuna.ical4j.model.property.Trigger;
77 import net.fortuna.ical4j.model.property.TzId;
78 import net.fortuna.ical4j.model.property.TzName;
79 import net.fortuna.ical4j.model.property.TzOffsetFrom;
80 import net.fortuna.ical4j.model.property.TzOffsetTo;
81 import net.fortuna.ical4j.model.property.TzUrl;
82 import net.fortuna.ical4j.model.property.Uid;
83 import net.fortuna.ical4j.model.property.Url;
84 import net.fortuna.ical4j.model.property.Version;
85 import net.fortuna.ical4j.model.property.XProperty;
86
87 /***
88 * A factory for creating iCalendar properties.
89 *
90 * @author benfortuna
91 */
92 public final class PropertyFactory {
93
94 private static PropertyFactory instance = new PropertyFactory();
95
96 /***
97 * Constructor made private to prevent instantiation.
98 */
99 private PropertyFactory() {
100 }
101
102 /***
103 * @return Returns the instance.
104 */
105 public static PropertyFactory getInstance() {
106 return instance;
107 }
108
109 /***
110 * Creates a property.
111 *
112 * @param name
113 * name of the property
114 * @param parameters
115 * a list of property parameters
116 * @param value
117 * a property value
118 * @return a component
119 */
120 public Property createProperty(final String name,
121 final ParameterList parameters, final String value)
122 throws IOException, URISyntaxException, ParseException {
123
124
125 if (Property.CALSCALE.equals(name)) {
126 return new CalScale(parameters, value);
127 }
128 else if (Property.METHOD.equals(name)) {
129 return new Method(parameters, value);
130 }
131 else if (Property.PRODID.equals(name)) {
132 return new ProdId(parameters, value);
133 }
134 else if (Property.VERSION.equals(name)) {
135 return new Version(parameters, value);
136 }
137
138 else if (Property.ATTACH.equals(name)) {
139 return new Attach(parameters, value);
140 }
141 else if (Property.CATEGORIES.equals(name)) {
142 return new Categories(parameters, value);
143 }
144 else if (Property.CLASS.equals(name)) {
145 return new Clazz(parameters, value);
146 }
147 else if (Property.COMMENT.equals(name)) {
148 return new Comment(parameters, value);
149 }
150 else if (Property.DESCRIPTION.equals(name)) {
151 return new Description(parameters, value);
152 }
153 else if (Property.GEO.equals(name)) {
154 return new Geo(parameters, value);
155 }
156 else if (Property.LOCATION.equals(name)) {
157 return new Location(parameters, value);
158 }
159 else if (Property.PERCENT_COMPLETE.equals(name)) {
160 return new PercentComplete(parameters, value);
161 }
162 else if (Property.PRIORITY.equals(name)) {
163 return new Priority(parameters, value);
164 }
165 else if (Property.RESOURCES.equals(name)) {
166 return new Resources(parameters, value);
167 }
168 else if (Property.STATUS.equals(name)) {
169 return new Status(parameters, value);
170 }
171 else if (Property.SUMMARY.equals(name)) {
172 return new Summary(parameters, value);
173 }
174 else if (Property.COMPLETED.equals(name)) {
175 return new Completed(parameters, value);
176 }
177 else if (Property.DTEND.equals(name)) {
178 return new DtEnd(parameters, value);
179 }
180 else if (Property.DUE.equals(name)) {
181 return new Due(parameters, value);
182 }
183 else if (Property.DTSTART.equals(name)) {
184 return new DtStart(parameters, value);
185 }
186 else if (Property.DURATION.equals(name)) {
187 return new Duration(parameters, value);
188 }
189
190 else if (Property.TZID.equals(name)) {
191 return new TzId(parameters, value);
192 }
193 else if (Property.TZNAME.equals(name)) {
194 return new TzName(parameters, value);
195 }
196 else if (Property.TZOFFSETFROM.equals(name)) {
197 return new TzOffsetFrom(parameters, value);
198 }
199 else if (Property.TZOFFSETTO.equals(name)) {
200 return new TzOffsetTo(parameters, value);
201 }
202 else if (Property.TZURL.equals(name)) {
203 return new TzUrl(parameters, value);
204 }
205
206 else if (Property.ATTENDEE.equals(name)) {
207 return new Attendee(parameters, value);
208 }
209 else if (Property.CONTACT.equals(name)) {
210 return new Contact(parameters, value);
211 }
212 else if (Property.ORGANIZER.equals(name)) {
213 return new Organizer(parameters, value);
214 }
215 else if (Property.RECURRENCE_ID.equals(name)) {
216 return new RecurrenceId(parameters, value);
217 }
218 else if (Property.RELATED_TO.equals(name)) {
219 return new RelatedTo(parameters, value);
220 }
221 else if (Property.URL.equals(name)) {
222 return new Url(parameters, value);
223 }
224 else if (Property.UID.equals(name)) {
225 return new Uid(parameters, value);
226 }
227
228 else if (Property.EXDATE.equals(name)) {
229 return new ExDate(parameters, value);
230 }
231 else if (Property.EXRULE.equals(name)) {
232 return new ExRule(parameters, value);
233 }
234 else if (Property.RDATE.equals(name)) {
235 return new RDate(parameters, value);
236 }
237 else if (Property.RRULE.equals(name)) {
238 return new RRule(parameters, value);
239 }
240
241 else if (Property.ACTION.equals(name)) {
242 return new Action(parameters, value);
243 }
244 else if (Property.REPEAT.equals(name)) {
245 return new Repeat(parameters, value);
246 }
247 else if (Property.TRIGGER.equals(name)) {
248 return new Trigger(parameters, value);
249 }
250
251 else if (Property.CREATED.equals(name)) {
252 return new Created(parameters, value);
253 }
254 else if (Property.DTSTAMP.equals(name)) {
255 return new DtStamp(parameters, value);
256 }
257 else if (Property.LAST_MODIFIED.equals(name)) {
258 return new LastModified(parameters, value);
259 }
260 else if (Property.SEQUENCE.equals(name)) {
261 return new Sequence(parameters, value);
262 }
263
264 else if (Property.REQUEST_STATUS.equals(name)) {
265 return new RequestStatus(parameters, value);
266 }
267
268 else {
269 return new XProperty(name, parameters, value);
270 }
271 }
272 }