/**
* <copyright>
*
* This program and the accompanying materials are made available under the
* terms of the MIT license (X11 license) which accompanies this distribution.
*
* </copyright>
*/
package rtt.ant;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import rtt.core.manager.Manager;
import rtt.core.utils.RTTLogging;
/**
*
* This class represents the Ant-task for building a new Archive. <br>
* An empty archive will be initialized. A default configuration can be set.<br>
* According taskdefs are needed<br>
* <br>
* Example:<br>
* <br>
* <pre>
* <target name="create">
* <createArchive
* archive="$path-to-resulting-archive"
* overwrite="false"
* defaultConfiguration="defConfig">
* </createArchive>
* </target>
*</pre>
*
*
*
* @author Peter Mucha
*
*/
public class CreateArchive extends Task {
private String archive = null;
private String dconfig = null;
private boolean owrite = false;
private String log = null;
public String getArchive() {return archive;}
public void setArchive(String archive) {this.archive = archive;}
public boolean isOverwrite() {return owrite;}
public void setOverwrite(boolean owrite) {this.owrite = owrite;}
public String getDefaultConfiguration() {return dconfig;}
public void setDefaultConfiguration(String c) {this.dconfig = c;}
public void setLog(String log) {this.log = log;}
public void execute() throws BuildException {
Manager manager = null;
File archiveFile = new File(archive);
try {
manager = new Manager(archiveFile, true);
boolean loaded = false;
try {
if (!owrite) {
manager.loadArchive(archiveFile);
RTTLogging.info("Archive loaded");
loaded = true;
}
} catch (Exception e) { /* no archive exists */}
if (!loaded) {
RTTLogging.info("Create Archive");
manager.createArchive(archiveFile);
}
// Make appropriate log entry if it changed!
manager.setDefaultConfiguration(dconfig);
RTTLogging.info("Save archive to: "+ archive);
manager.saveArchive(new File(archive));
} catch (Exception e) {
e.printStackTrace();
throw new BuildException(e);
} finally {
if (log != null) {
try {
if (manager != null) {
manager.exportLog(new File(log));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}