KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > dom4j > samples > jaxb > JAXBDemo


1 /*
2  * Copyright 2001-2004 (C) MetaStuff, Ltd. All Rights Reserved.
3  *
4  * This software is open source.
5  * See the bottom of this file for the licence.
6  *
7  * $Id: JAXBDemo.java,v 1.3 2005/01/29 14:52:58 maartenc Exp $
8  */

9
10 package org.dom4j.samples.jaxb;
11
12 import java.io.File JavaDoc;
13 import java.math.BigDecimal JavaDoc;
14 import java.util.Calendar JavaDoc;
15 import java.util.Iterator JavaDoc;
16
17 import org.dom4j.Document;
18 import org.dom4j.Element;
19 import org.dom4j.io.OutputFormat;
20 import org.dom4j.jaxb.JAXBModifier;
21 import org.dom4j.jaxb.JAXBReader;
22 import org.dom4j.jaxb.JAXBWriter;
23 import org.dom4j.test.primer.Items;
24 import org.dom4j.test.primer.ObjectFactory;
25 import org.dom4j.test.primer.PurchaseOrder;
26 import org.dom4j.test.primer.PurchaseOrders;
27 import org.dom4j.test.primer.USAddress;
28
29 /**
30  * JAXB demo
31  *
32  * @author Wonne Keysers (Realsoftware.be)
33  */

34 public class JAXBDemo {
35
36     private File JavaDoc outputDir = new File JavaDoc("build/test/");
37
38     public static void main(String JavaDoc[] args) {
39         JAXBDemo demo = new JAXBDemo();
40         demo.init();
41
42         demo.demoRead();
43         demo.demoReadPrune();
44
45         demo.demoWrite();
46
47         demo.demoModify();
48         demo.demoModifyWrite();
49     }
50
51     public void init() {
52         outputDir.mkdirs();
53     }
54
55     public void demoRead() {
56         try {
57             File JavaDoc inputFile = new File JavaDoc("xml/jaxb/primer.xml");
58
59             JAXBReader jaxbReader = new JAXBReader("org.dom4j.test.primer");
60
61             System.out
62                     .println("Fetched PurchaseOrders using JAXBObjectHandler:");
63             jaxbReader.addObjectHandler("/purchaseOrders/purchaseOrder",
64                     new PurchaseOrderHandler());
65             Document doc = jaxbReader.read(inputFile);
66
67             System.out.println("Fetched PurchaseOrders using DOM4J document:");
68             Iterator JavaDoc orderIt = doc.selectNodes("/purchaseOrders/purchaseOrder")
69                     .iterator();
70             while (orderIt.hasNext()) {
71                 Element elem = (Element) orderIt.next();
72
73                 System.out.println("Order - id:" + elem.attributeValue("id")
74                         + ", date:" + elem.attributeValue("orderDate"));
75             }
76
77             System.out.println("Document:");
78             System.out.println(doc.asXML());
79             System.out.println();
80         } catch (Exception JavaDoc e) {
81             e.printStackTrace();
82         }
83     }
84
85     public void demoReadPrune() {
86         try {
87             File JavaDoc inputFile = new File JavaDoc("xml/jaxb/primer.xml");
88
89             JAXBReader jaxbReader = new JAXBReader("org.dom4j.test.primer");
90
91             System.out
92                     .println("Fetched PurchaseOrders using JAXBObjectHandler:");
93             jaxbReader.setPruneElements(true);
94             jaxbReader.addObjectHandler("/purchaseOrders/purchaseOrder",
95                     new PurchaseOrderHandler());
96             Document doc = jaxbReader.read(inputFile);
97
98             System.out.println("Pruned document:");
99             System.out.println(doc.asXML());
100             System.out.println();
101         } catch (Exception JavaDoc e) {
102             e.printStackTrace();
103         }
104     }
105
106     public void demoWrite() {
107         try {
108             ObjectFactory factory = new ObjectFactory();
109
110             PurchaseOrders orders = factory.createPurchaseOrders();
111
112             // Order 1
113
PurchaseOrder order = factory.createPurchaseOrder();
114
115             USAddress billTo = factory.createUSAddress();
116             billTo.setCity("Cambridge");
117             billTo.setCountry("US");
118             billTo.setName("Robert Smith");
119             billTo.setState("MA");
120             billTo.setStreet("8 Oak Avenue");
121             billTo.setZip(new BigDecimal JavaDoc(12345));
122             order.setBillTo(billTo);
123
124             USAddress shipTo = factory.createUSAddress();
125             shipTo.setCity("Cambridge");
126             shipTo.setCountry("US");
127             shipTo.setName("Alice Smith");
128             shipTo.setState("MA");
129             shipTo.setStreet("123 Maple Street");
130             shipTo.setZip(new BigDecimal JavaDoc(12345));
131             order.setShipTo(shipTo);
132
133             Calendar JavaDoc orderDate = Calendar.getInstance();
134             orderDate.set(2004, 06, 30);
135             order.setOrderDate(orderDate);
136
137             Items items = factory.createItems();
138             order.setItems(items);
139
140             orders.getPurchaseOrder().add(order);
141
142             // Order 2
143
PurchaseOrder order2 = factory.createPurchaseOrder();
144
145             USAddress billTo2 = factory.createUSAddress();
146             billTo2.setCity("Cambridge");
147             billTo2.setCountry("US");
148             billTo2.setName("Robert Smith");
149             billTo2.setState("MA");
150             billTo2.setStreet("8 Oak Avenue");
151             billTo2.setZip(new BigDecimal JavaDoc(12345));
152             order2.setBillTo(billTo2);
153
154             USAddress shipTo2 = factory.createUSAddress();
155             shipTo2.setCity("Cambridge");
156             shipTo2.setCountry("US");
157             shipTo2.setName("Alice Smith");
158             shipTo2.setState("MA");
159             shipTo2.setStreet("123 Maple Street");
160             shipTo2.setZip(new BigDecimal JavaDoc(12345));
161             order2.setShipTo(shipTo2);
162
163             Calendar JavaDoc orderDate2 = Calendar.getInstance();
164             orderDate2.set(2004, 06, 30);
165             order2.setOrderDate(orderDate2);
166
167             Items items2 = factory.createItems();
168             order2.setItems(items2);
169
170             orders.getPurchaseOrder().add(order2);
171
172             File JavaDoc outputFile = new File JavaDoc(outputDir, "jaxbWrite.xml");
173
174             JAXBWriter jaxbWriter = new JAXBWriter("org.dom4j.test.primer",
175                     OutputFormat.createPrettyPrint());
176             jaxbWriter.setOutput(outputFile);
177
178             jaxbWriter.startDocument();
179             jaxbWriter.write(orders);
180             jaxbWriter.endDocument();
181         } catch (Exception JavaDoc e) {
182             e.printStackTrace();
183         }
184     }
185
186     public void demoModify() {
187         try {
188             File JavaDoc inputFile = new File JavaDoc("xml/jaxb/primer.xml");
189
190             JAXBModifier jaxbReader = new JAXBModifier("org.dom4j.test.primer");
191             jaxbReader.addObjectModifier("/purchaseOrders/purchaseOrder",
192                     new PurchaseOrderDateModifier());
193             Document doc = jaxbReader.modify(inputFile);
194
195             System.out.println("Modified document:");
196             System.out.println(doc.asXML());
197             System.out.println();
198         } catch (Exception JavaDoc e) {
199             e.printStackTrace();
200         }
201     }
202
203     public void demoModifyWrite() {
204         try {
205             File JavaDoc inputFile = new File JavaDoc("xml/jaxb/primer.xml");
206
207             File JavaDoc outputFile = new File JavaDoc(outputDir, "testModifyWrite.xml");
208
209             JAXBModifier jaxbModifier = new JAXBModifier(
210                     "org.dom4j.test.primer", OutputFormat.createPrettyPrint());
211             jaxbModifier.setPruneElements(true);
212             jaxbModifier.setOutput(outputFile);
213             jaxbModifier.addObjectModifier("/purchaseOrders/purchaseOrder",
214                     new PurchaseOrderDateModifier());
215             Document doc = jaxbModifier.modify(inputFile);
216
217             System.out.println("Pruned modified document:");
218             System.out.println(doc.asXML());
219             System.out.println();
220         } catch (Exception JavaDoc e) {
221             e.printStackTrace();
222         }
223     }
224
225 }
226
227 /*
228  * Redistribution and use of this software and associated documentation
229  * ("Software"), with or without modification, are permitted provided that the
230  * following conditions are met:
231  *
232  * 1. Redistributions of source code must retain copyright statements and
233  * notices. Redistributions must also contain a copy of this document.
234  *
235  * 2. Redistributions in binary form must reproduce the above copyright notice,
236  * this list of conditions and the following disclaimer in the documentation
237  * and/or other materials provided with the distribution.
238  *
239  * 3. The name "DOM4J" must not be used to endorse or promote products derived
240  * from this Software without prior written permission of MetaStuff, Ltd. For
241  * written permission, please contact dom4j-info@metastuff.com.
242  *
243  * 4. Products derived from this Software may not be called "DOM4J" nor may
244  * "DOM4J" appear in their names without prior written permission of MetaStuff,
245  * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
246  *
247  * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
248  *
249  * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
250  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
251  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
252  * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
253  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
254  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
255  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
256  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
257  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
258  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
259  * POSSIBILITY OF SUCH DAMAGE.
260  *
261  * Copyright 2001-2004 (C) MetaStuff, Ltd. All Rights Reserved.
262  *
263  * $Id: JAXBDemo.java,v 1.3 2005/01/29 14:52:58 maartenc Exp $
264  */

265
Popular Tags