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

net.fortuna.ical4j.model.parameter.Encoding Maven / Gradle / Ivy

There is a newer version: 4.0.4
Show newest version
/**
 * Copyright (c) 2012, Ben Fortuna
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  o Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *
 *  o Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 *
 *  o Neither the name of Ben Fortuna nor the names of any other contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package net.fortuna.ical4j.model.parameter;

import net.fortuna.ical4j.model.Content;
import net.fortuna.ical4j.model.Encodable;
import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.ParameterFactory;
import net.fortuna.ical4j.util.Strings;

import java.net.URISyntaxException;

/**
 * $Id$ [18-Apr-2004]
 * 

* Defines an Inline Encoding parameter. Constants are provided for all encodings specified in RFC2045. *

*

 *  4.2.7 Inline Encoding
 *
 *     Parameter Name: ENCODING
 *
 *     Purpose: To specify an alternate inline encoding for the property
 *     value.
 *
 *     Format Definition: The property parameter is defined by the following
 *     notation:
 *
 *       encodingparam      = "ENCODING" "="
 *                            ("8BIT"
 *          ; "8bit" text encoding is defined in [RFC 2045]
 *                          / "BASE64"
 *          ; "BASE64" binary encoding format is defined in [RFC 2045]
 *                          / iana-token
 *          ; Some other IANA registered iCalendar encoding type
 *                          / x-name)
 *          ; A non-standard, experimental encoding type
 *
 *     Description: The property parameter identifies the inline encoding
 *     used in a property value. The default encoding is "8BIT",
 *     corresponding to a property value consisting of text. The "BASE64"
 *     encoding type corresponds to a property value encoded using the
 *     "BASE64" encoding defined in [RFC 2045].
 *
 *     If the value type parameter is ";VALUE=BINARY", then the inline
 *     encoding parameter MUST be specified with the value
 *     ";ENCODING=BASE64".
 *
 *     Example:
 *
 *       ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC
 *        CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA
 *        qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw
 *        <...remainder of "BASE64" encoded binary data...>
 * 
* * @author Ben Fortuna */ public class Encoding extends Parameter implements Encodable { private static final long serialVersionUID = 7536336461076399077L; private static final String VALUE_SEVEN_BIT = "7BIT"; private static final String VALUE_EIGHT_BIT = "8BIT"; private static final String VALUE_BINARY = "BINARY"; private static final String VALUE_QUOTED_PRINTABLE = "QUOTED-PRINTABLE"; private static final String VALUE_BASE64 = "BASE64"; /** * 7 bit encoding. */ public static final Encoding SEVEN_BIT = new Encoding(VALUE_SEVEN_BIT); /** * 8 bit encoding. */ public static final Encoding EIGHT_BIT = new Encoding(VALUE_EIGHT_BIT); /** * Binary encoding. */ public static final Encoding BINARY = new Encoding(VALUE_BINARY); /** * Quoted printable encoding. */ public static final Encoding QUOTED_PRINTABLE = new Encoding( VALUE_QUOTED_PRINTABLE); /** * Base64 encoding. */ public static final Encoding BASE64 = new Encoding(VALUE_BASE64); private final String value; /** * @param aValue a string representation of an Inline Encoding */ public Encoding(final String aValue) { super(ENCODING, new Factory()); this.value = Strings.unquote(aValue); } /** * {@inheritDoc} */ @Override public final String getValue() { return value; } public static class Factory extends Content.Factory implements ParameterFactory { private static final long serialVersionUID = 1L; public Factory() { super(ENCODING); } @Override public Encoding createParameter(final String value) throws URISyntaxException { switch (value) { case VALUE_BASE64: return BASE64; case VALUE_BINARY: return BINARY; case VALUE_EIGHT_BIT: return EIGHT_BIT; case VALUE_QUOTED_PRINTABLE: return QUOTED_PRINTABLE; case VALUE_SEVEN_BIT: return SEVEN_BIT; } return new Encoding(value); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy