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.impl.xpath;
11f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
12f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
13f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling/**
14f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * A segment of a parsed <code>XMPPath</code>.
15f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling *
16f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @since   23.06.2006
17f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */
18f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpublic class XMPPathSegment
19f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling{
20f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/** name of the path segment */
21f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	private String name;
22f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/** kind of the path segment */
23f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	private int kind;
24f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/** flag if segment is an alias */
25f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	private boolean alias;
26f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/** alias form if applicable */
27f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	private int aliasForm;
28f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
29f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
30f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
31f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * Constructor with initial values.
32f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 *
33f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param name the name of the segment
34f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
35f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public XMPPathSegment(String name)
36f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
37f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.name = name;
38f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
39f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
40f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
41f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
42f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * Constructor with initial values.
43f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 *
44f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param name the name of the segment
45f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param kind the kind of the segment
46f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
47f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public XMPPathSegment(String name, int kind)
48f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
49f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.name = name;
50f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.kind = kind;
51f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
52f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
53f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
54f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
55f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @return Returns the kind.
56f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
57f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public int getKind()
58f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
59f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		return kind;
60f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
61f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
62f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
63f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
64f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param kind The kind to set.
65f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
66f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public void setKind(int kind)
67f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
68f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.kind = kind;
69f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
70f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
71f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
72f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
73f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @return Returns the name.
74f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
75f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public String getName()
76f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
77f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		return name;
78f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
79f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
80f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
81f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
82f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param name The name to set.
83f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
84f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public void setName(String name)
85f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
86f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.name = name;
87f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
88f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
89f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
90f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
91f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param alias the flag to set
92f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
93f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public void setAlias(boolean alias)
94f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
95f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.alias = alias;
96f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
97f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
98f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
99f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
100f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @return Returns the alias.
101f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
102f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public boolean isAlias()
103f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
104f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		return alias;
105f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
106f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
107f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
108f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
109f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @return Returns the aliasForm if this segment has been created by an alias.
110f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
111f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public int getAliasForm()
112f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
113f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		return aliasForm;
114f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
115f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
116f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
117f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
118f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @param aliasForm the aliasForm to set
119f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
120f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public void setAliasForm(int aliasForm)
121f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
122f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		this.aliasForm = aliasForm;
123f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
124f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
125f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
126f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	/**
127f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 * @see Object#toString()
128f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	 */
129f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	public String toString()
130f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	{
131f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		switch (kind)
132f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		{
133f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			case XMPPath.STRUCT_FIELD_STEP:
134f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			case XMPPath.ARRAY_INDEX_STEP:
135f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			case XMPPath.QUALIFIER_STEP:
136f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			case XMPPath.ARRAY_LAST_STEP:
137f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling				return name;
138f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			case XMPPath.QUAL_SELECTOR_STEP:
139f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			case XMPPath.FIELD_SELECTOR_STEP:
140f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			return name;
141f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling
142f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		default:
143f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			// no defined step
144f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling			return name;
145f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling		}
146f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling	}
147f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling}
148