Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

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 <packageref>");
        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;
}