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    }