1/*
2 * reserved comment block
3 * DO NOT REMOVE OR ALTER!
4 */
5/*
6 * Licensed to the Apache Software Foundation (ASF) under one or more
7 * contributor license agreements.  See the NOTICE file distributed with
8 * this work for additional information regarding copyright ownership.
9 * The ASF licenses this file to You under the Apache License, Version 2.0
10 * (the "License"); you may not use this file except in compliance with
11 * the License.  You may obtain a copy of the License at
12 *
13 *      http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 */
21
22package com.sun.org.apache.xerces.internal.impl.validation;
23
24import java.util.Iterator;
25
26/**
27 * <p>An extension of ValidationState which can be configured to turn
28 * off checking for ID/IDREF errors and unparsed entity errors.</p>
29 *
30 * @xerces.internal
31 *
32 * @author Peter McCracken, IBM
33 */
34public final class ConfigurableValidationState extends ValidationState {
35
36    /**
37     * Whether to check for ID/IDREF errors
38     */
39    private boolean fIdIdrefChecking;
40
41    /**
42     * Whether to check for unparsed entity errors
43     */
44    private boolean fUnparsedEntityChecking;
45
46    /**
47     * Creates a new ConfigurableValidationState.
48     * By default, error checking for both ID/IDREFs
49     * and unparsed entities are turned on.
50     */
51    public ConfigurableValidationState() {
52        super();
53        fIdIdrefChecking = true;
54        fUnparsedEntityChecking = true;
55    }
56
57    /**
58     * Turns checking for ID/IDREF errors on and off.
59     * @param setting true to turn on error checking,
60     *                 false to turn off error checking
61     */
62    public void setIdIdrefChecking(boolean setting) {
63        fIdIdrefChecking = setting;
64    }
65
66    /**
67     * Turns checking for unparsed entity errors on and off.
68     * @param setting true to turn on error checking,
69     *                 false to turn off error checking
70     */
71    public void setUnparsedEntityChecking(boolean setting) {
72        fUnparsedEntityChecking = setting;
73    }
74
75    /**
76     * Checks if all IDREFs have a corresponding ID.
77     * @return null, if ID/IDREF checking is turned off
78     *         otherwise, returns the value of the super implementation
79     */
80    public Iterator checkIDRefID() {
81        return (fIdIdrefChecking) ? super.checkIDRefID() : null;
82    }
83
84    /**
85     * Checks if an ID has already been declared.
86     * @return false, if ID/IDREF checking is turned off
87     *         otherwise, returns the value of the super implementation
88     */
89    public boolean isIdDeclared(String name) {
90        return (fIdIdrefChecking) ? super.isIdDeclared(name) : false;
91    }
92
93    /**
94     * Checks if an entity is declared.
95     * @return true, if unparsed entity checking is turned off
96     *         otherwise, returns the value of the super implementation
97     */
98    public boolean isEntityDeclared(String name) {
99        return (fUnparsedEntityChecking) ? super.isEntityDeclared(name) : true;
100    }
101
102    /**
103     * Checks if an entity is unparsed.
104     * @return true, if unparsed entity checking is turned off
105     *         otherwise, returns the value of the super implementation
106     */
107    public boolean isEntityUnparsed(String name) {
108        return (fUnparsedEntityChecking) ? super.isEntityUnparsed(name) : true;
109    }
110
111    /**
112     * Adds the ID, if ID/IDREF checking is enabled.
113     * @param name the ID to add
114     */
115    public void addId(String name) {
116        if (fIdIdrefChecking) {
117            super.addId(name);
118        }
119    }
120
121    /**
122     * Adds the IDREF, if ID/IDREF checking is enabled.
123     * @param name the IDREF to add
124     */
125    public void addIdRef(String name) {
126        if (fIdIdrefChecking) {
127            super.addIdRef(name);
128        }
129    }
130}
131