View Javadoc
1   /**
2    * Redistribution and use of this software and associated documentation
3    * ("Software"), with or without modification, are permitted provided
4    * that the following conditions are met:
5    *
6    * 1. Redistributions of source code must retain copyright
7    *    statements and notices.  Redistributions must also contain a
8    *    copy of this document.
9    *
10   * 2. Redistributions in binary form must reproduce the
11   *    above copyright notice, this list of conditions and the
12   *    following disclaimer in the documentation and/or other
13   *    materials provided with the distribution.
14   *
15   * 3. The name "Exolab" must not be used to endorse or promote
16   *    products derived from this Software without prior written
17   *    permission of Intalio, Inc.  For written permission,
18   *    please contact info@exolab.org.
19   *
20   * 4. Products derived from this Software may not be called "Exolab"
21   *    nor may "Exolab" appear in their names without prior written
22   *    permission of Intalio, Inc. Exolab is a registered
23   *    trademark of Intalio, Inc.
24   *
25   * 5. Due credit should be given to the Exolab Project
26   *    (http://www.exolab.org/).
27   *
28   * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
29   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
32   * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39   * OF THE POSSIBILITY OF SUCH DAMAGE.
40   *
41   * Copyright 1999 (C) Intalio, Inc. All Rights Reserved.
42   *
43   * $Id$
44   */
45  
46  
47  package org.exolab.castor.dsml;
48  
49  
50  import java.io.IOException;
51  import java.io.InputStream;
52  import java.io.OutputStream;
53  import java.io.Reader;
54  import java.io.Writer;
55  
56  import org.castor.xml.BackwardCompatibilityContext;
57  import org.castor.xml.InternalContext;
58  import org.xml.sax.DocumentHandler;
59  import org.xml.sax.InputSource;
60  import org.xml.sax.Parser;
61  import org.xml.sax.SAXException;
62  
63  
64  /**
65   *
66   *
67   * @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
68   * @version $Revision$ $Date: 2004-12-13 14:00:30 -0700 (Mon, 13 Dec 2004) $
69   */
70  public abstract class Exporter
71  {
72  
73      private InternalContext _xmlContext = new BackwardCompatibilityContext();
74      
75      private SearchDescriptor _searchDesc;
76  
77  
78      private ImportDescriptor _importDesc;
79  
80  
81      
82      public void export( OutputStream output, boolean serverSchema, boolean importPolicy )
83  	throws ImportExportException
84      {
85          try {
86              export( _xmlContext.getSerializer( output ), serverSchema, importPolicy );
87          } catch ( IOException except ) {
88              throw new ImportExportException( except );
89          }
90      }
91  
92  
93      public void export( Writer output, boolean serverSchema, boolean importPolicy )
94  	throws ImportExportException
95      {
96          try {
97              export( _xmlContext.getSerializer( output ), serverSchema, importPolicy );
98          } catch ( IOException except ) {
99              throw new ImportExportException( except );
100         }
101     }
102 
103 
104     public abstract void export( DocumentHandler docHandler,
105 				 boolean serverSchema, boolean importPolicy )
106 	throws ImportExportException;
107 
108 
109     public void setSearchDescriptor( SearchDescriptor searchDesc )
110     {
111 	_searchDesc = searchDesc;
112     }
113 
114 
115     public SearchDescriptor getSearchDescriptor()
116     {
117 	return _searchDesc;
118     }
119 
120 
121     public void setImportDescriptor( ImportDescriptor importDesc )
122     {
123 	_importDesc = importDesc;
124     }
125 
126 
127     public ImportDescriptor getImportDescriptor()
128     {
129 	return _importDesc;
130     }
131 
132 
133     public void readSearchDescriptor( InputStream input )
134 	throws IOException, SAXException
135     {
136 	readSearchDescriptor( _xmlContext.getParser(), new InputSource( input ) );
137     }
138 
139 
140     public void readSearchDescriptor( Reader input )
141 	throws IOException, SAXException
142     {
143 	readSearchDescriptor( _xmlContext.getParser(), new InputSource( input ) );
144     }
145 
146 
147     protected void readSearchDescriptor( Parser parser, InputSource input )
148 	throws IOException, SAXException
149     {
150 	SearchDescriptor desc;
151 
152 	desc = new SearchDescriptor();
153 	parser.setDocumentHandler( desc );
154 	parser.parse( input );
155 	setSearchDescriptor( desc );
156     }
157 
158 
159     protected abstract Consumer createConsumer();
160 
161 
162 }
163