1f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ================================================================================================= 2f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ADOBE SYSTEMS INCORPORATED 3f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// Copyright 2006 Adobe Systems Incorporated 4f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// All Rights Reserved 5f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// 6f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms 7f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// of the Adobe license agreement accompanying it. 8f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ================================================================================================= 9f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 10f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpackage com.adobe.xmp.options; 11f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 12f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPException; 13f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPMeta; 14f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPMetaFactory; 15f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 16f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 17f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling/** 18f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Options for {@link XMPMetaFactory#serializeToBuffer(XMPMeta, SerializeOptions)}. 19f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * 20f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @since 24.01.2006 21f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 22f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpublic final class SerializeOptions extends Options 23f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling{ 24f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Omit the XML packet wrapper. */ 25f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int OMIT_PACKET_WRAPPER = 0x0010; 26f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Mark packet as read-only. Default is a writeable packet. */ 27f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int READONLY_PACKET = 0x0020; 28f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Use a compact form of RDF. */ 29f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int USE_COMPACT_FORMAT = 0x0040; 30f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 31f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Include a padding allowance for a thumbnail image. If no <tt>xmp:Thumbnails</tt> property 32f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * is present, the typical space for a JPEG thumbnail is used. 33f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 34f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int INCLUDE_THUMBNAIL_PAD = 0x0100; 35f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 36f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The padding parameter provides the overall packet length. The actual amount of padding is 37f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * computed. An exception is thrown if the packet exceeds this length with no padding. 38f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 39f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int EXACT_PACKET_LENGTH = 0x0200; 40f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Sort the struct properties and qualifier before serializing */ 41f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int SORT = 0x1000; 42f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 43f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // --------------------------------------------------------------------------------------------- 44f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // encoding bit constants 45f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 46f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Bit indicating little endian encoding, unset is big endian */ 47f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private static final int LITTLEENDIAN_BIT = 0x0001; 48f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Bit indication UTF16 encoding. */ 49f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private static final int UTF16_BIT = 0x0002; 50f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** UTF8 encoding; this is the default */ 51f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int ENCODE_UTF8 = 0; 52f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** UTF16BE encoding */ 53f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int ENCODE_UTF16BE = UTF16_BIT; 54f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** UTF16LE encoding */ 55f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int ENCODE_UTF16LE = UTF16_BIT | LITTLEENDIAN_BIT; 56f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** */ 57f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private static final int ENCODING_MASK = UTF16_BIT | LITTLEENDIAN_BIT; 58f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 59f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 60f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The amount of padding to be added if a writeable XML packet is created. If zero is passed 61f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * (the default) an appropriate amount of padding is computed. 62f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 63f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private int padding = 2048; 64f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 65f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The string to be used as a line terminator. If empty it defaults to; linefeed, U+000A, the 66f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * standard XML newline. 67f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 68f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private String newline = "\n"; 69f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 70f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The string to be used for each level of indentation in the serialized 71f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * RDF. If empty it defaults to two ASCII spaces, U+0020. 72f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 73f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private String indent = " "; 74f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 75f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The number of levels of indentation to be used for the outermost XML element in the 76f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * serialized RDF. This is convenient when embedding the RDF in other text, defaults to 0. 77f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 78f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private int baseIndent = 0; 79f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** Omits the Toolkit version attribute, not published, only used for Unit tests. */ 80f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private boolean omitVersionAttribute = false; 81f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 82f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 83f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 84f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Default constructor. 85f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 86f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions() 87f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 88f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // reveal default constructor 89f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 90f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 91f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 92f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 93f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Constructor using inital options 94f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param options the inital options 95f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Thrown if options are not consistant. 96f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 97f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions(int options) throws XMPException 98f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 99f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling super(options); 100f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 101f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 102f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 103f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 104f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 105f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 106f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getOmitPacketWrapper() 107f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 108f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(OMIT_PACKET_WRAPPER); 109f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 110f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 111f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 112f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 113f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 114f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 115f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 116f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setOmitPacketWrapper(boolean value) 117f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 118f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(OMIT_PACKET_WRAPPER, value); 119f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 120f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 121f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 122f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 123f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 124f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 125f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 126f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getReadOnlyPacket() 127f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 128f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(READONLY_PACKET); 129f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 130f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 131f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 132f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 133f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 134f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 135f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 136f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setReadOnlyPacket(boolean value) 137f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 138f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(READONLY_PACKET, value); 139f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 140f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 141f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 142f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 143f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 144f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 145f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 146f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getUseCompactFormat() 147f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 148f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(USE_COMPACT_FORMAT); 149f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 150f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 151f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 152f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 153f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 154f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 155f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 156f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setUseCompactFormat(boolean value) 157f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 158f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(USE_COMPACT_FORMAT, value); 159f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 160f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 161f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 162f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 163f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 164f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 165f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getIncludeThumbnailPad() 166f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 167f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(INCLUDE_THUMBNAIL_PAD); 168f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 169f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 170f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 171f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 172f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 173f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 174f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 175f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setIncludeThumbnailPad(boolean value) 176f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 177f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(INCLUDE_THUMBNAIL_PAD, value); 178f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 179f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 180f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 181f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 182f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 183f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 184f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 185f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getExactPacketLength() 186f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 187f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(EXACT_PACKET_LENGTH); 188f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 189f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 190f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 191f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 192f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 193f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 194f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 195f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setExactPacketLength(boolean value) 196f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 197f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(EXACT_PACKET_LENGTH, value); 198f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 199f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 200f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 201f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 202f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 203f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 204f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 205f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getSort() 206f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 207f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(SORT); 208f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 209f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 210f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 211f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 212f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 213f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 214f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 215f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setSort(boolean value) 216f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 217f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(SORT, value); 218f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 219f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 220f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 221f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 222f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 223f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 224f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 225f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getEncodeUTF16BE() 226f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 227f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return (getOptions() & ENCODING_MASK) == ENCODE_UTF16BE; 228f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 229f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 230f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 231f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 232f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 233f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 234f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 235f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setEncodeUTF16BE(boolean value) 236f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 237f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // clear unicode bits 238f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(UTF16_BIT | LITTLEENDIAN_BIT, false); 239f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(ENCODE_UTF16BE, value); 240f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 241f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 242f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 243f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 244f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 245f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 246f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 247f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getEncodeUTF16LE() 248f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 249f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return (getOptions() & ENCODING_MASK) == ENCODE_UTF16LE; 250f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 251f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 252f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 253f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 254f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 255f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 256f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 257f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setEncodeUTF16LE(boolean value) 258f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 259f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // clear unicode bits 260f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(UTF16_BIT | LITTLEENDIAN_BIT, false); 261f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(ENCODE_UTF16LE, value); 262f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 263f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 264f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 265f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 266f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 267f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the baseIndent. 268f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 269f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public int getBaseIndent() 270f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 271f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return baseIndent; 272f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 273f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 274f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 275f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 276f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param baseIndent 277f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The baseIndent to set. 278f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 279f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 280f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setBaseIndent(int baseIndent) 281f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 282f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling this.baseIndent = baseIndent; 283f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 284f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 285f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 286f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 287f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 288f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the indent. 289f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 290f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public String getIndent() 291f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 292f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return indent; 293f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 294f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 295f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 296f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 297f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param indent 298f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The indent to set. 299f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 300f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 301f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setIndent(String indent) 302f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 303f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling this.indent = indent; 304f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 305f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 306f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 307f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 308f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 309f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the newline. 310f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 311f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public String getNewline() 312f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 313f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return newline; 314f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 315f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 316f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 317f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 318f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param newline 319f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The newline to set. 320f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 321f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 322f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setNewline(String newline) 323f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 324f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling this.newline = newline; 325f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 326f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 327f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 328f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 329f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 330f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the padding. 331f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 332f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public int getPadding() 333f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 334f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return padding; 335f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 336f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 337f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 338f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 339f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param padding 340f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The padding to set. 341f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 342f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 343f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public SerializeOptions setPadding(int padding) 344f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 345f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling this.padding = padding; 346f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 347f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 348f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 349f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 350f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 351f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns whether the Toolkit version attribute shall be omitted. 352f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <em>Note:</em> This options can only be set by unit tests. 353f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 354f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean getOmitVersionAttribute() 355f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 356f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return omitVersionAttribute; 357f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 358f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 359f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 360f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 361f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the encoding as Java encoding String. 362f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 363f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public String getEncoding() 364f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 365f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (getEncodeUTF16BE()) 366f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 367f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return "UTF-16BE"; 368f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 369f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling else if (getEncodeUTF16LE()) 370f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 371f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return "UTF-16LE"; 372f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 373f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling else 374f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 375f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return "UTF-8"; 376f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 377f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 378f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 379f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 380f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 381f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * 382f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns clone of this SerializeOptions-object with the same options set. 383f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws CloneNotSupportedException Cannot happen in this place. 384f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 385f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public Object clone() throws CloneNotSupportedException 386f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 387f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling SerializeOptions clone; 388f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling try 389f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 390f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling clone = new SerializeOptions(getOptions()); 391f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling clone.setBaseIndent(baseIndent); 392f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling clone.setIndent(indent); 393f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling clone.setNewline(newline); 394f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling clone.setPadding(padding); 395f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return clone; 396f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 397f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling catch (XMPException e) 398f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 399f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // This cannot happen, the options are already checked in "this" object. 400f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return null; 401f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 402f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 403f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 404f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 405f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 406f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @see Options#defineOptionName(int) 407f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 408f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling protected String defineOptionName(int option) 409f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 410f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling switch (option) 411f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 412f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case OMIT_PACKET_WRAPPER : return "OMIT_PACKET_WRAPPER"; 413f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case READONLY_PACKET : return "READONLY_PACKET"; 414f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case USE_COMPACT_FORMAT : return "USE_COMPACT_FORMAT"; 415f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case INCLUDE_THUMBNAIL_PAD : return "INCLUDE_THUMBNAIL_PAD"; 416f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case EXACT_PACKET_LENGTH : return "EXACT_PACKET_LENGTH"; 417f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case SORT : return "NORMALIZED"; 418f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling default: return null; 419f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 420f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 421f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 422f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 423f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 424f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @see Options#getValidOptions() 425f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 426f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling protected int getValidOptions() 427f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 428f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return 429f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling OMIT_PACKET_WRAPPER | 430f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling READONLY_PACKET | 431f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling USE_COMPACT_FORMAT | 432f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling INCLUDE_THUMBNAIL_PAD | 433f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling EXACT_PACKET_LENGTH | 434f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling SORT; 435f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 436f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling}