1 /** 2 * Copyright © 2008-2012 NetAllied Systems GmbH, Ravensburg, Germany. 3 * 4 * Licensed under the MIT Open Source License, 5 * for details please see LICENSE file or the website 6 * http://www.opensource.org/licenses/mit-license.php 7 */ 8 package de.netallied.xsd2cppsax.printers; 9 10 import java.io.FileNotFoundException; 11 import java.io.PrintStream; 12 import java.util.ArrayList; 13 import java.util.List; 14 import java.util.SortedMap; 15 import java.util.TreeMap; 16 17 import org.apache.xerces.xs.XSElementDeclaration; 18 import org.apache.xerces.xs.XSSimpleTypeDefinition; 19 20 import de.netallied.xsd2cppsax.IGenerationDataProvider; 21 22 /** 23 * Prints an empty example implementation of the generated parser. 24 * 25 */ 26 public class ExampleParserPrinter extends AbstractParserImplementationPrinter { 27 28 /** Generated example C++ header file. */ 29 private PrintStream exampleHeaderFile; 30 31 /** Generated example C++ source file. */ 32 private PrintStream exampleSourceFile; 33 34 /** 35 * C-tor. 36 * 37 */ ExampleParserPrinter(IGenerationDataProvider dataProvider)38 public ExampleParserPrinter(IGenerationDataProvider dataProvider) { 39 super(dataProvider); 40 } 41 42 /** 43 * {@inheritDoc} 44 * 45 * @see de.netallied.xsd2cppsax.printers.ICodePrinter#cleanupOutputFiles() 46 */ cleanupOutputFiles()47 public void cleanupOutputFiles() { 48 if (exampleHeaderFile != null) { 49 printHeaderFileEnd(); 50 exampleHeaderFile.close(); 51 } 52 if (exampleSourceFile != null) { 53 printSourceFileEnd(); 54 exampleSourceFile.close(); 55 } 56 } 57 58 /** 59 * {@inheritDoc} 60 * 61 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getAdditionalBaseClasses() 62 */ 63 @Override getAdditionalBaseClasses()64 protected List<String> getAdditionalBaseClasses() { 65 return null; 66 } 67 68 /** 69 * {@inheritDoc} 70 * 71 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getClassName() 72 */ 73 @Override getClassName()74 protected String getClassName() { 75 return getConfig().getExampleClassName(); 76 } 77 78 /** 79 * {@inheritDoc} 80 * 81 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getCtorParas() 82 */ 83 @Override getCtorParas()84 protected String getCtorParas() { 85 return null; 86 } 87 88 /** 89 * {@inheritDoc} 90 * 91 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getCtorTmpl() 92 */ 93 @Override getCtorTmpl()94 protected String getCtorTmpl() { 95 return null; 96 } 97 98 /** 99 * {@inheritDoc} 100 * 101 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getDtorTmpl() 102 */ 103 @Override getDtorTmpl()104 protected String getDtorTmpl() { 105 return null; 106 } 107 108 /** 109 * {@inheritDoc} 110 * 111 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getHeaderFile() 112 */ 113 @Override getHeaderFile()114 protected PrintStream getHeaderFile() { 115 return exampleHeaderFile; 116 } 117 118 /** 119 * {@inheritDoc} 120 * 121 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getHeaderFileName() 122 */ 123 @Override getHeaderFileName()124 protected String getHeaderFileName() { 125 return getConfig().getOutputExampleHeaderFileName(); 126 } 127 128 /** 129 * {@inheritDoc} 130 * 131 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getIncludeFiles() 132 */ 133 @Override getIncludeFiles()134 protected List<String> getIncludeFiles() { 135 return new ArrayList<String>(); 136 } 137 138 /** 139 * {@inheritDoc} 140 * 141 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getInitializationList() 142 */ 143 @Override getInitializationList()144 protected List<String> getInitializationList() { 145 return new ArrayList<String>(); 146 } 147 148 /** 149 * {@inheritDoc} 150 * 151 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getMembers() 152 */ 153 @Override getMembers()154 protected SortedMap<String, String> getMembers() { 155 return new TreeMap<String, String>(); 156 } 157 158 /** 159 * {@inheritDoc} 160 * 161 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getNamespace() 162 */ 163 @Override getNamespace()164 protected String getNamespace() { 165 return getConfig().getExampleNamespace(); 166 } 167 168 /** 169 * {@inheritDoc} 170 * 171 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#getSourceFile() 172 */ 173 @Override getSourceFile()174 protected PrintStream getSourceFile() { 175 return exampleSourceFile; 176 } 177 178 /** 179 * {@inheritDoc} 180 * 181 * @see de.netallied.xsd2cppsax.printers.ICodePrinter#handleEnum(java.lang.String, 182 * com.sun.org.apache.xerces.internal.xs.XSSimpleTypeDefinition) 183 */ handleEnum(String cppEnumTypeName, XSSimpleTypeDefinition simpleType)184 public void handleEnum(String cppEnumTypeName, XSSimpleTypeDefinition simpleType) { 185 } 186 187 /** 188 * {@inheritDoc} 189 * 190 * @see de.netallied.xsd2cppsax.printers.ICodePrinter#handleUnion(java.lang.String, 191 * com.sun.org.apache.xerces.internal.xs.XSSimpleTypeDefinition) 192 */ handleUnion(String cppUnionTypeName, XSSimpleTypeDefinition simpleType)193 public void handleUnion(String cppUnionTypeName, XSSimpleTypeDefinition simpleType) { 194 } 195 196 /** 197 * {@inheritDoc} 198 * 199 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#printBeginMethodImpl(java.lang.String, 200 * java.lang.String, java.lang.String, 201 * com.sun.org.apache.xerces.internal.xs.XSElementDeclaration) 202 */ 203 @Override printBeginMethodImpl(String methodName, String parameterList, String cppElementName, XSElementDeclaration element, boolean attributesRequired)204 protected void printBeginMethodImpl(String methodName, String parameterList, String cppElementName, 205 XSElementDeclaration element, boolean attributesRequired) { 206 PrinterUtils.printBeginConvenienceMethodDefaultImpl(getSourceFile(), true, getConfig()); 207 } 208 209 /** 210 * {@inheritDoc} 211 * 212 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#printDataMethodImpl(java.lang.String, 213 * java.lang.String, java.lang.String, 214 * com.sun.org.apache.xerces.internal.xs.XSElementDeclaration) 215 */ 216 @Override printDataMethodImpl(String methodName, String parameterList, String cppElementName, XSElementDeclaration element)217 protected void printDataMethodImpl(String methodName, String parameterList, String cppElementName, 218 XSElementDeclaration element) { 219 PrinterUtils.printDataConvenienceMethodDefaultImpl(getSourceFile(), true, getConfig()); 220 } 221 222 /** 223 * {@inheritDoc} 224 * 225 * @see de.netallied.xsd2cppsax.printers.AbstractParserImplementationPrinter#printEndMethodImpl(java.lang.String, 226 * java.lang.String, java.lang.String, 227 * com.sun.org.apache.xerces.internal.xs.XSElementDeclaration) 228 */ 229 @Override printEndMethodImpl(String methodName, String parameterList, String cppElementName, XSElementDeclaration element)230 protected void printEndMethodImpl(String methodName, String parameterList, String cppElementName, 231 XSElementDeclaration element) { 232 PrinterUtils.printEndMethodDefaultImpl(getSourceFile(), true, getConfig()); 233 } 234 235 /** 236 * {@inheritDoc} 237 * 238 * @see de.netallied.xsd2cppsax.printers.ICodePrinter#setupOutputFiles() 239 */ setupOutputFiles()240 public void setupOutputFiles() throws FileNotFoundException { 241 exampleHeaderFile = new PrintStream(getConfig().getOutputExampleHeaderFileName()); 242 printHeaderFileBeginning(); 243 exampleSourceFile = new PrintStream(getConfig().getOutputExampleSourceFileName()); 244 printSourceFileBeginning(); 245 } 246 } 247