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 Haeberling 14f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 15f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling/** 16f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Options for XMPSchemaRegistryImpl#registerAlias. 17f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * 18f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @since 20.02.2006 19f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 20f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpublic final class AliasOptions extends Options 21f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling{ 22f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** This is a direct mapping. The actual data type does not matter. */ 23f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int PROP_DIRECT = 0; 24f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** The actual is an unordered array, the alias is to the first element of the array. */ 25f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int PROP_ARRAY = PropertyOptions.ARRAY; 26f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** The actual is an ordered array, the alias is to the first element of the array. */ 27f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int PROP_ARRAY_ORDERED = PropertyOptions.ARRAY_ORDERED; 28f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** The actual is an alternate array, the alias is to the first element of the array. */ 29f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int PROP_ARRAY_ALTERNATE = PropertyOptions.ARRAY_ALTERNATE; 30f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 31f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The actual is an alternate text array, the alias is to the 'x-default' element of the array. 32f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 33f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static final int PROP_ARRAY_ALT_TEXT = PropertyOptions.ARRAY_ALT_TEXT; 34f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 35f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 36f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 37f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @see Options#Options() 38f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 39f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public AliasOptions() 40f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 41f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // EMPTY 42f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 43f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 44f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 45f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 46f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param options the options to init with 47f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException If options are not consistant 48f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 49f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public AliasOptions(int options) throws XMPException 50f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 51f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling super(options); 52f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 53f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 54f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 55f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 56f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns if the alias is of the simple form. 57f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 58f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean isSimple() 59f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 60f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOptions() == PROP_DIRECT; 61f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 62f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 63f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 64f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 65f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 66f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 67f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean isArray() 68f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 69f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(PROP_ARRAY); 70f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 71f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 72f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 73f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 74f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 75f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 76f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 77f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public AliasOptions setArray(boolean value) 78f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 79f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(PROP_ARRAY, value); 80f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 81f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 82f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 83f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 84f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 85f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 86f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 87f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean isArrayOrdered() 88f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 89f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(PROP_ARRAY_ORDERED); 90f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 91f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 92f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 93f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 94f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 95f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 96f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 97f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public AliasOptions setArrayOrdered(boolean value) 98f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 99f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(PROP_ARRAY | PROP_ARRAY_ORDERED, value); 100f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 101f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 102f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 103f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 104f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 105f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 106f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 107f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean isArrayAlternate() 108f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 109f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(PROP_ARRAY_ALTERNATE); 110f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 111f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 112f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 113f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 114f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 115f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 116f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 117f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public AliasOptions setArrayAlternate(boolean value) 118f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 119f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(PROP_ARRAY | PROP_ARRAY_ORDERED | PROP_ARRAY_ALTERNATE, value); 120f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 121f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 122f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 123f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 124f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 125f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the option. 126f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 127f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public boolean isArrayAltText() 128f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 129f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return getOption(PROP_ARRAY_ALT_TEXT); 130f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 131f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 132f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 133f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 134f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param value the value to set 135f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the instance to call more set-methods. 136f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 137f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public AliasOptions setArrayAltText(boolean value) 138f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 139f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling setOption(PROP_ARRAY | PROP_ARRAY_ORDERED | 140f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling PROP_ARRAY_ALTERNATE | PROP_ARRAY_ALT_TEXT, value); 141f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return this; 142f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 143f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 144f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 145f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 146f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return returns a {@link PropertyOptions}s object 147f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException If the options are not consistant. 148f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 149f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public PropertyOptions toPropertyOptions() throws XMPException 150f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 151f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return new PropertyOptions(getOptions()); 152f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 153f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 154f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 155f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 156f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @see Options#defineOptionName(int) 157f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 158f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling protected String defineOptionName(int option) 159f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 160f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling switch (option) 161f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 162f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case PROP_DIRECT : return "PROP_DIRECT"; 163f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case PROP_ARRAY : return "ARRAY"; 164f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case PROP_ARRAY_ORDERED : return "ARRAY_ORDERED"; 165f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case PROP_ARRAY_ALTERNATE : return "ARRAY_ALTERNATE"; 166f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling case PROP_ARRAY_ALT_TEXT : return "ARRAY_ALT_TEXT"; 167f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling default: return null; 168f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 169f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 170f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 171f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 172f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 173f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @see Options#getValidOptions() 174f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 175f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling protected int getValidOptions() 176f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 177f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling return 178f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling PROP_DIRECT | 179f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling PROP_ARRAY | 180f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling PROP_ARRAY_ORDERED | 181f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling PROP_ARRAY_ALTERNATE | 182f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling PROP_ARRAY_ALT_TEXT; 183f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 184f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling}