001: /*
002:
003: ============================================================================
004: The Apache Software License, Version 1.1
005: ============================================================================
006:
007: Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
008:
009: Redistribution and use in source and binary forms, with or without modifica-
010: tion, are permitted provided that the following conditions are met:
011:
012: 1. Redistributions of source code must retain the above copyright notice,
013: this list of conditions and the following disclaimer.
014:
015: 2. Redistributions in binary form must reproduce the above copyright notice,
016: this list of conditions and the following disclaimer in the documentation
017: and/or other materials provided with the distribution.
018:
019: 3. The end-user documentation included with the redistribution, if any, must
020: include the following acknowledgment: "This product includes software
021: developed by the Apache Software Foundation (http://www.apache.org/)."
022: Alternately, this acknowledgment may appear in the software itself, if
023: and wherever such third-party acknowledgments normally appear.
024:
025: 4. The names "Batik" and "Apache Software Foundation" must not be
026: used to endorse or promote products derived from this software without
027: prior written permission. For written permission, please contact
028: apache@apache.org.
029:
030: 5. Products derived from this software may not be called "Apache", nor may
031: "Apache" appear in their name, without prior written permission of the
032: Apache Software Foundation.
033:
034: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
035: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
036: FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
037: APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
038: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
039: DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
040: OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
041: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
042: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
043: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
044:
045: This software consists of voluntary contributions made by many individuals
046: on behalf of the Apache Software Foundation. For more information on the
047: Apache Software Foundation, please see <http://www.apache.org/>.
048:
049: */
050:
051: package org.apache.batik.css.engine.sac;
052:
053: import org.w3c.css.sac.AttributeCondition;
054: import org.w3c.css.sac.CSSException;
055: import org.w3c.css.sac.CombinatorCondition;
056: import org.w3c.css.sac.Condition;
057: import org.w3c.css.sac.ConditionFactory;
058: import org.w3c.css.sac.ContentCondition;
059: import org.w3c.css.sac.LangCondition;
060: import org.w3c.css.sac.NegativeCondition;
061: import org.w3c.css.sac.PositionalCondition;
062:
063: /**
064: * This class provides an implementation of the
065: * {@link org.w3c.css.sac.ConditionFactory} interface.
066: *
067: * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
068: * @version $Id$
069: */
070: public class CSSConditionFactory implements ConditionFactory {
071:
072: /**
073: * The class attribute namespace URI.
074: */
075: protected String classNamespaceURI;
076:
077: /**
078: * The class attribute local name.
079: */
080: protected String classLocalName;
081:
082: /**
083: * The id attribute namespace URI.
084: */
085: protected String idNamespaceURI;
086:
087: /**
088: * The id attribute local name.
089: */
090: protected String idLocalName;
091:
092: /**
093: * Creates a new condition factory.
094: */
095: public CSSConditionFactory(String cns, String cln, String idns,
096: String idln) {
097: classNamespaceURI = cns;
098: classLocalName = cln;
099: idNamespaceURI = idns;
100: idLocalName = idln;
101: }
102:
103: /**
104: * <b>SAC</b>: Implements {@link
105: * ConditionFactory#createAndCondition(Condition,Condition)}.
106: */
107: public CombinatorCondition createAndCondition(Condition first,
108: Condition second) throws CSSException {
109: return new CSSAndCondition(first, second);
110: }
111:
112: /**
113: * <b>SAC</b>: Implements {@link
114: * ConditionFactory#createOrCondition(Condition,Condition)}.
115: */
116: public CombinatorCondition createOrCondition(Condition first,
117: Condition second) throws CSSException {
118: throw new CSSException("Not implemented in CSS2");
119: }
120:
121: /**
122: * <b>SAC</b>: Implements {@link
123: * org.w3c.css.sac.ConditionFactory#createNegativeCondition(Condition)}.
124: */
125: public NegativeCondition createNegativeCondition(Condition condition)
126: throws CSSException {
127: throw new CSSException("Not implemented in CSS2");
128: }
129:
130: /**
131: * <b>SAC</b>: Implements {@link
132: * ConditionFactory#createPositionalCondition(int,boolean,boolean)}.
133: */
134: public PositionalCondition createPositionalCondition(int position,
135: boolean typeNode, boolean type) throws CSSException {
136: throw new CSSException("Not implemented in CSS2");
137: }
138:
139: /**
140: * <b>SAC</b>: Implements {@link
141: *ConditionFactory#createAttributeCondition(String,String,boolean,String)}.
142: */
143: public AttributeCondition createAttributeCondition(
144: String localName, String namespaceURI, boolean specified,
145: String value) throws CSSException {
146: return new CSSAttributeCondition(localName, namespaceURI,
147: specified, value);
148: }
149:
150: /**
151: * <b>SAC</b>: Implements {@link
152: * org.w3c.css.sac.ConditionFactory#createIdCondition(String)}.
153: */
154: public AttributeCondition createIdCondition(String value)
155: throws CSSException {
156: return new CSSIdCondition(idNamespaceURI, idLocalName, value);
157: }
158:
159: /**
160: * <b>SAC</b>: Implements {@link
161: * org.w3c.css.sac.ConditionFactory#createLangCondition(String)}.
162: */
163: public LangCondition createLangCondition(String lang)
164: throws CSSException {
165: return new CSSLangCondition(lang);
166: }
167:
168: /**
169: * <b>SAC</b>: Implements {@link
170: ConditionFactory#createOneOfAttributeCondition(String,String,boolean,String)}.
171: */
172: public AttributeCondition createOneOfAttributeCondition(
173: String localName, String nsURI, boolean specified,
174: String value) throws CSSException {
175: return new CSSOneOfAttributeCondition(localName, nsURI,
176: specified, value);
177: }
178:
179: /**
180: * <b>SAC</b>: Implements {@link
181: * ConditionFactory#createBeginHyphenAttributeCondition(String,String,boolean,String)}.
182: */
183: public AttributeCondition createBeginHyphenAttributeCondition(
184: String localName, String namespaceURI, boolean specified,
185: String value) throws CSSException {
186: return new CSSBeginHyphenAttributeCondition(localName,
187: namespaceURI, specified, value);
188: }
189:
190: /**
191: * <b>SAC</b>: Implements {@link
192: * org.w3c.css.sac.ConditionFactory#createClassCondition(String,String)}.
193: */
194: public AttributeCondition createClassCondition(String namespaceURI,
195: String value) throws CSSException {
196: return new CSSClassCondition(classLocalName, classNamespaceURI,
197: value);
198: }
199:
200: /**
201: * <b>SAC</b>: Implements {@link
202: * ConditionFactory#createPseudoClassCondition(String,String)}.
203: */
204: public AttributeCondition createPseudoClassCondition(
205: String namespaceURI, String value) throws CSSException {
206: return new CSSPseudoClassCondition(namespaceURI, value);
207: }
208:
209: /**
210: * <b>SAC</b>: Implements {@link
211: * org.w3c.css.sac.ConditionFactory#createOnlyChildCondition()}.
212: */
213: public Condition createOnlyChildCondition() throws CSSException {
214: throw new CSSException("Not implemented in CSS2");
215: }
216:
217: /**
218: * <b>SAC</b>: Implements {@link
219: * org.w3c.css.sac.ConditionFactory#createOnlyTypeCondition()}.
220: */
221: public Condition createOnlyTypeCondition() throws CSSException {
222: throw new CSSException("Not implemented in CSS2");
223: }
224:
225: /**
226: * <b>SAC</b>: Implements {@link
227: * org.w3c.css.sac.ConditionFactory#createContentCondition(String)}.
228: */
229: public ContentCondition createContentCondition(String data)
230: throws CSSException {
231: throw new CSSException("Not implemented in CSS2");
232: }
233: }
|