1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (c) 2001-2004 World Wide Web Consortium, (Massachusetts Institute
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of Technology, Institut National de Recherche en Informatique et en
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Automatique, Keio University). All Rights Reserved. This program is
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the W3C's Software Intellectual Property License. This
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * program is distributed in the hope that it will be useful, but WITHOUT ANY
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * FOR A PARTICULAR PURPOSE. See W3C License
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.w3.org/Consortium/Legal/ for more details.
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.w3c.domts;
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.xml.parsers.DocumentBuilderFactory;
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This class is an parser setting, such as non-validating or entity-expanding.
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author Curt Arnold @date 2 Feb 2002
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class DocumentBuilderSetting {
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * property name.
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  private final String property;
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   *   property value.
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  private final boolean value;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * strategy used to set or get property value.
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  private final DocumentBuilderSettingStrategy strategy;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * coalescing = true.
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting coalescing =
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "coalescing",
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.coalescing);
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * coalescing = false.
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notCoalescing =
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "coalescing",
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.coalescing);
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * expandEntityReferences = false.
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting expandEntityReferences =
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "expandEntityReferences",
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.expandEntityReferences);
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * expandEntityReferences = true.
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notExpandEntityReferences =
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "expandEntityReferences",
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.expandEntityReferences);
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * ignoringElementContentWhitespace = true.
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting ignoringElementContentWhitespace =
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "ignoringElementContentWhitespace",
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.ignoringElementContentWhitespace);
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * ignoringElementContentWhitespace = false.
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      notIgnoringElementContentWhitespace =
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "ignoringElementContentWhitespace",
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.ignoringElementContentWhitespace);
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * namespaceAware = true.
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting namespaceAware =
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "namespaceAware",
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.namespaceAware);
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * namespaceAware = false.
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notNamespaceAware =
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "namespaceAware",
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.namespaceAware);
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * validating = true.
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting validating =
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "validating",
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.validating);
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * validating = false.
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notValidating =
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "validating",
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.validating);
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * signed = true.
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting signed =
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "signed",
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.signed);
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * signed = false.
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notSigned =
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "signed",
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.signed);
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * hasNullString = true.
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting hasNullString =
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "hasNullString",
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.hasNullString);
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * hasNullString = false.
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notHasNullString =
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "hasNullString",
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.hasNullString);
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Schema validating enabled.
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting schemaValidating =
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "schemaValidating",
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.schemaValidating);
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Schema validating disabled.
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notSchemaValidating =
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "schemaValidating",
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.schemaValidating);
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Comments ignored.
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting ignoringComments =
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "ignoringComments",
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      true,
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.ignoringComments);
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Comments preserved.
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public static final DocumentBuilderSetting notIgnoringComments =
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      new DocumentBuilderSetting(
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      "ignoringComments",
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      false,
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy.ignoringComments);
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Protected constructor, use static members for supported settings.
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @param property property name, follows JAXP.
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @param value property value
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @param strategy strategy, may not be null
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  protected DocumentBuilderSetting(
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      String property,
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      boolean value,
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DocumentBuilderSettingStrategy strategy) {
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    if (property == null) {
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      throw new NullPointerException("property");
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.property = property;
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.value = value;
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.strategy = strategy;
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Returns true if the settings have a conflict or are identical.
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   *
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @param other
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   *            other setting, may not be null.
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @return true if this setting and the specified setting conflict
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public final boolean hasConflict(DocumentBuilderSetting other) {
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    if (other == null) {
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      throw new NullPointerException("other");
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    if (other == this) {
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      return true;
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    return strategy.hasConflict(other.strategy);
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Determines current value of setting.
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @param factory DOMTestDocumentBuilderFactory factory
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @return boolean true if property enabled.
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public final boolean hasSetting(DOMTestDocumentBuilderFactory factory) {
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    return strategy.hasSetting(factory) == value;
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Attempts to change builder to have this setting.
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @param factory DocumentBuilderFactory Factory for DOM builders
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @throws DOMTestIncompatibleException
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   *      if factory does not support the setting
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public final void applySetting(DocumentBuilderFactory factory) throws
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      DOMTestIncompatibleException {
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    strategy.applySetting(factory, value);
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Gets the property name.
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @return property name
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public final String getProperty() {
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    return property;
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Gets the property value.
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @return property value
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public final boolean getValue() {
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    return value;
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  /**
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * Gets a string representation of the setting.
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   * @return string representation
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project   */
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  public final String toString() {
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    StringBuffer builder = new StringBuffer(property);
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    builder.append('=');
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    builder.append(String.valueOf(value));
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    return builder.toString();
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project  }
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
283