KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > xmldb > other > StoreDocument


1 // You can redistribute this software and/or modify it under the terms of
2
// the Ozone Library License version 1 published by ozone-db.org.
3
//
4
// The original code and portions created by SMB are
5
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
6
//
7
package test.xmldb.other;
8
9 import org.apache.xerces.parsers.DOMParser;
10 import org.apache.xml.serialize.OutputFormat;
11 import org.apache.xml.serialize.XMLSerializer;
12 import org.ozoneDB.ExternalDatabase;
13 import org.ozoneDB.ExternalTransaction;
14 import org.ozoneDB.OzoneProxy;
15 import org.ozoneDB.xml.core.XMLCollection;
16 import org.ozoneDB.xml.util.XMLContainer;
17 import org.w3c.dom.Document JavaDoc;
18 import org.w3c.dom.Node JavaDoc;
19 import org.xml.sax.InputSource JavaDoc;
20 import org.xmldb.api.DatabaseManager;
21 import org.xmldb.api.base.Collection;
22 import org.xmldb.api.modules.XMLResource;
23 import test.xmldb.Constants;
24
25 import java.io.BufferedReader JavaDoc;
26 import java.io.FileReader JavaDoc;
27 import java.io.StringWriter JavaDoc;
28 import java.util.Iterator JavaDoc;
29 /**
30  * @author Per Nyfelt
31  */

32 public class StoreDocument implements Constants {
33     
34     ExternalDatabase db = null;
35     
36     /** Creates new StoreDocument */
37     public StoreDocument() {
38         try {
39             createCollection();
40             Class JavaDoc c = Class.forName(driver);
41
42             //Database database = (Database) c.newInstance();
43
System.out.println("collectionURI is " + collectionURI);
44             Collection col = DatabaseManager.getCollection(collectionURI);
45             //Collection col = database.getCollection(collectionURI);
46
Document JavaDoc doc = parseDocument();
47             XMLResource resource = (XMLResource)col.getResource(resourceName);
48             if (resource == null) {
49                 OzoneProxy o = db.objectForName(resourceName);
50                 if (o != null) {
51                     System.out.println("Object found as db oject, deleting it..");
52                     db.deleteObject(o);
53                 }
54                 System.out.println("resource is null, create the resource with name " + resourceName);
55                 resource = (XMLResource) col.createResource(resourceName, XMLResource.RESOURCE_TYPE);
56             }
57             else {
58                 System.out.println("deleting resource" + resourceName);
59                 col.removeResource(resource);
60                 resource = (XMLResource) col.createResource(resourceName, XMLResource.RESOURCE_TYPE);
61             }
62             System.out.println("Created resource " + resourceName + " with id " + resource.getId());
63             // double check to see if it actually works
64
resource = (XMLResource)col.getResource(resourceName);
65             System.out.println("Resource found with name " + resource.getId());
66             resource.setContentAsDOM(doc);
67             System.out.println("Updated content: " + resource.getContent());
68             col.storeResource(resource);
69             //System.out.println("Stored the following Document:\n" + toString(doc));
70
System.out.println("Stored the following Document:\n" + doc.getDocumentElement().getTagName());
71             col.close();
72             db.close();
73         }
74         catch (Exception JavaDoc e) {
75             System.out.println(e.getMessage());
76             e.printStackTrace();
77         }
78     }
79
80     private void createCollection() throws Exception JavaDoc {
81         try {
82             connect();
83             // check if there is an object there already in that case delete it
84
// we assume we are cleaning up after an usuccessful testrun
85
XMLCollection test = (XMLCollection)db.objectForName(collectionName);
86             if (test != null) {
87                 deleteCollection();
88                 connect();
89             }
90             // create a new Collection
91
org.ozoneDB.xml.cli.CollectionFactory.create( db, collectionName );
92         } catch (Exception JavaDoc e) {
93             e.printStackTrace();
94             throw e;
95         }
96     }
97     
98     private void connect() throws Exception JavaDoc {
99         if (db == null || !db.isOpen()) {
100             db = ExternalDatabase.openDatabase(dbURI);
101             System.out.println("StoreDocument.connect() - connected");
102             db.reloadClasses();
103         }
104     }
105     public void deleteCollection() {
106         try {
107             connect();
108             XMLCollection collection = (XMLCollection)db.objectForName(collectionName);
109             Iterator JavaDoc it = collection.getResources().iterator();
110             while (it.hasNext()) {
111                 XMLContainer.forName(db,(String JavaDoc)it.next()).delete();
112             }
113             db.deleteObject(collection);
114             System.out.println("StoreDocument.deleteCollection() - deleted " + collectionName);
115             db.close();
116         } catch (Exception JavaDoc e) {
117             e.printStackTrace();
118         }
119     }
120     Document JavaDoc parseDocument() throws Exception JavaDoc {
121         BufferedReader JavaDoc in = new BufferedReader JavaDoc(new FileReader JavaDoc(fileName));
122         InputSource JavaDoc source = new InputSource JavaDoc(in);
123         DOMParser parser = new DOMParser();
124         parser.parse(source);
125         return parser.getDocument();
126     }
127
128     private XMLSerializer getSerializer() throws Exception JavaDoc{
129         StringWriter JavaDoc writer = new StringWriter JavaDoc();
130         XMLSerializer serializer = new XMLSerializer(writer, new OutputFormat("xml", "UTF-8", true));
131         return serializer;
132     }
133     
134     protected static void domStore( String JavaDoc id, Node JavaDoc doc ) throws Exception JavaDoc {
135         String JavaDoc dbURI = "ozonedb:remote://localhost:3333";
136         ExternalDatabase db = ExternalDatabase.openDatabase(dbURI);
137         XMLContainer container = XMLContainer.forName( db, id );
138         if (container == null) {
139             container = XMLContainer.newContainer( db, id );
140         }
141         
142         ExternalTransaction tx = db.newTransaction();
143         try {
144             long start = System.currentTimeMillis();
145      
146             tx.begin();
147             start = System.currentTimeMillis();
148             container.storeDOM( null, doc );
149             System.out.println( "DOM store: store time: " + (System.currentTimeMillis() - start) + " ms" );
150             
151             start = System.currentTimeMillis();
152             tx.commit();
153             System.out.println( "DOM store: commit time: " + (System.currentTimeMillis() - start) + " ms" );
154         } catch (Exception JavaDoc e) {
155             tx.rollback();
156             throw e;
157         }
158     }
159     public static void main( String JavaDoc args[] ) {
160         new StoreDocument();
161     }
162 }
163
Popular Tags