1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 package org.exolab.castor.dsml;
38
39
40 import java.io.IOException;
41 import java.io.InputStream;
42 import java.io.OutputStream;
43 import java.io.Reader;
44 import java.io.Writer;
45
46 import org.castor.xml.BackwardCompatibilityContext;
47 import org.castor.xml.InternalContext;
48 import org.xml.sax.DocumentHandler;
49 import org.xml.sax.InputSource;
50 import org.xml.sax.Parser;
51 import org.xml.sax.SAXException;
52
53
54
55
56
57
58
59
60 public abstract class Exporter {
61
62 private InternalContext _xmlContext = new BackwardCompatibilityContext();
63
64 private SearchDescriptor _searchDesc;
65
66
67 private ImportDescriptor _importDesc;
68
69
70
71 public void export(OutputStream output, boolean serverSchema, boolean importPolicy)
72 throws ImportExportException {
73 try {
74 export(_xmlContext.getSerializer(output), serverSchema, importPolicy);
75 } catch (IOException except) {
76 throw new ImportExportException(except);
77 }
78 }
79
80
81 public void export(Writer output, boolean serverSchema, boolean importPolicy)
82 throws ImportExportException {
83 try {
84 export(_xmlContext.getSerializer(output), serverSchema, importPolicy);
85 } catch (IOException except) {
86 throw new ImportExportException(except);
87 }
88 }
89
90
91 public abstract void export(DocumentHandler docHandler, boolean serverSchema,
92 boolean importPolicy) throws ImportExportException;
93
94
95 public void setSearchDescriptor(SearchDescriptor searchDesc) {
96 _searchDesc = searchDesc;
97 }
98
99
100 public SearchDescriptor getSearchDescriptor() {
101 return _searchDesc;
102 }
103
104
105 public void setImportDescriptor(ImportDescriptor importDesc) {
106 _importDesc = importDesc;
107 }
108
109
110 public ImportDescriptor getImportDescriptor() {
111 return _importDesc;
112 }
113
114
115 public void readSearchDescriptor(InputStream input) throws IOException, SAXException {
116 readSearchDescriptor(_xmlContext.getParser(), new InputSource(input));
117 }
118
119
120 public void readSearchDescriptor(Reader input) throws IOException, SAXException {
121 readSearchDescriptor(_xmlContext.getParser(), new InputSource(input));
122 }
123
124
125 protected void readSearchDescriptor(Parser parser, InputSource input)
126 throws IOException, SAXException {
127 SearchDescriptor desc;
128
129 desc = new SearchDescriptor();
130 parser.setDocumentHandler(desc);
131 parser.parse(input);
132 setSearchDescriptor(desc);
133 }
134
135
136 protected abstract Consumer createConsumer();
137
138
139 }
140