1 26 27 package org.objectweb.openccm.generator.java.core.lib; 28 29 import org.objectweb.openccm.generator.java.ast.api.*; 31 import org.objectweb.openccm.generator.translator.idl2java.api.IDL_JavaTranslator; 32 import org.objectweb.openccm.generator.common.lib.GenerationException; 33 import java.util.ArrayList ; 34 import java.util.List ; 35 import java.io.File ; 36 37 38 43 44 public class JavaGenerator 45 extends org.objectweb.openccm.generator.common.lib.Generator 46 implements org.objectweb.openccm.generator.java.core.api.JavaGenerator 47 { 48 54 55 private File base_dir_; 56 57 58 public IDL_JavaTranslator translator_; 59 60 66 67 public 68 JavaGenerator() 69 { 70 super(); 71 disableLog(); 72 translator_ = new org.objectweb.openccm.generator.translator.idl2java.lib.IDL_JavaTranslator(); 74 } 75 76 82 87 private void 88 map_class(ClassObject clazz) 89 { 90 create_file(clazz, "out"); 92 put("package_name", clazz.getPackage()); 93 map("FILE_HEADER"); 94 95 put("modifier", compute_class_prefix(clazz)); 97 put("class_imports", clazz.getImports()); 98 put("class_comments", clazz.getComments()); 99 put("class_name", clazz.getName()); 100 put("extends_list", clazz.getInheritedObjects()); 101 put("impl_list", clazz.getImplementedObjects()); 102 put("att_list", clazz.getAttributes()); 103 put("constructor_list", clazz.getConstructors()); 104 put("method_list", clazz.getMethods()); 105 map("CLASS"); 106 107 close("out"); 109 } 110 111 116 private void 117 map_interface(InterfaceObject itf) 118 { 119 create_file(itf, "out"); 121 put("package_name", itf.getPackage()); 122 map("FILE_HEADER"); 123 124 put("modifier", compute_class_prefix(itf)); 126 put("itf_imports", itf.getImports()); 127 put("itf_comments", itf.getComments()); 128 put("itf_name", itf.getName()); 129 put("extends_list", itf.getInheritedObjects()); 130 put("itf_method_list", itf.getMethods()); 131 map("INTERFACE"); 132 133 close("out"); 135 } 136 137 143 149 public void 150 initialize( String app_name, 151 List templates ) 152 { 153 List list = new java.util.ArrayList (); 154 155 156 157 list.clear(); 159 list.add("org/objectweb/openccm/generator/common/common.vm"); 160 list.add("org/objectweb/openccm/generator/java/core/java.vm"); 161 list.addAll(templates); 162 setLibrary(list); 163 164 super.init(); 166 167 168 put("which", app_name); 169 put("gen", this); 170 } 171 172 177 public void 178 generate(Repository rep, String base_dir) 179 { 180 ArrayList decls = null; 181 182 try{ 185 base_dir_ = org.objectweb.openccm.generator.common.lib.FileManager.mkdir(base_dir); 186 }catch(GenerationException ex){ 187 System.err.println(ex.getMessage()); 188 return; 189 } 190 191 decls = rep.getContents(); 193 194 for (int i=0; i<decls.size(); i++) 195 { 196 try{ 198 ClassObject clazz = (ClassObject)decls.get(i); 199 map_class(clazz); 200 }catch(ClassCastException ex1){ 201 try{ 203 InterfaceObject itf = (InterfaceObject)decls.get(i); 204 map_interface(itf); 205 }catch(ClassCastException ex2){ 206 ex2.printStackTrace(); 208 } 209 } 210 } 211 } 212 213 220 public void 221 create_file(InterfaceObject object, String id) 222 { 223 String filename = null; 225 File target_dir = null; 226 227 target_dir = new File ( base_dir_.getAbsolutePath() + 228 File.separatorChar + 229 translator_.getAsDirectory(object.getPackage()) ); 230 try{ 231 org.objectweb.openccm.generator.common.lib.FileManager.mkdir(target_dir); 232 }catch(GenerationException ex){ 233 System.err.println(ex.getMessage()); 234 return; 235 } 236 237 filename = new String ( target_dir.getAbsolutePath() + 238 File.separatorChar + 239 object.getName() + ".java" ); 240 System.out.println( "File '" + filename + "' has been generated"); 241 242 open(filename, id); 244 } 245 246 252 public String 253 compute_class_prefix(InterfaceObject obj) 254 { 255 String result = ""; 256 257 result = obj.getModifier().toString(); 258 if (obj.isAbstract()) 259 result += " abstract"; 260 else if(obj.isFinal()) 261 result += " final"; 262 263 return result; 264 } 265 } 266 | Popular Tags |