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;
9 
10 import java.io.FileNotFoundException;
11 import java.io.PrintStream;
12 import java.util.HashMap;
13 import java.util.List;
14 import java.util.Map;
15 import java.util.Map.Entry;
16 
17 import org.apache.xerces.xs.XSElementDeclaration;
18 
19 /**
20  * Dumps out different data for debugging purposes, e.g. element usage data.
21  *
22  */
23 public class ElementUsageDumper {
24 
25     /**
26      * Dumps out element usage data.
27      */
dumpElementUsage(Map<String, ElementUsage> elementUsage)28     public void dumpElementUsage(Map<String, ElementUsage> elementUsage) throws FileNotFoundException {
29         PrintStream stream = new PrintStream("element_usage.txt");
30 
31         for (Entry<String, ElementUsage> usage : elementUsage.entrySet()) {
32             stream.println(usage.getKey());
33 
34             for (List<XSElementDeclaration> ancestors : usage.getValue().getAncestors()) {
35                 stream.print("    ");
36 
37                 for (XSElementDeclaration ancestor : ancestors) {
38                     stream.print(ancestor.getName() + ", ");
39                 }
40 
41                 stream.println();
42             }
43 
44             stream.println();
45         }
46 
47         stream.close();
48     }
49 
50     /**
51      * Dumps out a map.
52      */
dumpMap(PrintStream stream, Map<String, String> map)53     private void dumpMap(PrintStream stream, Map<String, String> map) {
54         for (String key : map.keySet()) {
55             stream.println("    " + key + " -> " + map.get(key));
56         }
57     }
58 
59     /**
60      * Dumps out a parent name and it's child elements.
61      */
dumpMultipleElementsPerParent(Map<String, List<XSElementDeclaration>> elementsPerParent)62     public void dumpMultipleElementsPerParent(Map<String, List<XSElementDeclaration>> elementsPerParent)
63             throws FileNotFoundException {
64         PrintStream stream = new PrintStream("multiple_elements_per_parent.txt");
65 
66         for (String parentName : elementsPerParent.keySet()) {
67             stream.println(parentName);
68 
69             for (XSElementDeclaration element : elementsPerParent.get(parentName)) {
70                 stream.print("    ");
71                 stream.println(element.getName());
72             }
73         }
74     }
75 
76     /**
77      * Dumps out type mapping.
78      */
dumpTypeMapping(Config config)79     public void dumpTypeMapping(Config config) throws FileNotFoundException {
80         PrintStream stream = new PrintStream("type_mapping.txt");
81 
82         // avoid "unused" warning
83         dumpMap(stream, new HashMap<String, String>());
84         //
85         // Map<String, String> simpleAttrAtomicTypeMapping =
86         // config.getSimpleAttrAtomicTypeMapping();
87         // stream.println("AttrAtomicTypeMapping");
88         // dumpMap(stream, simpleAttrAtomicTypeMapping);
89         // stream.println(
90         // "***********************************************************");
91         // stream.println();
92         // stream.println();
93         //
94         // Map<String, String> simpleAttrAtomicTypePreConversionMapping = config
95         // .getSimpleAttrAtomicTypePreConversionMapping();
96         // stream.println("AttrAtomicTypePreConversionMapping");
97         // dumpMap(stream, simpleAttrAtomicTypePreConversionMapping);
98         // stream.println(
99         // "***********************************************************");
100         // stream.println();
101         // stream.println();
102         //
103         // Map<String, String> simpleAttrAtomicTypeConversionMapping =
104         // config.getSimpleAttrAtomicTypeConversionMapping();
105         // stream.println("AttrAtomicTypeConversionMapping");
106         // dumpMap(stream, simpleAttrAtomicTypeConversionMapping);
107         // stream.println(
108         // "***********************************************************");
109         // stream.println();
110         // stream.println();
111         //
112         // Map<String, String> simpleAttrAtomicTypePostConversionMapping =
113         // config
114         // .getSimpleAttrAtomicTypePostConversionMapping();
115         // stream.println("AttrAtomicTypePostConversionMapping");
116         // dumpMap(stream, simpleAttrAtomicTypePostConversionMapping);
117         // stream.println(
118         // "***********************************************************");
119         // stream.println();
120         // stream.println();
121         //
122         // Map<String, String> simpleAttrListTypeMapping =
123         // config.getSimpleAttrListTypeMapping();
124         // stream.println("AttrListTypeMapping");
125         // dumpMap(stream, simpleAttrListTypeMapping);
126         // stream.println(
127         // "***********************************************************");
128         // stream.println();
129         // stream.println();
130         //
131         // Map<String, String> simpleAttrListTypePreConversionMapping =
132         // config.getSimpleAttrListTypePreConversionMapping();
133         // stream.println("AttrListTypePreConversionMapping");
134         // dumpMap(stream, simpleAttrListTypePreConversionMapping);
135         // stream.println(
136         // "***********************************************************");
137         // stream.println();
138         // stream.println();
139         //
140         // Map<String, String> simpleAttrListTypeConversionMapping =
141         // config.getSimpleAttrListTypeConversionMappingNoItemValidation();
142         // stream.println("AttrListTypeConversionMapping");
143         // dumpMap(stream, simpleAttrListTypeConversionMapping);
144         // stream.println(
145         // "***********************************************************");
146         // stream.println();
147         // stream.println();
148         //
149         // Map<String, String> simpleAttrListTypePostConversionMapping = config
150         // .getSimpleAttrListTypePostConversionMapping();
151         // stream.println("AttrListTypePostConversionMapping");
152         // dumpMap(stream, simpleAttrListTypePostConversionMapping);
153         // stream.println(
154         // "***********************************************************");
155         // stream.println();
156         // stream.println();
157         //
158         // Map<String, String> simpleDataAtomicTypeMapping =
159         // config.getSimpleDataAtomicTypeMapping();
160         // stream.println("DataAtomicTypeMapping");
161         // dumpMap(stream, simpleDataAtomicTypeMapping);
162         // stream.println(
163         // "***********************************************************");
164         // stream.println();
165         // stream.println();
166         //
167         // Map<String, String> simpleDataAtomicTypePreConversionMapping = config
168         // .getSimpleDataAtomicTypePreConversionMapping();
169         // stream.println("DataAtomicTypePreConversionMapping");
170         // dumpMap(stream, simpleDataAtomicTypePreConversionMapping);
171         // stream.println(
172         // "***********************************************************");
173         // stream.println();
174         // stream.println();
175         //
176         // Map<String, String> simpleDataAtomicTypeConversionMapping =
177         // config.getSimpleDataAtomicTypeConversionMapping();
178         // stream.println("DataAtomicTypeConversionMapping");
179         // dumpMap(stream, simpleDataAtomicTypeConversionMapping);
180         // stream.println(
181         // "***********************************************************");
182         // stream.println();
183         // stream.println();
184         //
185         // Map<String, String> simpleDataAtomicTypePostConversionMapping =
186         // config
187         // .getSimpleDataAtomicTypePostConversionMapping();
188         // stream.println("DataAtomicTypePostConversionMapping");
189         // dumpMap(stream, simpleDataAtomicTypePostConversionMapping);
190         // stream.println(
191         // "***********************************************************");
192         // stream.println();
193         // stream.println();
194         //
195         // Map<String, String> simpleDataListTypeMapping =
196         // config.getSimpleDataListTypeMapping();
197         // stream.println("DataListTypeMapping");
198         // dumpMap(stream, simpleDataListTypeMapping);
199         // stream.println(
200         // "***********************************************************");
201         // stream.println();
202         // stream.println();
203         //
204         // Map<String, String> simpleDataListTypeConversionMapping =
205         // config.getSimpleDataListTypeConversionMapping();
206         // stream.println("DataListTypeConversionMapping");
207         // dumpMap(stream, simpleDataListTypeConversionMapping);
208         // stream.println(
209         // "***********************************************************");
210         // stream.println();
211         // stream.println();
212         //
213         stream.close();
214     }
215 }
216