001 /*
002 * Copyright (c) 2000 World Wide Web Consortium,
003 * (Massachusetts Institute of Technology, Institut National de
004 * Recherche en Informatique et en Automatique, Keio University). All
005 * Rights Reserved. This program is distributed under the W3C's Software
006 * Intellectual Property License. This program is distributed in the
007 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
008 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
009 * PURPOSE.
010 * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
011 *
012 * $Id: ConditionFactoryImpl.java,v 1.1.1.1 2006/04/23 14:51:55 taqua Exp $
013 */
014 package org.w3c.flute.parser.selectors;
015
016 import org.w3c.css.sac.CSSException;
017 import org.w3c.css.sac.Condition;
018 import org.w3c.css.sac.AttributeCondition;
019 import org.w3c.css.sac.LangCondition;
020 import org.w3c.css.sac.ContentCondition;
021 import org.w3c.css.sac.CombinatorCondition;
022 import org.w3c.css.sac.PositionalCondition;
023 import org.w3c.css.sac.NegativeCondition;
024 import org.w3c.css.sac.ConditionFactory;
025
026 /**
027 * @version $Revision: 1.1.1.1 $
028 * @author Philippe Le Hegaret
029 */
030 public class ConditionFactoryImpl implements ConditionFactory {
031
032 /**
033 * Creates an and condition
034 *
035 * @param first the first condition
036 * @param second the second condition
037 * @return A combinator condition
038 * @exception CSSException if this exception is not supported.
039 */
040 public CombinatorCondition createAndCondition(Condition first,
041 Condition second)
042 throws CSSException {
043 return new AndConditionImpl(first, second);
044 }
045
046 /**
047 * Creates an or condition
048 *
049 * @param first the first condition
050 * @param second the second condition
051 * @return A combinator condition
052 * @exception CSSException if this exception is not supported.
053 */
054 public CombinatorCondition createOrCondition(Condition first,
055 Condition second)
056 throws CSSException {
057 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
058 }
059
060 /**
061 * Creates a negative condition
062 *
063 * @param condition the condition
064 * @return A negative condition
065 * @exception CSSException if this exception is not supported.
066 */
067 public NegativeCondition createNegativeCondition(Condition condition)
068 throws CSSException {
069 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
070 }
071
072
073 /**
074 * Creates a positional condition
075 *
076 * @param position the position of the node in the list.
077 * @param typeNode <code>true</code> if the list should contain
078 * only nodes of the same type (element, text node, ...).
079 * @param type <code>true</code> true if the list should contain
080 * only nodes of the same node (for element, same localName
081 * and same namespaceURI).
082 * @return A positional condition
083 * @exception CSSException if this exception is not supported.
084 */
085 public PositionalCondition createPositionalCondition(int position,
086 boolean typeNode,
087 boolean type)
088 throws CSSException {
089 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
090 }
091
092 /**
093 * creates an attribute condition
094 *
095 * @param localName the localName of the attribute
096 * @param namespaceURI the namespace URI of the attribute
097 * @param specified <code>true</code> if the attribute must be specified
098 * in the document.
099 * @param value the value of this attribute.
100 * @return An attribute condition
101 * @exception CSSException if this exception is not supported.
102 */
103 public AttributeCondition createAttributeCondition(String localName,
104 String namespaceURI,
105 boolean specified,
106 String value)
107 throws CSSException {
108 if ((namespaceURI != null) || specified) {
109 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
110 } else {
111 return new AttributeConditionImpl(localName, value);
112 }
113 }
114
115 /**
116 * Creates an id condition
117 *
118 * @param value the value of the id.
119 * @return An Id condition
120 * @exception CSSException if this exception is not supported.
121 */
122 public AttributeCondition createIdCondition(String value)
123 throws CSSException {
124 return new IdConditionImpl(value);
125 }
126
127 /**
128 * Creates a lang condition
129 *
130 * @param value the value of the language.
131 * @return A lang condition
132 * @exception CSSException if this exception is not supported.
133 */
134 public LangCondition createLangCondition(String lang)
135 throws CSSException {
136 return new LangConditionImpl(lang);
137 }
138
139 /**
140 * Creates a "one of" attribute condition
141 *
142 * @param localName the localName of the attribute
143 * @param namespaceURI the namespace URI of the attribute
144 * @param specified <code>true</code> if the attribute must be specified
145 * in the document.
146 * @param value the value of this attribute.
147 * @return A "one of" attribute condition
148 * @exception CSSException if this exception is not supported.
149 */
150 public AttributeCondition createOneOfAttributeCondition(String localName,
151 String namespaceURI,
152 boolean specified,
153 String value)
154 throws CSSException {
155 if ((namespaceURI != null) || specified) {
156 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
157 } else {
158 return new OneOfAttributeConditionImpl(localName, value);
159 }
160 }
161
162 /**
163 * Creates a "begin hyphen" attribute condition
164 *
165 * @param localName the localName of the attribute
166 * @param namespaceURI the namespace URI of the attribute
167 * @param specified <code>true</code> if the attribute must be specified
168 * in the document.
169 * @param value the value of this attribute.
170 * @return A "begin hyphen" attribute condition
171 * @exception CSSException if this exception is not supported.
172 */
173 public AttributeCondition createBeginHyphenAttributeCondition(String localName,
174 String namespaceURI,
175 boolean specified,
176 String value)
177 throws CSSException {
178 if ((namespaceURI != null) || specified) {
179 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
180 } else {
181 return new BeginHyphenAttributeConditionImpl(localName, value);
182 }
183 }
184
185 /**
186 * Creates a class condition
187 *
188 * @param localName the localName of the attribute
189 * @param namespaceURI the namespace URI of the attribute
190 * @param specified <code>true</code> if the attribute must be specified
191 * in the document.
192 * @param value the name of the class.
193 * @return A class condition
194 * @exception CSSException if this exception is not supported.
195 */
196 public AttributeCondition createClassCondition(String namespaceURI,
197 String value)
198 throws CSSException {
199 return new ClassConditionImpl(value);
200 }
201
202 /**
203 * Creates a pseudo class condition
204 *
205 * @param namespaceURI the namespace URI of the attribute
206 * @param value the name of the pseudo class
207 * @return A pseudo class condition
208 * @exception CSSException if this exception is not supported.
209 */
210 public AttributeCondition createPseudoClassCondition(String namespaceURI,
211 String value)
212 throws CSSException {
213 return new PseudoClassConditionImpl(value);
214 }
215
216 /**
217 * Creates a "only one" child condition
218 *
219 * @return A "only one" child condition
220 * @exception CSSException if this exception is not supported.
221 */
222 public Condition createOnlyChildCondition() throws CSSException {
223 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
224 }
225
226 /**
227 * Creates a "only one" type condition
228 *
229 * @return A "only one" type condition
230 * @exception CSSException if this exception is not supported.
231 */
232 public Condition createOnlyTypeCondition() throws CSSException {
233 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
234 }
235
236 /**
237 * Creates a content condition
238 *
239 * @param data the data in the content
240 * @return A content condition
241 * @exception CSSException if this exception is not supported.
242 */
243 public ContentCondition createContentCondition(String data)
244 throws CSSException {
245 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
246 }
247 }