1 45 package org.openejb.webadmin.ejbgen; 46 47 50 import java.io.File ; 51 import java.io.FileInputStream ; 52 import java.io.FileOutputStream ; 53 import java.io.FileWriter ; 54 import java.io.IOException ; 55 import java.util.StringTokenizer ; 56 import java.util.zip.ZipEntry ; 57 import java.util.zip.ZipOutputStream ; 58 59 public abstract class EJBTemplate 60 { 61 private String name; 62 private String desc; 63 private String auth; 64 private String pack; 65 private String sloc; 66 private String styp; 67 private File cdir; 68 private File ddir; 69 private File backup; 70 private File packup; 71 private String psep = System.getProperty("file.separator"); 72 73 public abstract void createEJB(); 74 public abstract void createEJBXML(); 75 public abstract void createObjCode(); 77 public abstract void createHmeCode(); 78 public abstract void createBenCode(); 79 80 88 public void setVars(String ejbname, String ejbdesc, String ejbauth, String ejbpack, String ejbsloc, String ejbstyp) 89 { 90 name = ejbname; 91 desc = ejbdesc; 92 auth = ejbauth; 93 pack = ejbpack; 94 styp = ejbstyp; 95 sloc = ejbsloc + psep + ejbname; 96 } 97 98 99 103 public void createBackup() 104 { 105 File metaback = new File (backup.getPath() + psep + "META-INF"); 106 File cbdir = new File (backup.getPath()); 107 StringTokenizer dirs = new StringTokenizer (pack,"\\."); 109 110 backup.mkdir(); 111 metaback.mkdir(); 112 113 120 while (dirs.hasMoreTokens()) 121 { 122 File ndir = new File (cbdir.getPath() + psep + dirs.nextToken()); 123 ndir.mkdir(); 124 cbdir = new File (ndir.getPath()); 125 } 126 127 packup = new File (cbdir.getPath()); 128 } 129 130 133 public void createPackage() 134 { 135 cdir = new File (sloc); 136 ddir = new File (sloc); 137 backup = new File (ddir.getPath() + psep + "backup"); 138 StringTokenizer dirs = new StringTokenizer (pack,"\\."); 140 141 ddir.mkdir(); 142 143 150 while (dirs.hasMoreTokens()) 151 { 152 File ndir = new File (cdir.getPath() + psep + dirs.nextToken()); 153 ndir.mkdir(); 154 cdir = new File (ndir.getPath()); 155 } 156 157 } 159 160 166 public void createClass(String ejbname, String ejbobj) 167 { 168 File ejbObj = new File (cdir.getPath() + psep + ejbname + ejbobj); 169 170 if(ejbObj.exists()) 171 { 172 createBackup(); 173 174 File fbackup = new File (packup.getPath() + psep + ejbname + ejbobj); 175 176 ejbObj.renameTo(fbackup); 177 ejbObj.delete(); 178 } 179 180 try 181 { 182 ejbObj.createNewFile(); 183 } 184 catch(IOException e) 185 { 186 System.out.println("Couldn\'t create file!"); 187 } 188 } 189 190 197 public void writeClass(String filename, String code) 198 { 199 File wrtFile = new File (cdir.getPath()+ psep + filename); 200 try 201 { 202 FileWriter wrtWriter = new FileWriter (wrtFile); 203 wrtWriter.write(code); 204 wrtWriter.close(); 205 } 206 catch (IOException e) 207 { 208 System.out.println("File Not Found. - " + e); 209 } 210 } 211 212 217 public void createXML(String filename, String code) 218 { 219 String location = sloc; 220 File metainf = new File (location + psep + "META-INF"); 221 File xmlfile = new File (location + psep + "META-INF" + psep + filename); 222 223 if(metainf.exists()) 224 { 225 if(xmlfile.exists()) 226 { 227 File nfile = new File (backup.getPath() + psep + "META-INF" + psep + filename); 228 xmlfile.renameTo(nfile); 229 xmlfile.delete(); 230 } 231 } 232 else 233 { 234 metainf.mkdir(); 235 } 236 237 try 238 { 239 xmlfile.createNewFile(); 240 241 try 242 { 243 FileWriter ejbWriter = new FileWriter (xmlfile); 244 245 ejbWriter.write(code); 246 ejbWriter.close(); 247 } 248 catch(IOException e1) 249 { 250 System.out.println("I/O Exception: " + e1); 251 } 252 } 253 catch(IOException e) 254 { 255 System.out.println("I/O Exception: " + e); 256 } 257 } 258 259 262 public void buildZipFile() 263 { 264 File bdir = new File (getBeanDir()); 265 File mdir = new File (sloc + psep + "META-INF"); 266 File zdir = new File (sloc); 267 String zname = name + ".zip"; 268 File myZipFile = new File (zdir,zname); 269 byte[] buf = new byte[1024]; 270 271 276 try 277 { 278 myZipFile.createNewFile(); 279 280 ZipOutputStream out = new ZipOutputStream (new FileOutputStream (myZipFile)); 281 File [] mfiles = mdir.listFiles(); 282 File [] bfiles = bdir.listFiles(); 283 StringTokenizer dirs = new StringTokenizer (pack,"\\."); 285 String dpath = ""; 286 287 out.putNextEntry(new ZipEntry ("META-INF/")); 289 290 for(int i = 0; i < mfiles.length; i++) 291 { 292 File cfile = new File (sloc + psep + "META-INF" + 293 psep + mfiles[i].getName()); 294 FileInputStream in = new FileInputStream (cfile); 295 296 out.putNextEntry(new ZipEntry ("META-INF/" + mfiles[i].getName())); 298 299 int len; 301 while ((len = in.read(buf)) > 0) { 302 out.write(buf, 0, len); 303 } 304 305 out.closeEntry(); 307 in.close(); 308 } 309 310 312 319 while(dirs.hasMoreTokens()) 320 { 321 dpath = dpath + dirs.nextToken() + "/"; 322 out.putNextEntry(new ZipEntry (dpath)); 323 } 325 326 328 for(int i = 0; i < bfiles.length; i++) 329 { 330 File cfile = new File (getBeanDir() + psep + bfiles[i].getName()); 331 FileInputStream in = new FileInputStream (cfile); 332 333 out.putNextEntry(new ZipEntry (dpath + bfiles[i].getName())); 335 336 int len; 338 while ((len = in.read(buf)) > 0) { 339 out.write(buf, 0, len); 340 } 341 342 out.closeEntry(); 344 in.close(); 345 } 346 347 349 out.close(); 350 } 351 catch(IOException e) 352 { 353 System.out.println("I/O Exception: " + e); 354 } 355 } 356 357 362 public String getBeanDir() 363 { 364 StringTokenizer dirs = new StringTokenizer (pack,"\\."); 366 String beandir = sloc; 367 368 373 while (dirs.hasMoreTokens()) 374 { 375 beandir = beandir + psep + dirs.nextToken(); 376 } 377 378 379 return beandir; 381 } 382 } 383 | Popular Tags |