1 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 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 { 36 return getDefaultMMCI("MMCI.xml"); 37 } 38 39 public static MMCI getDefaultMMCI(String fileName) throws Exception { 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 { 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 ("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 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 { 74 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 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 xmle.appendChild(ClassToXML.classToXML("org.mmbase.cache.CachePolicy",doc)); 127 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 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 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 [] argv) throws Exception { 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 |