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}