src/net/fortuna/ical4j/model/parameter/Encoding.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
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.model.parameter;
michael@0 33
michael@0 34 import net.fortuna.ical4j.model.Parameter;
michael@0 35 import net.fortuna.ical4j.model.ParameterFactoryImpl;
michael@0 36 import net.fortuna.ical4j.util.Strings;
michael@0 37
michael@0 38 /**
michael@0 39 * $Id$ [18-Apr-2004]
michael@0 40 *
michael@0 41 * Defines an Inline Encoding parameter. Constants are provided for all encodings specified in <a
michael@0 42 * href="http://www.ietf.org/rfc/rfc2045.txt">RFC2045</a>.
michael@0 43 *
michael@0 44 * <pre>
michael@0 45 * 4.2.7 Inline Encoding
michael@0 46 *
michael@0 47 * Parameter Name: ENCODING
michael@0 48 *
michael@0 49 * Purpose: To specify an alternate inline encoding for the property
michael@0 50 * value.
michael@0 51 *
michael@0 52 * Format Definition: The property parameter is defined by the following
michael@0 53 * notation:
michael@0 54 *
michael@0 55 * encodingparam = &quot;ENCODING&quot; &quot;=&quot;
michael@0 56 * (&quot;8BIT&quot;
michael@0 57 * ; &quot;8bit&quot; text encoding is defined in [RFC 2045]
michael@0 58 * / &quot;BASE64&quot;
michael@0 59 * ; &quot;BASE64&quot; binary encoding format is defined in [RFC 2045]
michael@0 60 * / iana-token
michael@0 61 * ; Some other IANA registered iCalendar encoding type
michael@0 62 * / x-name)
michael@0 63 * ; A non-standard, experimental encoding type
michael@0 64 *
michael@0 65 * Description: The property parameter identifies the inline encoding
michael@0 66 * used in a property value. The default encoding is &quot;8BIT&quot;,
michael@0 67 * corresponding to a property value consisting of text. The &quot;BASE64&quot;
michael@0 68 * encoding type corresponds to a property value encoded using the
michael@0 69 * &quot;BASE64&quot; encoding defined in [RFC 2045].
michael@0 70 *
michael@0 71 * If the value type parameter is &quot;;VALUE=BINARY&quot;, then the inline
michael@0 72 * encoding parameter MUST be specified with the value
michael@0 73 * &quot;;ENCODING=BASE64&quot;.
michael@0 74 *
michael@0 75 * Example:
michael@0 76 *
michael@0 77 * ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC
michael@0 78 * CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA
michael@0 79 * qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw
michael@0 80 * &lt;...remainder of &quot;BASE64&quot; encoded binary data...&gt;
michael@0 81 * </pre>
michael@0 82 *
michael@0 83 * @author Ben Fortuna
michael@0 84 */
michael@0 85 public class Encoding extends Parameter {
michael@0 86
michael@0 87 private static final long serialVersionUID = 7536336461076399077L;
michael@0 88
michael@0 89 private static final String VALUE_SEVEN_BIT = "7BIT";
michael@0 90
michael@0 91 private static final String VALUE_EIGHT_BIT = "8BIT";
michael@0 92
michael@0 93 private static final String VALUE_BINARY = "BINARY";
michael@0 94
michael@0 95 private static final String VALUE_QUOTED_PRINTABLE = "QUOTED-PRINTABLE";
michael@0 96
michael@0 97 private static final String VALUE_BASE64 = "BASE64";
michael@0 98
michael@0 99 /**
michael@0 100 * 7 bit encoding.
michael@0 101 */
michael@0 102 public static final Encoding SEVEN_BIT = new Encoding(VALUE_SEVEN_BIT);
michael@0 103
michael@0 104 /**
michael@0 105 * 8 bit encoding.
michael@0 106 */
michael@0 107 public static final Encoding EIGHT_BIT = new Encoding(VALUE_EIGHT_BIT);
michael@0 108
michael@0 109 /**
michael@0 110 * Binary encoding.
michael@0 111 */
michael@0 112 public static final Encoding BINARY = new Encoding(VALUE_BINARY);
michael@0 113
michael@0 114 /**
michael@0 115 * Quoted printable encoding.
michael@0 116 */
michael@0 117 public static final Encoding QUOTED_PRINTABLE = new Encoding(
michael@0 118 VALUE_QUOTED_PRINTABLE);
michael@0 119
michael@0 120 /**
michael@0 121 * Base64 encoding.
michael@0 122 */
michael@0 123 public static final Encoding BASE64 = new Encoding(VALUE_BASE64);
michael@0 124
michael@0 125 private String value;
michael@0 126
michael@0 127 /**
michael@0 128 * @param aValue a string representation of an Inline Encoding
michael@0 129 */
michael@0 130 public Encoding(final String aValue) {
michael@0 131 super(ENCODING, ParameterFactoryImpl.getInstance());
michael@0 132 this.value = Strings.unquote(aValue);
michael@0 133 }
michael@0 134
michael@0 135 /**
michael@0 136 * {@inheritDoc}
michael@0 137 */
michael@0 138 public final String getValue() {
michael@0 139 return value;
michael@0 140 }
michael@0 141 }

mercurial