Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/enhydra/kelp/common/bridge/XMLCConnectionFactory.java


1   /*
2    * Enhydra Java Application Server Project
3    *
4    * The contents of this file are subject to the Enhydra Public License
5    * Version 1.1 (the "License"); you may not use this file except in
6    * compliance with the License. You may obtain a copy of the License on
7    * the Enhydra web site ( http://www.enhydra.org/ ).
8    *
9    * Software distributed under the License is distributed on an "AS IS"
10   * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
11   * the License for the specific terms governing rights and limitations
12   * under the License.
13   *
14   * The Initial Developer of the Enhydra Application Server is Lutris
15   * Technologies, Inc. The Enhydra Application Server and portions created
16   * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
17   * All Rights Reserved.
18   *
19   * Contributor(s):
20   *
21   */
22  
23  package org.enhydra.kelp.common.bridge;
24  
25  // ToolBox imports
26  import org.enhydra.tool.ToolBoxInfo;
27  
28  // XMLC imports
29  import org.w3c.dom.Document;
30  import org.enhydra.xml.xmlc.dom.XMLCDocument;
31  import org.enhydra.xml.xmlc.XMLCException;
32  import org.enhydra.xml.xmlc.compiler.EditDOM;
33  import org.enhydra.xml.xmlc.metadata.MetaData;
34  
35  // Kelp imports
36  import org.enhydra.kelp.KelpInfo;
37  import org.enhydra.kelp.common.node.OtterXMLCNode;
38  import org.enhydra.kelp.common.node.OtterProject;
39  
40  // Standard imports
41  import java.io.PrintWriter;
42  import java.lang.reflect.Constructor;
43  import java.lang.reflect.Method;
44  
45  //
46  public class XMLCConnectionFactory {
47  
48      // string not to be resourced
49      private static final String EDIT_DOM_CLASS =
50          "org.enhydra.xml.xmlc.compiler.EditDOM"; // nores
51      private static final String ADD_URL_EDITS_METHOD = "addURLEdits"; // nores
52      private static final String ADD_DELETE_CLASSES_METHOD =
53          "addDeleteClasses"; // nores
54  
55      //
56      public XMLCConnectionFactory() {}
57  
58      public static MetaDataHandler createMetaDataHandler() {
59          MetaDataHandler handler = null;
60  
61          if (ToolBoxInfo.isXMLCVersion(2)) {
62              handler = new MetaDataHandlerV2();
63          } else {
64              handler = new MetaDataHandlerV1();
65          }
66          return handler;
67      }
68  
69      public static EditDOM createEditDOM(MetaDataHandler h) {
70          EditDOM editDOM = null;
71  
72          if (ToolBoxInfo.isXMLCVersion(2)) {
73              editDOM = new EditDOM((MetaData) h.getMetaData());
74          } else {
75              Class       editClass = null;
76              Class[]     params = new Class[0];
77              Constructor construct = null;
78              Method[]    meths = new Method[0];
79              Object[]    values = new Object[0];
80  
81              try {
82                  editClass =
83                      Class.forName(XMLCConnectionFactory.EDIT_DOM_CLASS);
84                  construct = editClass.getConstructor(params);
85                  editDOM = (EditDOM) construct.newInstance(params);
86                  meths = editClass.getMethods();
87                  for (int i = 0; i < meths.length; i++) {
88                      if (meths[i].getName().equalsIgnoreCase(XMLCConnectionFactory.ADD_URL_EDITS_METHOD)) {
89                          values = new Object[1];
90                          values[0] = h.getURLMappings();
91                          meths[i].invoke(editDOM, values);
92                          break;
93                      }
94                  }
95                  for (int i = 0; i < meths.length; i++) {
96                      if (meths[i].getName().equalsIgnoreCase(XMLCConnectionFactory.ADD_DELETE_CLASSES_METHOD)) {
97                          values = new Object[1];
98                          values[0] = h.getDeleteElements();
99                          meths[i].invoke(editDOM, values);
100                         break;
101                     }
102                 }
103             } catch (Exception e) {
104                 editClass = null;
105                 e.printStackTrace();
106             }
107         }
108         return editDOM;
109     }
110 
111     public static PrintInfo createPrintInfo(Document doc,
112                                             XMLCDocument xmlcDoc) {
113         PrintInfo pi = null;
114 
115         if (ToolBoxInfo.isXMLCVersion(2)) {
116             pi = new PrintInfoV2(doc, xmlcDoc);
117         } else {
118             pi = new PrintInfoV1(doc, xmlcDoc);
119         }
120         return pi;
121     }
122 
123     public static Generator createGenerator(MetaDataHandler h,
124                                             XMLCDocument doc,
125                                             PrintWriter writer) throws XMLCException {
126         Generator gen = null;
127 
128         if (ToolBoxInfo.isXMLCVersion(2)) {
129             gen = new GeneratorV2(h, doc, writer);
130         } else {
131             gen = new GeneratorV1(h, doc, writer);
132         }
133         return gen;
134     }
135 
136     public static Parser createParser(PrintWriter traceWriter,
137                                       MetaDataHandler metaData) {
138         Parser parser = null;
139 
140         if (ToolBoxInfo.isXMLCVersion(2)) {
141             parser = new ParserV2(traceWriter, metaData);
142         } else {
143             parser = new ParserV1(traceWriter, metaData);
144         }
145         return parser;
146     }
147 
148 }