Tue, 10 Feb 2015 18:12:00 +0100
Import initial revisions of existing project AndroidCaldavSyncAdapater,
forked from upstream repository at 27e8a0f8495c92e0780d450bdf0c7cec77a03a55.
1 /**
2 * Copyright (c) 2012, Ben Fortuna
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * o Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * o Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * o Neither the name of Ben Fortuna nor the names of any other contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32 package net.fortuna.ical4j.model.property;
34 import net.fortuna.ical4j.model.DateTime;
35 import net.fortuna.ical4j.model.ParameterList;
36 import net.fortuna.ical4j.model.PropertyFactory;
37 import net.fortuna.ical4j.model.TimeZone;
38 import net.fortuna.ical4j.model.ValidationException;
40 /**
41 * $Id$
42 *
43 * Created on 8/08/2005
44 *
45 * Superclass for all properties with date-time values that must be specified in UTC time.
46 * @author Ben Fortuna
47 */
48 public abstract class UtcProperty extends DateProperty {
50 /**
51 *
52 */
53 private static final long serialVersionUID = 4850079486497487938L;
55 /**
56 * @param name a property name
57 * @param parameters list of parameters
58 */
59 public UtcProperty(final String name, final ParameterList parameters, PropertyFactory factory) {
60 super(name, parameters, factory);
61 setDate(new DateTime(true));
62 }
64 /**
65 * @param name a property name
66 */
67 public UtcProperty(final String name, PropertyFactory factory) {
68 super(name, factory);
69 setDate(new DateTime(true));
70 }
72 /**
73 * @return Returns the date-time.
74 */
75 public final DateTime getDateTime() {
76 return (DateTime) getDate();
77 }
79 /**
80 * @param dateTime The dateTime to set.
81 */
82 public void setDateTime(final DateTime dateTime) {
83 // time must be in UTC..
84 if (dateTime != null) {
85 final DateTime utcDateTime = new DateTime(dateTime);
86 utcDateTime.setUtc(true);
87 setDate(utcDateTime);
88 }
89 else {
90 setDate(dateTime);
91 }
92 }
94 /**
95 * {@inheritDoc}
96 */
97 public void setTimeZone(TimeZone timezone) {
98 throw new UnsupportedOperationException("Cannot set timezone for UTC properties");
99 }
101 /**
102 * {@inheritDoc}
103 */
104 public void validate() throws ValidationException {
105 super.validate();
107 if (getDate() != null && !(getDate() instanceof DateTime)) {
108 throw new ValidationException(
109 "Property must have a DATE-TIME value");
110 }
112 final DateTime dateTime = (DateTime) getDate();
114 if (dateTime != null && !dateTime.isUtc()) {
115 throw new ValidationException(getName() +
116 ": DATE-TIME value must be specified in UTC time");
117 }
118 }
119 }