KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > modfact > corba > xmiio > importer > XMIImportGenerator


1 /**
2  * copyright 2002 2003 Laboratoire d'Informatique Paris 6 (LIP6)
3  *
4  * This file is part of ModFact.
5  *
6  * ModFact is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * at your option) any later version.
10  *
11  * ModFact is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with ModFact; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  */

20 package org.objectweb.modfact.corba.xmiio.importer;
21
22 import java.io.ByteArrayOutputStream JavaDoc;
23 import java.io.IOException JavaDoc;
24 import org.objectweb.modfact.corba.logging.Level;
25 import org.objectweb.modfact.corba.logging.ModFactLogger;
26 import org.objectweb.modfact.corba.xmiio.common.AbstractXMIIOGenerator;
27
28 import org.omg.mof.Model.ModelElement;
29 import org.omg.mof.Model.Package;
30
31 import org.objectweb.modfact.corba.generator.ZipGenerator;
32 import org.objectweb.modfact.corba.helper.IDLCommon;
33 import org.objectweb.modfact.corba.helper.JavaCommon;
34 import org.objectweb.modfact.corba.helper.MOFCommon;
35 import org.objectweb.modfact.corba.helper.XMIImportCommon;
36
37 /**
38  * An abstract implementation of an XMI Import application.
39  * This class provides methods for all XMI importers.
40  */

41 public class XMIImportGenerator extends ZipGenerator {
42
43     private Package JavaDoc[] input;
44
45     private ModFactLogger logger;
46
47     private MOFCommon mofHelper;
48     private JavaCommon javaHelper;
49     private IDLCommon idlHelper;
50     private XMIImportCommon xmiImportHelper;
51     private boolean mappingValid;
52
53     /**
54      * Set Input
55      */

56     public void setInput(ModelElement[] elt) {
57         input = new Package JavaDoc[elt.length];
58         for (int i = 0; i < input.length; i++) {
59             input[i] = (Package JavaDoc) elt[i];
60         }
61     }
62
63     /**
64      * Set Trace
65      */

66     public void setLogger(ModFactLogger log) {
67         logger = log;
68     }
69
70     public XMIImportGenerator() {
71     }
72
73     /**
74      * @see org.objectweb.modfact.generation.Generator#generate()
75      */

76     public void generate() throws IOException JavaDoc {
77         logger.log(Level.FINE, "Begin generation of JMI Importer");
78
79         java.util.List JavaDoc redundant_packages = new java.util.ArrayList JavaDoc();
80         try {
81             for (int i = 0; i < input.length; i++) {
82                 org.omg.mof.Model.ModelElement contents[] = input[i].contents();
83                 for (int j = 0; j < contents.length; j++) {
84                     if (contents[j]._is_a(org.omg.mof.Model.PackageHelper.id())) {
85                         redundant_packages.add(contents[j].ref_mof_id());
86                     } else if (contents[j]._is_a(org.omg.mof.Model.ImportHelper.id())) {
87                         org.omg.mof.Model.Import imp = org.omg.mof.Model.ImportHelper.narrow(contents[j]);
88                         redundant_packages.add(imp.imported_namespace().ref_mof_id());
89                     }
90                 }
91             }
92         } catch (org.omg.mof.Reflective.MofError mofError) {
93             // Nothing to do.
94
}
95
96         for (int p = 0; p < input.length; p++) {
97             //Traitemement du Package
98
if (redundant_packages.contains(input[p].ref_mof_id()))
99                 continue;
100             Package JavaDoc[] param = new Package JavaDoc[1];
101             param[0] = input[p];
102
103             try {
104                 String JavaDoc path = javaHelper.javaPackage(input[p]) + ".xmi";
105                 path = path.replace('.', '/') + "/";
106                 String JavaDoc className = idlHelper.format1(input[p].name()) + "XMIImport";
107                 String JavaDoc baseFileName = path + className;
108
109                 GenerationXMIImport importGenerator = new GenerationXMIImport();
110                 ByteArrayOutputStream JavaDoc entryOutput1 = new ByteArrayOutputStream JavaDoc();
111                 importGenerator.setOutput(entryOutput1);
112                 setHelpers(importGenerator);
113                 importGenerator.generateXMIImport(param[0]);
114                 writeEntry(baseFileName + ".java", entryOutput1);
115                 entryOutput1.close();
116
117                 // XMIImportAttributes
118
GenerationXMIImportAttributes xmiImportAttributes = new GenerationXMIImportAttributes();
119                 entryOutput1 = new ByteArrayOutputStream JavaDoc();
120                 xmiImportAttributes.setOutput(entryOutput1);
121                 setHelpers(xmiImportAttributes);
122                 xmiImportAttributes.generateXMIImportAttributes(param[0], className + "Attributes");
123                 writeEntry(baseFileName + "Attributes.java", entryOutput1);
124                 entryOutput1.close();
125
126                 // XMIImportClasses
127
GenerationXMIImportClasses xmiImportClasses = new GenerationXMIImportClasses();
128                 entryOutput1 = new ByteArrayOutputStream JavaDoc();
129                 xmiImportClasses.setOutput(entryOutput1);
130                 setHelpers(xmiImportClasses);
131                 xmiImportClasses.generateXMIImportClasses(param[0], className + "Classes");
132                 writeEntry(baseFileName + "Classes.java", entryOutput1);
133                 entryOutput1.close();
134
135                 // XMIImportAssociations
136
GenerationXMIImportAssociations xmiImportAssociations = new GenerationXMIImportAssociations();
137                 entryOutput1 = new ByteArrayOutputStream JavaDoc();
138                 xmiImportAssociations.setOutput(entryOutput1);
139                 setHelpers(xmiImportAssociations);
140                 xmiImportAssociations.generateXMIImportAssociations(param[0], className + "Associations");
141                 writeEntry(baseFileName + "Associations.java", entryOutput1);
142                 entryOutput1.close();
143
144                 // XMIImportApplication
145
GenerationXMIImportApplication xmiImportApplication = new GenerationXMIImportApplication();
146                 entryOutput1 = new ByteArrayOutputStream JavaDoc();
147                 xmiImportApplication.setOutput(entryOutput1);
148                 setHelpers(xmiImportApplication);
149                 xmiImportApplication.generateXMIImportApplication(param[0], className, className + "Application");
150                 writeEntry(baseFileName + "Application.java", entryOutput1);
151                 entryOutput1.close();
152
153                 logger.log(Level.FINE, "Importer is generated");
154             } catch (org.omg.CORBA.UserException JavaDoc userException) {
155                 logger.log(Level.FATAL, "An error occurs during the generation (" + userException.getMessage() + ")");
156             }
157         }
158         out.finish();
159         logger.log(Level.FINE, " Generation is completed without error");
160     }
161
162     /**
163      * Sets the helpers
164      */

165     public void setHelpers(AbstractXMIIOGenerator generator) {
166         generator.setIdlHelper(idlHelper);
167         generator.setJavaHelper(javaHelper);
168         generator.setMofHelper(mofHelper);
169         generator.setXmiImpHelper(xmiImportHelper);
170         generator.setMappingValid(mappingValid);
171     }
172
173     /**
174      * @param common
175      */

176     public void setIdlHelper(IDLCommon common) {
177         idlHelper = common;
178     }
179
180     /**
181      * @param common
182      */

183     public void setJavaHelper(JavaCommon common) {
184         javaHelper = common;
185     }
186
187     /**
188      * @param common
189      */

190     public void setMofHelper(MOFCommon common) {
191         mofHelper = common;
192     }
193
194     /**
195      * @param common
196      */

197     public void setXmiImportHelper(XMIImportCommon common) {
198         xmiImportHelper = common;
199     }
200
201     /**
202      * @param b
203      */

204     public void setMappingValid(boolean b) {
205         mappingValid = b;
206     }
207
208 }
209
Popular Tags