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: SelectorFactoryImpl.java,v 1.1.1.1 2006/04/23 14:51:53 taqua Exp $ 013 */ 014 package org.w3c.flute.parser.selectors; 015 016 import org.w3c.css.sac.SelectorFactory; 017 import org.w3c.css.sac.ConditionalSelector; 018 import org.w3c.css.sac.NegativeSelector; 019 import org.w3c.css.sac.SimpleSelector; 020 import org.w3c.css.sac.ElementSelector; 021 import org.w3c.css.sac.CharacterDataSelector; 022 import org.w3c.css.sac.ProcessingInstructionSelector; 023 import org.w3c.css.sac.SiblingSelector; 024 import org.w3c.css.sac.DescendantSelector; 025 import org.w3c.css.sac.Selector; 026 import org.w3c.css.sac.Condition; 027 import org.w3c.css.sac.CSSException; 028 029 /** 030 * @version $Revision: 1.1.1.1 $ 031 * @author Philippe Le Hegaret 032 */ 033 public class SelectorFactoryImpl implements SelectorFactory { 034 035 /** 036 * Creates a conditional selector. 037 * 038 * @param selector a selector. 039 * @param condition a condition 040 * @return the conditional selector. 041 * @exception CSSException If this selector is not supported. 042 */ 043 public ConditionalSelector createConditionalSelector(SimpleSelector selector, 044 Condition condition) 045 throws CSSException { 046 return new ConditionalSelectorImpl(selector, condition); 047 } 048 049 /** 050 * Creates an any node selector. 051 * 052 * @return the any node selector. 053 * @exception CSSException If this selector is not supported. 054 */ 055 public SimpleSelector createAnyNodeSelector() throws CSSException { 056 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 057 } 058 059 /** 060 * Creates an root node selector. 061 * 062 * @return the root node selector. 063 * @exception CSSException If this selector is not supported. 064 */ 065 public SimpleSelector createRootNodeSelector() throws CSSException { 066 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 067 } 068 069 /** 070 * Creates an negative selector. 071 * 072 * @param selector a selector. 073 * @return the negative selector. 074 * @exception CSSException If this selector is not supported. 075 */ 076 public NegativeSelector createNegativeSelector(SimpleSelector selector) 077 throws CSSException { 078 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 079 } 080 081 /** 082 * Creates an element selector. 083 * 084 * @param namespaceURI the <a href="http://www.w3.org/TR/REC-xml-names/#dt-NSName">namespace 085 * URI</a> of the element selector. 086 * @param tagName the <a href="http://www.w3.org/TR/REC-xml-names/#NT-LocalPart">local 087 * part</a> of the element name. <code>NULL</code> if this element 088 * selector can match any element.</p> 089 * @return the element selector 090 * @exception CSSException If this selector is not supported. 091 */ 092 public ElementSelector createElementSelector(String namespaceURI, String localName) 093 throws CSSException { 094 if (namespaceURI != null) { 095 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 096 } else { 097 return new ElementSelectorImpl(localName); 098 } 099 } 100 101 /** 102 * Creates a text node selector. 103 * 104 * @param data the data 105 * @return the text node selector 106 * @exception CSSException If this selector is not supported. 107 */ 108 public CharacterDataSelector createTextNodeSelector(String data) 109 throws CSSException { 110 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 111 } 112 113 /** 114 * Creates a cdata section node selector. 115 * 116 * @param data the data 117 * @return the cdata section node selector 118 * @exception CSSException If this selector is not supported. 119 */ 120 public CharacterDataSelector createCDataSectionSelector(String data) 121 throws CSSException { 122 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 123 } 124 125 /** 126 * Creates a processing instruction node selector. 127 * 128 * @param target the target 129 * @param data the data 130 * @return the processing instruction node selector 131 * @exception CSSException If this selector is not supported. 132 */ 133 public ProcessingInstructionSelector 134 createProcessingInstructionSelector(String target, 135 String data) 136 throws CSSException { 137 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 138 } 139 140 /** 141 * Creates a comment node selector. 142 * 143 * @param data the data 144 * @return the comment node selector 145 * @exception CSSException If this selector is not supported. 146 */ 147 public CharacterDataSelector createCommentSelector(String data) 148 throws CSSException { 149 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 150 } 151 152 /** 153 * Creates a pseudo element selector. 154 * 155 * @param pseudoName the pseudo element name. <code>NULL</code> if this 156 * element selector can match any pseudo element.</p> 157 * @return the element selector 158 * @exception CSSException If this selector is not supported. 159 */ 160 public ElementSelector createPseudoElementSelector(String namespaceURI, 161 String pseudoName) 162 throws CSSException { 163 if (namespaceURI != null) { 164 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 165 } else { 166 return new PseudoElementSelectorImpl(pseudoName); 167 } 168 } 169 170 /** 171 * Creates a descendant selector. 172 * 173 * @param parent the parent selector 174 * @param descendant the descendant selector 175 * @return the combinator selector. 176 * @exception CSSException If this selector is not supported. 177 */ 178 public DescendantSelector createDescendantSelector(Selector parent, 179 SimpleSelector descendant) 180 throws CSSException { 181 return new DescendantSelectorImpl(parent, descendant); 182 } 183 184 /** 185 * Creates a child selector. 186 * 187 * @param parent the parent selector 188 * @param child the child selector 189 * @return the combinator selector. 190 * @exception CSSException If this selector is not supported. 191 */ 192 public DescendantSelector createChildSelector(Selector parent, 193 SimpleSelector child) 194 throws CSSException { 195 return new ChildSelectorImpl(parent, child); 196 } 197 198 /** 199 * Creates a direct adjacent selector. 200 * 201 * @param child the child selector 202 * @param adjacent the direct adjacent selector 203 * @return the combinator selector. 204 * @exception CSSException If this selector is not supported. 205 */ 206 public SiblingSelector createDirectAdjacentSelector(short nodeType, 207 Selector child, 208 SimpleSelector directAdjacent) 209 throws CSSException { 210 if (nodeType != 1) { 211 throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); 212 } else { 213 return new DirectAdjacentSelectorImpl(child, directAdjacent); 214 } 215 } 216 217 }