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 }