00001 00026 package org.objectweb.jonas_lib.genbase.modifier; 00027 00028 import java.io.File; 00029 00030 import org.objectweb.jonas_lib.genbase.GenBaseException; 00031 import org.objectweb.jonas_lib.genbase.archive.Archive; 00032 import org.objectweb.jonas_lib.genbase.archive.FileArchive; 00033 import org.objectweb.jonas_lib.genbase.archive.J2EEArchive; 00034 import org.objectweb.jonas_lib.genbase.archive.JarArchive; 00035 import org.objectweb.jonas_lib.genbase.generator.Config; 00036 import org.objectweb.jonas_lib.genbase.utils.ArchiveStorer; 00037 import org.objectweb.jonas_lib.genbase.utils.DirStorer; 00038 import org.objectweb.jonas_lib.genbase.utils.JarStorer; 00039 00040 import org.objectweb.jonas.common.Log; 00041 00042 import org.objectweb.util.monolog.api.BasicLevel; 00043 import org.objectweb.util.monolog.api.Logger; 00044 00049 public abstract class ArchiveModifier { 00050 00054 private J2EEArchive archive; 00055 00057 private static Logger logger = Log.getLogger(Log.JONAS_GENBASE_PREFIX); 00058 00063 public ArchiveModifier(J2EEArchive archive) { 00064 this.archive = archive; 00065 } 00066 00072 public abstract Archive modify() throws GenBaseException; 00073 00082 protected static Archive save(Config config, String outname, J2EEArchive archive) throws GenBaseException { 00083 ArchiveStorer storer = null; 00084 File endfile = new File(config.getOut(), outname); 00085 Archive out = null; 00086 00087 if (config.getSaveMode() == Config.PACKED) { 00088 logger.log(BasicLevel.DEBUG, "Saving '" + endfile + "' in packed form..."); 00089 storer = new JarStorer(archive, endfile); 00090 storer.store(); 00091 out = new JarArchive(endfile); 00092 } else { 00093 logger.log(BasicLevel.DEBUG, "Saving '" + endfile + "' in unpacked form..."); 00094 storer = new DirStorer(archive, endfile); 00095 storer.store(); 00096 out = new FileArchive(endfile); 00097 } 00098 00099 return out; 00100 00101 } 00102 00110 protected Archive save(Config config, String outname) throws GenBaseException { 00111 return save(config, outname, archive); 00112 } 00113 00117 public static Logger getLogger() { 00118 return logger; 00119 } 00120 }