1 23 24 package org.enhydra.xml.xmlc.commands.xmlc; 25 26 import org.enhydra.xml.io.ErrorReporter; 27 import org.enhydra.xml.xmlc.XMLCException; 28 import org.enhydra.xml.xmlc.commands.options.FlagOption; 29 import org.enhydra.xml.xmlc.commands.options.Option; 30 import org.enhydra.xml.xmlc.commands.options.OptionSet; 31 import org.enhydra.xml.xmlc.metadata.DOMType; 32 import org.enhydra.xml.xmlc.metadata.DocumentClass; 33 import org.enhydra.xml.xmlc.metadata.GenerateType; 34 import org.enhydra.xml.xmlc.metadata.MetaData; 35 36 39 class DocClassCmdOptions extends BaseCmdOptions { 40 43 private class ImplementsOption extends Option { 44 47 public ImplementsOption() { 48 super("-implements", 1, true, 49 "interface - Specify an interface the generate class will implement"); 50 } 51 52 55 protected void parse(String [] args, 56 ErrorReporter errorReporter, 57 Object clientData) throws XMLCException { 58 ((MetaData)clientData).getDocumentClass().addImplements(args[0]); 59 } 60 } 61 62 65 private class GenerateOption extends Option { 66 69 public GenerateOption() { 70 super("-generate", 1, true, 71 "generate which - Specify type of class to generate (both, interface, implementation, class)"); 72 } 73 74 77 protected void parse(String [] args, 78 ErrorReporter errorReporter, 79 Object clientData) throws XMLCException { 80 GenerateType generate; 81 try { 82 generate = GenerateType.getType(args[0]); 83 } catch (IllegalArgumentException except) { 84 throw new XMLCException(except.getMessage(), 85 except); 86 } 87 ((MetaData)clientData).getDocumentClass().setGenerate(generate); 88 } 89 } 90 91 94 private class ClassOption extends Option { 95 98 public ClassOption() { 99 super( "-class", 1, false, 100 "class - Fully qualified class name for the generated class or interface."); 101 } 102 103 106 protected void parse(String [] args, 107 ErrorReporter errorReporter, 108 Object clientData) throws XMLCException { 109 ((MetaData)clientData).getDocumentClass().setName(args[0]); 110 } 111 } 112 113 116 private class ExtendsOption extends Option { 117 120 public ExtendsOption() { 121 super("-extends", 1, false, 122 "classname - Class the generated document extends"); 123 } 124 125 128 protected void parse(String [] args, 129 ErrorReporter errorReporter, 130 Object clientData) throws XMLCException { 131 ((MetaData)clientData).getDocumentClass().setExtends(args[0]); 132 } 133 } 134 135 138 private class ForRecompOption extends FlagOption { 139 142 public ForRecompOption() { 143 super("-for-recomp", 144 "Deprecated. No longer part of XMLC proper...too container (Enhydra3) specific. Use -for-deferred-parsing instead."); 145 } 146 147 150 protected void set(Object clientData) throws XMLCException { 151 ((MetaData)clientData).getDocumentClass().setRecompilation(true); 152 } 153 } 154 155 158 private class ForDeferredParsingOption extends FlagOption { 159 162 public ForDeferredParsingOption() { 163 super("-for-deferred-parsing", 164 "Generate support for deferred parsing and automatic re-parsing of the actual document *ML."); 165 } 166 167 170 protected void set(Object clientData) throws XMLCException { 171 ((MetaData)clientData).getDocumentClass().setDeferredParsing(true); 172 } 173 } 174 175 178 private class DOMFactoryOption extends Option { 179 182 public DOMFactoryOption() { 183 super("-domfactory", 1, false, 184 "classname - XMLCDOMFactory class for creating DTD-specific documents"); 185 } 186 187 190 protected void parse(String [] args, 191 ErrorReporter errorReporter, 192 Object clientData) throws XMLCException { 193 DocumentClass docClass = ((MetaData)clientData).getDocumentClass(); 194 if (docClass.getDom() != null) { 195 throw new XMLCException("can't specify both -dom and -domfactory"); 196 } 197 docClass.setDomFactory(args[0]); 198 } 199 } 200 201 204 private class DOMOption extends Option { 205 208 public DOMOption() { 209 super("-dom", 1, false, 210 "dom - Specify one of a predefined set of DOM factories; one of `lazydom', `xerces', 'generic', 'xhtml', 'wml', 'voicexml', or 'chtml'"); 211 } 212 213 216 protected void parse(String [] args, 217 ErrorReporter errorReporter, 218 Object clientData) throws XMLCException { 219 DocumentClass docClass = ((MetaData)clientData).getDocumentClass(); 220 if (docClass.getDomFactory() != null) { 221 throw new XMLCException("can't specify both -dom and -domfactory"); 222 } 223 docClass.setDom(DOMType.getType(args[0])); 224 } 225 } 226 227 230 private class CreateGetTagMethods extends FlagOption { 231 234 public CreateGetTagMethods() { 235 super("-create-get-tag-methods", 236 "name - getTagXXX() methods with generic return types"); 237 } 238 239 242 protected void set(Object clientData) throws XMLCException { 243 ((MetaData)clientData).getDocumentClass().setCreateGetTagMethods(true); 244 } 245 } 246 247 250 public DocClassCmdOptions(OptionSet optionSet) { 251 super(optionSet); 252 optionSet.addOption(new ImplementsOption()); 253 optionSet.addOption(new GenerateOption()); 254 optionSet.addOption(new ClassOption()); 255 optionSet.addOption(new ExtendsOption()); 256 optionSet.addOption(new ForRecompOption()); 257 optionSet.addOption(new ForDeferredParsingOption()); 258 optionSet.addOption(new DOMFactoryOption()); 259 optionSet.addOption(new DOMOption()); 260 optionSet.addOption(new GenerateOption()); 261 optionSet.addOption(new CreateGetTagMethods()); 262 } 263 } 264 | Popular Tags |