package com.erggroup.mass.ant; import java.io.*; import org.apache.tools.ant.*; import org.apache.tools.ant.taskdefs.Echo; import org.apache.tools.ant.taskdefs.Property; public class PackageRef extends Task { public PackageRef() { includes = "**/*"; runtime = false; verbose = true; } public String getElementType() { return "packageref"; } public void execute() throws BuildException { if(packageName == null || version == null) throw new BuildException("Both 'package' and 'version' must be specified for "); if(name == null) name = "pkg." + packageName; if(verbose) doEcho("Declaring package reference '" + name + "' to '" + packageName + "' version " + version + ""); Property property = new Property(); property.setProject(getProject()); property.setTaskName(getTaskName()); property.setName("env"); property.setEnvironment("env"); property.setValue(""); property.perform(); String s = getProject().replaceProperties("${env.JATS_HOME}"); if("${env.JATS_HOME}".equals(s)) { throw new BuildException("<" + getTaskName() + "> JATS_HOME environment variable not set"); } else { File file = new File(s, packageName); File file1 = new File(file, version); validatePackageDescriptionFile(file1); Property property1 = new Property(); property1.setProject(getProject()); property1.setTaskName(getTaskName()); property1.setName(name); property1.setLocation(file1); property1.execute(); return; } } private void doEcho(String s) { Echo echo = new Echo(); echo.setTaskName(getElementType()); echo.setProject(getProject()); echo.setMessage(s); echo.execute(); } private void validatePackageDescriptionFile(File file) { File file1 = new File(file, "descpkg"); if(!file1.exists() || !file1.isFile()) throw new BuildException("The 'descpkg' file for package '" + name + "' version '" + version + "' does not exist"); try { FileReader filereader = new FileReader(file1); BufferedReader bufferedreader = new BufferedReader(filereader); try { String s = bufferedreader.readLine(); String s1 = s.trim(); if(s == null) throw new BuildException("The 'descpkg' file for package '" + packageName + "' version '" + version + "' does contain the correct version info."); } catch(IOException ioexception) { throw new BuildException("The 'descpkg' file for package '" + name + "' version '" + version + "' could not be read."); } } catch(FileNotFoundException filenotfoundexception) { throw new BuildException("The 'descpkg' file for package '" + name + "' version '" + version + "' does not exist"); } } public void setName(String s) { name = s; } public void setPackage(String s) { packageName = s; } public void setVersion(String s) { version = s; } public void setRuntime(String s) { runtime = "true".equalsIgnoreCase(s); } public String getName() { return name; } public String getPackage() { return packageName; } public String getVersion() { return version; } public boolean isRuntime() { return runtime; } public void setVerbose(String s) { verbose = !"false".equalsIgnoreCase(s); } public boolean isVerbose() { return verbose; } public static final String DPKG_HOME_PROPERTY = "${env.JATS_HOME}"; private String name; private String packageName; private String version; private String includes; private String excludes; private boolean runtime; private boolean verbose; }