src/net/fortuna/ical4j/util/CompatibilityHints.java

Tue, 10 Feb 2015 18:12:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 10 Feb 2015 18:12:00 +0100
changeset 0
fb9019fb1bf7
child 3
73bdfa70b04e
permissions
-rw-r--r--

Import initial revisions of existing project AndroidCaldavSyncAdapater,
forked from upstream repository at 27e8a0f8495c92e0780d450bdf0c7cec77a03a55.

michael@0 1 /**
michael@0 2 * Copyright (c) 2012, Ben Fortuna
michael@0 3 * All rights reserved.
michael@0 4 *
michael@0 5 * Redistribution and use in source and binary forms, with or without
michael@0 6 * modification, are permitted provided that the following conditions
michael@0 7 * are met:
michael@0 8 *
michael@0 9 * o Redistributions of source code must retain the above copyright
michael@0 10 * notice, this list of conditions and the following disclaimer.
michael@0 11 *
michael@0 12 * o Redistributions in binary form must reproduce the above copyright
michael@0 13 * notice, this list of conditions and the following disclaimer in the
michael@0 14 * documentation and/or other materials provided with the distribution.
michael@0 15 *
michael@0 16 * o Neither the name of Ben Fortuna nor the names of any other contributors
michael@0 17 * may be used to endorse or promote products derived from this software
michael@0 18 * without specific prior written permission.
michael@0 19 *
michael@0 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
michael@0 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
michael@0 22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
michael@0 23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
michael@0 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
michael@0 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
michael@0 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
michael@0 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
michael@0 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
michael@0 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
michael@0 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
michael@0 31 */
michael@0 32 package net.fortuna.ical4j.util;
michael@0 33
michael@0 34 import java.util.Map;
michael@0 35
michael@0 36 import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
michael@0 37
michael@0 38 /**
michael@0 39 * $Id$
michael@0 40 *
michael@0 41 * Created on 9/03/2006
michael@0 42 *
michael@0 43 * A set of keys used to enable compatibility features.
michael@0 44 *
michael@0 45 * @author Ben Fortuna
michael@0 46 */
michael@0 47 public final class CompatibilityHints {
michael@0 48
michael@0 49 /**
michael@0 50 * A system property key to enable relaxed unfolding. Relaxed unfolding is enabled by setting this system property
michael@0 51 * to "true".
michael@0 52 */
michael@0 53 public static final String KEY_RELAXED_UNFOLDING = "ical4j.unfolding.relaxed";
michael@0 54
michael@0 55 /**
michael@0 56 * A system property key to enable relaxed parsing. Relaxed parsing is enabled by setting this system property to
michael@0 57 * "true".
michael@0 58 */
michael@0 59 public static final String KEY_RELAXED_PARSING = "ical4j.parsing.relaxed";
michael@0 60
michael@0 61 /**
michael@0 62 * A system property key to enable relaxed validation. Relaxed validation disables validation of certain conformance
michael@0 63 * rules that many iCalendar implementations do not conform to. Relaxed validation is enabled by setting this system
michael@0 64 * property to "true".
michael@0 65 */
michael@0 66 public static final String KEY_RELAXED_VALIDATION = "ical4j.validation.relaxed";
michael@0 67
michael@0 68 /**
michael@0 69 * A system property key used to enable compatibility with Outlook/Exchange-generated iCalendar files. Outlook
michael@0 70 * compatibility is enabled by setting this system property to "true".
michael@0 71 */
michael@0 72 public static final String KEY_OUTLOOK_COMPATIBILITY = "ical4j.compatibility.outlook";
michael@0 73
michael@0 74 /**
michael@0 75 * A system property key used to enable compatibility with Lotus Notes-generated iCalendar files. Notes
michael@0 76 * compatibility is enabled by setting this system property to "true".
michael@0 77 */
michael@0 78 public static final String KEY_NOTES_COMPATIBILITY = "ical4j.compatibility.notes";
michael@0 79
michael@0 80 private static final Map HINTS = new ConcurrentHashMap();
michael@0 81 // preload known hints from the configurator
michael@0 82 static {
michael@0 83 setHintEnabled(KEY_RELAXED_UNFOLDING, "true".equals(Configurator.getProperty(KEY_RELAXED_UNFOLDING)));
michael@0 84 setHintEnabled(KEY_RELAXED_PARSING, "true".equals(Configurator.getProperty(KEY_RELAXED_PARSING)));
michael@0 85 setHintEnabled(KEY_RELAXED_VALIDATION, "true".equals(Configurator.getProperty(KEY_RELAXED_VALIDATION)));
michael@0 86 setHintEnabled(KEY_OUTLOOK_COMPATIBILITY, "true".equals(Configurator.getProperty(KEY_OUTLOOK_COMPATIBILITY)));
michael@0 87 setHintEnabled(KEY_NOTES_COMPATIBILITY, "true".equals(Configurator.getProperty(KEY_NOTES_COMPATIBILITY)));
michael@0 88 }
michael@0 89
michael@0 90 /**
michael@0 91 * Constructor made private to enforce static nature.
michael@0 92 */
michael@0 93 private CompatibilityHints() {
michael@0 94 }
michael@0 95
michael@0 96 /**
michael@0 97 * @param key
michael@0 98 * a compatibility hint key
michael@0 99 * @param enabled
michael@0 100 * indicates whether to enable or disable the compatibility hint
michael@0 101 */
michael@0 102 public static void setHintEnabled(final String key, final boolean enabled) {
michael@0 103 HINTS.put(key, Boolean.valueOf(enabled));
michael@0 104 }
michael@0 105
michael@0 106 /**
michael@0 107 * @param key
michael@0 108 * a compatibility hint key
michael@0 109 */
michael@0 110 public static void clearHintEnabled(final String key) {
michael@0 111 HINTS.remove(key);
michael@0 112 }
michael@0 113
michael@0 114 /**
michael@0 115 * @param key
michael@0 116 * a compatibility hint key
michael@0 117 * @return true if the specified compatibility hint is enabled, otherwise false
michael@0 118 */
michael@0 119 public static boolean isHintEnabled(final String key) {
michael@0 120 if (HINTS.get(key) != null) {
michael@0 121 return ((Boolean) HINTS.get(key)).booleanValue();
michael@0 122 }
michael@0 123 return "true".equals(Configurator.getProperty(key));
michael@0 124 }
michael@0 125 }

mercurial