KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > modfact > corba > idl2java > IDL2JavaMOF1_3Generator


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.idl2java;
21
22 import java.io.ByteArrayOutputStream JavaDoc;
23 import java.io.IOException JavaDoc;
24
25 import org.objectweb.modfact.corba.generator.ZipGenerator;
26 import org.objectweb.modfact.corba.helper.JavaCommon;
27 import org.objectweb.modfact.corba.helper.MOFCommon;
28 import org.objectweb.modfact.corba.logging.Level;
29 import org.objectweb.modfact.corba.logging.ModFactLogger;
30
31 public class IDL2JavaMOF1_3Generator extends ZipGenerator {
32
33     private org.omg.mof.Model.Package[] input;
34
35     private MOFCommon mofHelper;
36
37     private JavaCommon javaHelper;
38
39     private ModFactLogger logger;
40
41     /**
42      * Set Input
43      */

44     public void setInput(org.omg.mof.Model.ModelElement[] elt) {
45         input = new org.omg.mof.Model.Package[elt.length];
46         for (int i = 0; i < input.length; i++) {
47             input[i] = (org.omg.mof.Model.Package) elt[i];
48         }
49     }
50
51     /**
52      * Set Trace
53      */

54     public void setLogger(ModFactLogger log) {
55         logger = log;
56     }
57
58     /**
59      * Generate
60      */

61     public void generate()
62         throws
63             org.omg.mof.Reflective.MofError,
64             org.omg.CORBA.TypeCodePackage.BadKind JavaDoc,
65             org.omg.CORBA.TypeCodePackage.Bounds JavaDoc,
66             org.omg.mof.Reflective.NotSet,
67             java.io.FileNotFoundException JavaDoc,
68             IOException JavaDoc {
69
70         //mofHelper = new MOFCachedProvider(input);
71
logger.log(Level.FINE, "IDL2Java Start Generation of "+input.length+" packages");
72         for (int i = 0; i < input.length; i++) {
73
74             if (input[i]
75                 .visibility()
76                 .equals(org.omg.mof.Model.VisibilityKind.public_vis)) {
77
78                 org.omg.mof.Model.Package[] apackage =
79                     new org.omg.mof.Model.Package[1];
80                 apackage[0] = input[i];
81                 
82                 logger.log(Level.FINE , "package "+apackage[0].name());
83
84                 //Traitemement du Package
85
PackageImplementationGenerator packageImpl =
86                     new PackageImplementationGenerator();
87                 packageImpl.setInput(apackage);
88                 ByteArrayOutputStream JavaDoc entryOutput1 =
89                     new ByteArrayOutputStream JavaDoc();
90                 packageImpl.setOutput(entryOutput1);
91                 packageImpl.setMofHelper(mofHelper);
92                 packageImpl.setJavaHelper(javaHelper);
93                 packageImpl.generate();
94
95                 String JavaDoc entryName =
96                     javaHelper.format1Idl2JavaConflict(
97                         input[i].name() + "Package")
98                         + "Impl.java";
99                 writeEntry(entryName, entryOutput1);
100                 entryOutput1.close();
101
102                 PackageFactoryImplementationGenerator packageFactoryImpl =
103                     new PackageFactoryImplementationGenerator();
104                 packageFactoryImpl.setInput(apackage);
105                 //PipedOutputStream entryOutput2 = new PipedOutputStream();
106
ByteArrayOutputStream JavaDoc entryOutput2 =
107                     new ByteArrayOutputStream JavaDoc();
108                 packageFactoryImpl.setOutput(entryOutput2);
109                 packageFactoryImpl.setMofHelper(mofHelper);
110                 packageFactoryImpl.setJavaHelper(javaHelper);
111                 packageFactoryImpl.generate();
112                 entryName =
113                     javaHelper.format1Idl2JavaConflict(
114                         input[i].name() + "PackageFactory")
115                         + "Impl.java";
116                 writeEntry(entryName, entryOutput2);
117                 entryOutput2.close();
118
119                 //packageFactoryImpl.closeFile();
120

121                 //Traitement des Classes
122
org.omg.mof.Model.Class[] classes =
123                     mofHelper.classesOfPackage(input[i]);
124
125                 for (int j = 0; j < classes.length; j++) {
126                     logger.log(Level.FINE, "Class "+classes[j].name());
127                     if (classes[0].visibility()
128                         == org.omg.mof.Model.VisibilityKind.public_vis) {
129
130                         org.omg.mof.Model.Class[] aclass =
131                             new org.omg.mof.Model.Class[1];
132                         aclass[0] = classes[j];
133
134                         // Cette Partie génère toutes les ClasseProxy
135

136                         ClassProxyImplementationGenerator classProxyImpl =
137                             new ClassProxyImplementationGenerator();
138                         classProxyImpl.setInput(aclass);
139                         //PipedOutputStream entryOutputCP =
140
// new PipedOutputStream();
141
ByteArrayOutputStream JavaDoc entryOutputCP =
142                             new ByteArrayOutputStream JavaDoc();
143                         classProxyImpl.setOutput(entryOutputCP);
144                         classProxyImpl.setMofHelper(mofHelper);
145                         classProxyImpl.setJavaHelper(javaHelper);
146                         classProxyImpl.generate();
147                         String JavaDoc entryNameCP =
148                             javaHelper.format1Idl2JavaConflict(
149                                 javaHelper.javaClassName(classes[j]) + "Class")
150                                 + "Impl.java";
151                         writeEntry(entryNameCP, entryOutputCP);
152                         entryOutputCP.close();
153                         logger.log(Level.FINER , "Entry "+entryNameCP+" has been added");
154
155                         // Cette partie génère toutes les Classes non abstraites
156
if (!(classes[j].is_abstract())) {
157                             ClassImplementationGenerator classImpl =
158                                 new ClassImplementationGenerator();
159                             classImpl.setInput(aclass);
160                             //PipedOutputStream entryOutputC = new PipedOutputStream();
161
ByteArrayOutputStream JavaDoc entryOutputC =
162                                 new ByteArrayOutputStream JavaDoc();
163                             classImpl.setOutput(entryOutputC);
164                             classImpl.setMofHelper(mofHelper);
165                             classImpl.setJavaHelper(javaHelper);
166                             classImpl.generate();
167
168                             String JavaDoc entryNameC =
169                                 javaHelper.format1Idl2JavaConflict(
170                                     javaHelper.javaClassName(classes[j]))
171                                     + "Impl.java";
172                             writeEntry(entryNameC, entryOutputC);
173                             entryOutputC.close();
174                             logger.log(Level.FINER , "Entry "+entryNameC+" has been added");
175                         }
176                     }
177                 }
178
179                 //Traitement des Associations
180
org.omg.mof.Model.Association[] associations =
181                     mofHelper.associationsOfPackage(input[i]);
182                 for (int j = 0; j < associations.length; j++) {
183                     if (associations[j].visibility()
184                         == org.omg.mof.Model.VisibilityKind.public_vis) {
185                         org.omg.mof.Model.Association[] anasso =
186                             new org.omg.mof.Model.Association[1];
187                         anasso[0] = associations[j];
188
189                         AssociationImplementationGenerator associationImpl =
190                             new AssociationImplementationGenerator();
191                         associationImpl.setInput(anasso);
192                         //PipedOutputStream entryOutputA = new PipedOutputStream();
193
ByteArrayOutputStream JavaDoc entryOutputA =
194                             new ByteArrayOutputStream JavaDoc();
195                         associationImpl.setOutput(entryOutputA);
196                         associationImpl.setMofHelper(mofHelper);
197                         associationImpl.setJavaHelper(javaHelper);
198                         associationImpl.generate();
199
200                         String JavaDoc entryNameA =
201                             javaHelper.format1Idl2JavaConflict(
202                                 associations[j].name())
203                                 + "Impl.java";
204                         writeEntry(entryNameA, entryOutputA);
205                         entryOutputA.close();
206                     }
207                 }
208
209                 //Traitement des nested packages
210
org.omg.mof.Model.Package[] packages =
211                     mofHelper.packagesOfPackage(input[i]);
212                 if (packages.length != 0) {
213                     IDL2JavaMOF1_3Generator javaGenerator =
214                         new IDL2JavaMOF1_3Generator();
215                     javaGenerator.setLogger(logger);
216                     javaGenerator.setInput(packages);
217                     javaGenerator.setMofHelper(mofHelper);
218                     javaGenerator.setJavaHelper(javaHelper);
219                     ByteArrayOutputStream JavaDoc entryOutputPackage =
220                         new ByteArrayOutputStream JavaDoc();
221                     javaGenerator.setOutput(entryOutputPackage);
222                     javaGenerator.generate();
223
224                     String JavaDoc entryNameP =
225                         javaHelper.format1Idl2JavaConflict(input[i].name())
226                             + "NestedPackages.zip";
227                     writeEntry(entryNameP, entryOutputPackage);
228                     entryOutputPackage.close();
229                 }
230
231             }
232         }
233         logger.log(Level.FINE, "IDL2Java Generation of "+input.length+" packages ended !!!");
234         out.finish();
235     }
236
237     /**
238      * Returns the javaHelper.
239      * @return JavaCommon
240      */

241     public JavaCommon getJavaHelper() {
242         return javaHelper;
243     }
244
245     /**
246      * Returns the mofHelper.
247      * @return MOFCommon
248      */

249     public MOFCommon getMofHelper() {
250         return mofHelper;
251     }
252
253     /**
254      * Sets the javaHelper.
255      * @param javaHelper The javaHelper to set
256      */

257     public void setJavaHelper(JavaCommon javaHelper) {
258         this.javaHelper = javaHelper;
259     }
260
261     /**
262      * Sets the mofHelper.
263      * @param mofHelper The mofHelper to set
264      */

265     public void setMofHelper(MOFCommon mofHelper) {
266         this.mofHelper = mofHelper;
267     }
268
269 }
Popular Tags