1 20 package org.objectweb.modfact.corba.xmiio.exporter; 21 22 import java.io.ByteArrayOutputStream ; 23 import java.io.IOException ; 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 41 public class XMIExportGenerator extends ZipGenerator { 42 43 private Package [] 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 56 public void setInput(ModelElement[] elt) { 57 input = new Package [elt.length]; 58 for (int i = 0; i < input.length; i++) { 59 input[i] = (Package ) elt[i]; 60 } 61 } 62 63 66 public void setLogger(ModFactLogger log) { 67 logger = log; 68 } 69 70 73 public XMIExportGenerator() { 74 } 75 76 79 public void generate() throws IOException { 80 logger.log(Level.FINE, "Begin generation of JMI Importer"); 81 82 java.util.List redundant_packages = new java.util.ArrayList (); 83 try { 84 for (int i = 0; i < input.length; i++) { 85 org.omg.mof.Model.ModelElement contents[] = input[i].contents(); 86 for (int j = 0; j < contents.length; j++) { 87 if (contents[j]._is_a(org.omg.mof.Model.PackageHelper.id())) { 88 redundant_packages.add(contents[j].ref_mof_id()); 89 } else if (contents[j]._is_a(org.omg.mof.Model.ImportHelper.id())) { 90 org.omg.mof.Model.Import imp = org.omg.mof.Model.ImportHelper.narrow(contents[j]); 91 redundant_packages.add(imp.imported_namespace().ref_mof_id()); 92 } 93 } 94 } 95 } catch (org.omg.mof.Reflective.MofError mofError) { 96 } 98 99 for (int p = 0; p < input.length; p++) { 100 if (redundant_packages.contains(input[p].ref_mof_id())) 102 continue; 103 Package [] param = new Package [1]; 104 param[0] = input[p]; 105 106 try { 107 String path = javaHelper.javaPackage(input[p]) + ".xmi"; 108 path = path.replace('.', '/') + "/"; 109 String className = idlHelper.format1(input[p].name()) + "XMIExport"; 110 String baseFileName = path + className; 111 112 GenerationXMIExport exportGenerator = new GenerationXMIExport(); 113 ByteArrayOutputStream entryOutput1 = new ByteArrayOutputStream (); 114 exportGenerator.setOutput(entryOutput1); 115 setHelpers(exportGenerator); 116 exportGenerator.generateXMIExport(param[0]); 117 writeEntry(baseFileName + ".java", entryOutput1); 118 entryOutput1.close(); 119 120 GenerationXMIExportApplication xmiExportApplication = new GenerationXMIExportApplication(); 122 entryOutput1 = new ByteArrayOutputStream (); 123 xmiExportApplication.setOutput(entryOutput1); 124 setHelpers(xmiExportApplication); 125 xmiExportApplication.generateXMIExportApplication(param[0], className, className + "Application"); 126 writeEntry(baseFileName + "Application.java", entryOutput1); 127 entryOutput1.close(); 128 129 logger.log(Level.FINE, "Importer is generated"); 130 } catch (org.omg.CORBA.UserException userException) { 131 logger.log(Level.FATAL, "An error occurs during the generation (" + userException.getMessage() + ")"); 132 } 133 } 134 out.finish(); 135 logger.log(Level.FINE, " Generation is completed without error"); 136 } 137 138 141 public void setHelpers(AbstractXMIIOGenerator generator) { 142 generator.setIdlHelper(idlHelper); 143 generator.setJavaHelper(javaHelper); 144 generator.setMofHelper(mofHelper); 145 generator.setXmiImpHelper(xmiImportHelper); 146 generator.setMappingValid(mappingValid); 147 } 148 149 152 public void setIdlHelper(IDLCommon common) { 153 idlHelper = common; 154 } 155 156 159 public void setJavaHelper(JavaCommon common) { 160 javaHelper = common; 161 } 162 163 166 public void setMofHelper(MOFCommon common) { 167 mofHelper = common; 168 } 169 170 173 public void setXmiImportHelper(XMIImportCommon common) { 174 xmiImportHelper = common; 175 } 176 177 180 public void setMappingValid(boolean b) { 181 mappingValid = b; 182 } 183 184 } 185 | Popular Tags |