001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 2003-2004 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: ArchiveModifier.java 8253 2006-04-18 11:40:19Z sauthieg $
023: * --------------------------------------------------------------------------
024: */package org.objectweb.jonas_lib.genbase.modifier;
025:
026: import java.io.File;
027:
028: import org.objectweb.jonas_lib.genbase.GenBaseException;
029: import org.objectweb.jonas_lib.genbase.archive.Archive;
030: import org.objectweb.jonas_lib.genbase.archive.FileArchive;
031: import org.objectweb.jonas_lib.genbase.archive.J2EEArchive;
032: import org.objectweb.jonas_lib.genbase.archive.JarArchive;
033: import org.objectweb.jonas_lib.genbase.generator.Config;
034: import org.objectweb.jonas_lib.genbase.utils.ArchiveStorer;
035: import org.objectweb.jonas_lib.genbase.utils.DirStorer;
036: import org.objectweb.jonas_lib.genbase.utils.JarStorer;
037:
038: import org.objectweb.jonas.common.Log;
039:
040: import org.objectweb.util.monolog.api.BasicLevel;
041: import org.objectweb.util.monolog.api.Logger;
042:
043: /**
044: * Modify a J2EEArchive
045: * @author Guillaume Sauthier
046: */
047: public abstract class ArchiveModifier {
048:
049: /**
050: * J2EEArchive to be modified
051: */
052: private J2EEArchive archive;
053:
054: /** logger */
055: private static Logger logger = Log
056: .getLogger(Log.JONAS_GENBASE_PREFIX);
057:
058: /**
059: * Creates a new ArchiveModifier object.
060: * @param archive rchive to be modified
061: */
062: public ArchiveModifier(J2EEArchive archive) {
063: this .archive = archive;
064: }
065:
066: /**
067: * Modify the current archive and return a modified archive.
068: * @return a modified archive.
069: * @throws GenBaseException When Archive modification fails
070: */
071: public abstract Archive modify() throws GenBaseException;
072:
073: /**
074: * Save the curernt archive usin given configuration and given out filename.
075: * @param config configuration to use
076: * @param outname filename
077: * @param archive archive to be saved
078: * @return the save Archive
079: * @throws GenBaseException is save fails.
080: */
081: protected static Archive save(Config config, String outname,
082: J2EEArchive archive) throws GenBaseException {
083: ArchiveStorer storer = null;
084: File endfile = new File(config.getOut(), outname);
085: Archive out = null;
086:
087: if (config.getSaveMode() == Config.PACKED) {
088: if (logger.isLoggable(BasicLevel.DEBUG)) {
089: logger.log(BasicLevel.DEBUG, "Saving '" + endfile
090: + "' in packed form...");
091: }
092: storer = new JarStorer(archive, endfile);
093: storer.store();
094: out = new JarArchive(endfile);
095: } else {
096: if (logger.isLoggable(BasicLevel.DEBUG)) {
097: logger.log(BasicLevel.DEBUG, "Saving '" + endfile
098: + "' in unpacked form...");
099: }
100: storer = new DirStorer(archive, endfile);
101: storer.store();
102: out = new FileArchive(endfile);
103: }
104:
105: return out;
106:
107: }
108:
109: /**
110: * Save the current archive using given configuration and given out filename.
111: * @param config configuration to use
112: * @param outname filename
113: * @return the save Archive
114: * @throws GenBaseException is save fails.
115: */
116: protected Archive save(Config config, String outname)
117: throws GenBaseException {
118: return save(config, outname, archive);
119: }
120:
121: /**
122: * @return the logger.
123: */
124: public static Logger getLogger() {
125: return logger;
126: }
127:
128: /**
129: * @return returns the J2EE Archive which wil be modified.
130: */
131: public J2EEArchive getArchive() {
132: return this.archive;
133: }
134: }
|