1 20 package org.objectweb.modfact.corba.xmiio.importer; 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 XMIImportGenerator 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 public XMIImportGenerator() { 71 } 72 73 76 public void generate() throws IOException { 77 logger.log(Level.FINE, "Begin generation of JMI Importer"); 78 79 java.util.List redundant_packages = new java.util.ArrayList (); 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 } 95 96 for (int p = 0; p < input.length; p++) { 97 if (redundant_packages.contains(input[p].ref_mof_id())) 99 continue; 100 Package [] param = new Package [1]; 101 param[0] = input[p]; 102 103 try { 104 String path = javaHelper.javaPackage(input[p]) + ".xmi"; 105 path = path.replace('.', '/') + "/"; 106 String className = idlHelper.format1(input[p].name()) + "XMIImport"; 107 String baseFileName = path + className; 108 109 GenerationXMIImport importGenerator = new GenerationXMIImport(); 110 ByteArrayOutputStream entryOutput1 = new ByteArrayOutputStream (); 111 importGenerator.setOutput(entryOutput1); 112 setHelpers(importGenerator); 113 importGenerator.generateXMIImport(param[0]); 114 writeEntry(baseFileName + ".java", entryOutput1); 115 entryOutput1.close(); 116 117 GenerationXMIImportAttributes xmiImportAttributes = new GenerationXMIImportAttributes(); 119 entryOutput1 = new ByteArrayOutputStream (); 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 GenerationXMIImportClasses xmiImportClasses = new GenerationXMIImportClasses(); 128 entryOutput1 = new ByteArrayOutputStream (); 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 GenerationXMIImportAssociations xmiImportAssociations = new GenerationXMIImportAssociations(); 137 entryOutput1 = new ByteArrayOutputStream (); 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 GenerationXMIImportApplication xmiImportApplication = new GenerationXMIImportApplication(); 146 entryOutput1 = new ByteArrayOutputStream (); 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 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 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 176 public void setIdlHelper(IDLCommon common) { 177 idlHelper = common; 178 } 179 180 183 public void setJavaHelper(JavaCommon common) { 184 javaHelper = common; 185 } 186 187 190 public void setMofHelper(MOFCommon common) { 191 mofHelper = common; 192 } 193 194 197 public void setXmiImportHelper(XMIImportCommon common) { 198 xmiImportHelper = common; 199 } 200 201 204 public void setMappingValid(boolean b) { 205 mappingValid = b; 206 } 207 208 } 209 | Popular Tags |