All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.ical.values.RDateList Maven / Gradle / Ivy

The newest version!
// Copyright (C) 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.ical.values;

import java.text.ParseException;
import java.util.Map;
import java.util.TimeZone;

/**
 * a list of dates, as from an RDATE or EXDATE ical property.
 *
 * 

See RFC 2445 sections 4.8.5.1 and 4.8.5.3. * * @author [email protected] (Mike Samuel) */ public class RDateList extends AbstractIcalObject { private TimeZone tzid; private DateValue[] datesUtc; private IcalValueType valueType; public RDateList(String icalString, TimeZone tzid) throws ParseException { setTzid(tzid); parse(icalString, RRuleSchema.instance()); } public RDateList(TimeZone tzid) { setTzid(tzid); setName("RDATE"); datesUtc = new DateValue[0]; } public TimeZone getTzid() { return this.tzid; } public void setTzid(TimeZone tzid) { assert null != tzid; this.tzid = tzid; } public DateValue[] getDatesUtc() { return null != this.datesUtc ? this.datesUtc.clone() : null; } public void setDatesUtc(DateValue[] datesUtc) { this.datesUtc = datesUtc.clone(); if (datesUtc.length > 0) { setValueType((datesUtc[0] instanceof TimeValue) ? IcalValueType.DATE_TIME : IcalValueType.DATE); } } /** * the type of the values contained by this list as reported by the ical * "VALUE" parameter, typically DATE or DATE-TIME. */ public IcalValueType getValueType() { return valueType; } public void setValueType(IcalValueType valueType) { this.valueType = valueType; } /** returns a String containing ical content lines. */ public String toIcal() { StringBuilder buf = new StringBuilder(); buf.append(this.getName().toUpperCase()); buf.append(";TZID=\"").append(tzid.getID()).append('"'); buf.append(";VALUE=").append(valueType.toIcal()); if (hasExtParams()) { for (Map.Entry param : getExtParams().entrySet()) { String k = param.getKey(), v = param.getValue(); if (ICAL_SPECIALS.matcher(v).find()) { v = "\"" + v + "\""; } buf.append(';').append(k).append('=').append(v); } } buf.append(':'); for (int i = 0; i < datesUtc.length; ++i) { if (0 != i) { buf.append(','); } DateValue v = datesUtc[i]; buf.append(v); if (v instanceof TimeValue) { buf.append('Z'); } } return buf.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy