KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > nbbuild > GetModuleName


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.nbbuild;
21
22 import java.io.File JavaDoc;
23 import java.io.IOException JavaDoc;
24 import org.apache.tools.ant.*;
25 import org.apache.tools.ant.types.*;
26
27 /**
28  * @author Michal Zlamal
29  */

30 public class GetModuleName extends Task {
31     String JavaDoc name = null;
32     File JavaDoc root = null;
33
34     // XXX this is a lousy attr name; conventional for such attrs to
35
// end in 'property' so you realize they refer to a property name
36
public void setName (String JavaDoc name) {
37         this.name = name;
38     }
39
40     /** Root directory of the whole project - ${nb_all} */
41     public void setRoot( File JavaDoc root ) {
42         this.root = root;
43     }
44      
45     public void execute() throws BuildException {
46         if (name == null)
47             throw new BuildException("You must set the property name, where to store the module name", this.getLocation());
48         if (root == null)
49             throw new BuildException("You must set the root dir", this.getLocation());
50         try {
51             File JavaDoc dir = this.getProject ().getBaseDir ();
52             if (dir.toString ().endsWith (java.io.File.separatorChar + "test")) {
53                 // when looking for base dir for tests
54
dir = dir.getParentFile ();
55             }
56             String JavaDoc rootdir = root.getCanonicalPath();
57             StringBuffer JavaDoc modulename = new StringBuffer JavaDoc ();
58             while (dir != null) {
59                 if (dir.getCanonicalPath ().equals (rootdir)) {
60                     break;
61                 }
62                 if (modulename.length () > 0) {
63                     modulename.insert (0, '/');
64                 }
65                 modulename.insert (0, dir.getName ());
66                 dir = dir.getParentFile ();
67             }
68             
69             //log("Basedir: " + basedir + " rootdir: " + rootdir);
70
if (dir == null) throw new BuildException( "This module in on different path than the root dir",this.getLocation());
71             this.getProject().setProperty(name, modulename.toString()); // XXX should be setNewProperty, when that is possible
72
}
73         catch (IOException JavaDoc ex) {
74             throw new BuildException("Root dir or module's base dir wasn't recognized", ex, this.getLocation());
75         }
76     }
77     
78 }
79
Popular Tags