KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > bridge > remote > generator > MMCI


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9  */

10
11 package org.mmbase.bridge.remote.generator;
12 import java.io.*;
13 import java.util.*;
14
15 import javax.xml.parsers.*;
16
17 import org.mmbase.util.XMLBasicReader;
18 import org.mmbase.util.xml.XMLWriter;
19 import org.w3c.dom.*;
20
21 /**
22  * @author Kees Jongenburger <keesj@dds.nl>
23  **/

24 public class MMCI {
25     Map classes;
26     List classesList;
27
28     private static MMCI STATIC_MMCI = null;
29
30     public MMCI(){
31         classes = new HashMap();
32         classesList = new ArrayList();
33     }
34
35     public static MMCI getDefaultMMCI() throws Exception JavaDoc{
36         return getDefaultMMCI("MMCI.xml");
37     }
38
39     public static MMCI getDefaultMMCI(String JavaDoc fileName) throws Exception JavaDoc{
40         if (MMCI.STATIC_MMCI == null){
41             DocumentBuilder db = XMLBasicReader.getDocumentBuilder(false);
42             MMCI.STATIC_MMCI = MMCI.fromXML(db.parse(fileName));
43         }
44         return MMCI.STATIC_MMCI;
45     }
46
47     public static MMCI fromXML(Document document) throws Exception JavaDoc{
48         MMCI mmci = new MMCI();
49         Element xmle = document.getDocumentElement();
50         NodeList nls = xmle.getChildNodes();
51         for(int i = 0; i < nls.getLength(); i++) {
52             Node element = nls.item(i);
53             if (element instanceof Element) {
54                 XMLClass myClass = XMLClass.fromXML((Element)element);
55                 if (myClass == null) throw new Exception JavaDoc("Not found " + element);
56                 mmci.classes.put(myClass.getName(), myClass);
57                 mmci.classesList.add(myClass);
58             }
59         }
60         return mmci;
61     }
62
63     public List getClasses(){
64         return classesList;
65     }
66     public XMLClass getClass(String JavaDoc name) {
67         if (classes.get(name) == null) {
68             return null;
69         }
70         return (XMLClass)((XMLClass)classes.get(name)).clone(true);
71     }
72
73     public static void addDefaultBridgeClasses(Element xmle, Document doc) throws Exception JavaDoc {
74         //mmbase interfaces
75
//xmle.setComment("MMCI XML description file\nCreated on " + new java.util.Date() + "\nby remote.common.MMCI");
76
//should we use BridgeException interface?
77
//xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.BridgeException"));
78

79         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.BridgeList",doc));
80         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Cacheable",doc));
81         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Cloud",doc));
82         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.CloudContext",doc));
83         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Descriptor", doc));
84         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Field",doc));
85         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.FieldIterator",doc));
86         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.FieldList",doc));
87         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.FieldValue",doc));
88         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Module",doc));
89         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.ModuleIterator",doc));
90         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.ModuleList",doc));
91         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Node",doc));
92         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.NodeIterator",doc));
93         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.NodeList",doc));
94         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.NodeManager",doc));
95         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.NodeManagerIterator",doc));
96         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.NodeManagerList",doc));
97         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Relation",doc));
98         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.RelationIterator",doc));
99         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.RelationList",doc));
100         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.RelationManager",doc));
101         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.RelationManagerIterator",doc));
102         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.RelationManagerList",doc));
103         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.StringIterator",doc));
104         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.StringList",doc));
105         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Transaction",doc));
106         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.Query",doc));
107         xmle.appendChild(ClassToXML.classToXML("org.mmbase.bridge.NodeQuery",doc));
108         // storage interfaces
109
xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.Constraint",doc));
110         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.Step",doc));
111         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.RelationStep",doc));
112         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.StepField",doc));
113         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.AggregatedField",doc));
114         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.SortOrder",doc));
115         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.FieldNullConstraint",doc));
116         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.CompareFieldsConstraint",doc));
117         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.FieldValueConstraint",doc));
118         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.FieldValueInConstraint",doc));
119         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.FieldValueBetweenConstraint",doc));
120         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.FieldConstraint",doc));
121         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.LegacyConstraint",doc));
122         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.CompositeConstraint",doc));
123         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.SearchQuery",doc));
124         xmle.appendChild(ClassToXML.classToXML("org.mmbase.storage.search.FieldCompareConstraint",doc));
125         // cache classes
126
xmle.appendChild(ClassToXML.classToXML("org.mmbase.cache.CachePolicy",doc));
127         // datatypes classes
128
xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.DataType", doc));
129         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.DataType$Restriction", doc));
130         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.LengthDataType",doc));
131         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.ComparableDataType",doc));
132         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.BinaryDataType",doc));
133         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.BooleanDataType",doc));
134         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.DateTimeDataType",doc));
135         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.DoubleDataType",doc));
136         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.FloatDataType",doc));
137         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.IntegerDataType",doc));
138         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.ListDataType",doc));
139         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.LongDataType",doc));
140         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.NodeDataType",doc));
141         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.NumberDataType",doc));
142         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.StringDataType",doc));
143         xmle.appendChild(ClassToXML.classToXML("org.mmbase.datatypes.XmlDataType",doc));
144         // security classes
145
xmle.appendChild(ClassToXML.classToXML("org.mmbase.security.UserContext",doc));
146         xmle.appendChild(ClassToXML.classToXML("org.mmbase.security.Rank",doc));
147         xmle.appendChild(ClassToXML.classToXML("org.mmbase.security.AuthenticationData",doc));
148         // function classes
149
xmle.appendChild(ClassToXML.classToXML("org.mmbase.util.functions.ReturnType", doc));
150         xmle.appendChild(ClassToXML.classToXML("org.mmbase.util.functions.Parameter", doc));
151         xmle.appendChild(ClassToXML.classToXML("org.mmbase.util.functions.Parameters", doc));
152         xmle.appendChild(ClassToXML.classToXML("org.mmbase.util.functions.Function", doc));
153
154         xmle.appendChild(ClassToXML.classToXML("org.mmbase.util.LocalizedString", doc));
155
156     }
157
158     public static void main(String JavaDoc [] argv) throws Exception JavaDoc{
159         OutputStream os = System.out;
160         if (argv.length >1){
161             System.err.println("Usage: java org.mmbase.bridge.remote.generator.MMCI <outputfile>");
162         } else {
163             DocumentBuilderFactory docBuilderFac = DocumentBuilderFactory.newInstance();
164             DocumentBuilder docBuilder = docBuilderFac.newDocumentBuilder();
165             DOMImplementation dom= docBuilder.getDOMImplementation();
166             DocumentType doctype = dom.createDocumentType("mmci","//-//MMBase/DTD mmci 1.0//EN//","http://www.mmbase.org/dtd/mmci_1_0.dtd");
167             Document doc = dom.createDocument(null,"mmci",doctype);
168             MMCI.addDefaultBridgeClasses(doc.getDocumentElement(), doc);
169             if (argv.length==1) {
170                 os = new FileOutputStream(argv[0]);
171             }
172         OutputStreamWriter w = new OutputStreamWriter(os);
173         XMLWriter.write(doc,w,true);
174             w.flush();
175         w.close();
176         }
177     }
178
179 }
180
181
Popular Tags