Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1974 jgill 1
package com.erggroup.mass.ant;
2
 
3
import java.io.*;
4
import org.apache.tools.ant.*;
5
import org.apache.tools.ant.taskdefs.Echo;
6
import org.apache.tools.ant.taskdefs.Property;
7
 
8
public class PackageRef extends Task
9
{
10
 
11
    public PackageRef()
12
    {
13
        includes = "**/*";
14
        runtime = false;
15
        verbose = true;
16
    }
17
 
18
    public String getElementType()
19
    {
20
        return "packageref";
21
    }
22
 
23
    public void execute()
24
        throws BuildException
25
    {
26
        if(packageName == null || version == null)
27
            throw new BuildException("Both 'package' and 'version' must be specified for <packageref>");
28
        if(name == null)
29
            name = "pkg." + packageName;
30
        if(verbose)
31
            doEcho("Declaring package reference '" + name + "' to '" + packageName + "' version " + version + "");
32
        Property property = new Property();
33
        property.setProject(getProject());
34
        property.setTaskName(getTaskName());
35
        property.setName("env");
36
        property.setEnvironment("env");
37
        property.setValue("");
38
        property.perform();
39
        String s = getProject().replaceProperties("${env.JATS_HOME}");
40
        if("${env.JATS_HOME}".equals(s))
41
        {
42
            throw new BuildException("<" + getTaskName() + "> JATS_HOME environment variable not set");
43
        } else
44
        {
45
            File file = new File(s, packageName);
46
            File file1 = new File(file, version);
47
            validatePackageDescriptionFile(file1);
48
            Property property1 = new Property();
49
            property1.setProject(getProject());
50
            property1.setTaskName(getTaskName());
51
            property1.setName(name);
52
            property1.setLocation(file1);
53
            property1.execute();
54
            return;
55
        }
56
    }
57
 
58
    private void doEcho(String s)
59
    {
60
        Echo echo = new Echo();
61
        echo.setTaskName(getElementType());
62
        echo.setProject(getProject());
63
        echo.setMessage(s);
64
        echo.execute();
65
    }
66
 
67
    private void validatePackageDescriptionFile(File file)
68
    {
69
        File file1 = new File(file, "descpkg");
70
        if(!file1.exists() || !file1.isFile())
71
            throw new BuildException("The 'descpkg' file for package '" + name + "' version '" + version + "' does not exist");
72
        try
73
        {
74
            FileReader filereader = new FileReader(file1);
75
            BufferedReader bufferedreader = new BufferedReader(filereader);
76
            try
77
            {
78
                String s = bufferedreader.readLine();
79
                String s1 = s.trim();
80
                if(s == null)
81
                    throw new BuildException("The 'descpkg' file for package '" + packageName + "' version '" + version + "' does contain the correct version info.");
82
            }
83
            catch(IOException ioexception)
84
            {
85
                throw new BuildException("The 'descpkg' file for package '" + name + "' version '" + version + "' could not be read.");
86
            }
87
        }
88
        catch(FileNotFoundException filenotfoundexception)
89
        {
90
            throw new BuildException("The 'descpkg' file for package '" + name + "' version '" + version + "' does not exist");
91
        }
92
    }
93
 
94
    public void setName(String s)
95
    {
96
        name = s;
97
    }
98
 
99
    public void setPackage(String s)
100
    {
101
        packageName = s;
102
    }
103
 
104
    public void setVersion(String s)
105
    {
106
        version = s;
107
    }
108
 
109
    public void setRuntime(String s)
110
    {
111
        runtime = "true".equalsIgnoreCase(s);
112
    }
113
 
114
    public String getName()
115
    {
116
        return name;
117
    }
118
 
119
    public String getPackage()
120
    {
121
        return packageName;
122
    }
123
 
124
    public String getVersion()
125
    {
126
        return version;
127
    }
128
 
129
    public boolean isRuntime()
130
    {
131
        return runtime;
132
    }
133
 
134
    public void setVerbose(String s)
135
    {
136
        verbose = !"false".equalsIgnoreCase(s);
137
    }
138
 
139
    public boolean isVerbose()
140
    {
141
        return verbose;
142
    }
143
 
144
    public static final String DPKG_HOME_PROPERTY = "${env.JATS_HOME}";
145
    private String name;
146
    private String packageName;
147
    private String version;
148
    private String includes;
149
    private String excludes;
150
    private boolean runtime;
151
    private boolean verbose;
152
}