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