source: release-kits/lirk3/ant-scripts/tasks/antelope/src/ise/antelope/tasks/StopWatchTask.java@ 14982

Last change on this file since 14982 was 14982, checked in by oranfry, 16 years ago

initial import of LiRK3

File size: 5.0 KB
Line 
1/*
2* The Apache Software License, Version 1.1
3*
4* Copyright (c) 2001-2002 The Apache Software Foundation. All rights
5* reserved.
6*
7* Redistribution and use in source and binary forms, with or without
8* modification, are permitted provided that the following conditions
9* are met:
10*
11* 1. Redistributions of source code must retain the above copyright
12* notice, this list of conditions and the following disclaimer.
13*
14* 2. Redistributions in binary form must reproduce the above copyright
15* notice, this list of conditions and the following disclaimer in
16* the documentation and/or other materials provided with the
17* distribution.
18*
19* 3. The end-user documentation included with the redistribution, if
20* any, must include the following acknowlegement:
21* "This product includes software developed by the
22* Apache Software Foundation (http://www.apache.org/)."
23* Alternately, this acknowlegement may appear in the software itself,
24* if and wherever such third-party acknowlegements normally appear.
25*
26* 4. The names "The Jakarta Project", "Ant", and "Apache Software
27* Foundation" must not be used to endorse or promote products derived
28* from this software without prior written permission. For written
29* permission, please contact [email protected].
30*
31* 5. Products derived from this software may not be called "Apache"
32* nor may "Apache" appear in their names without prior written
33* permission of the Apache Group.
34*
35* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46* SUCH DAMAGE.
47* ====================================================================
48*
49* This software consists of voluntary contributions made by many
50* individuals on behalf of the Apache Software Foundation. For more
51* information on the Apache Software Foundation, please see
52* <http://www.apache.org/>.
53*/
54package ise.antelope.tasks;
55
56import java.util.Hashtable;
57import org.apache.tools.ant.BuildException;
58import org.apache.tools.ant.Task;
59
60/**
61 * Assists in timing tasks and/or targets.
62 *
63 * @author Dale Anson, [email protected]
64 * @version $Revision: 1.3 $
65 */
66public class StopWatchTask extends Task {
67
68 // storage for stopwatch name
69 private String name = null;
70
71 // storage for action
72 private String action = null;
73
74 // storage for watches
75 private static Hashtable watches = null;
76
77 // action definitions
78 private final static String STOP = "stop";
79 private final static String START = "start";
80 private final static String ELAPSED = "elapsed";
81 private final static String TOTAL = "total";
82
83
84 /**
85 * Sets the name attribute of the StopWatchTask object
86 *
87 * @param name The new name value
88 */
89 public void setName(String name) {
90 this.name = name;
91 }
92
93 /**
94 * Sets the action attribute of the StopWatchTask object
95 *
96 * @param action The new action value
97 */
98 public void setAction(String action) {
99 action = action.toLowerCase();
100 if (action.equals(STOP) ||
101 action.equals(START) ||
102 action.equals(ELAPSED) ||
103 action.equals(TOTAL)) {
104 this.action = action;
105 }
106 else {
107 throw new BuildException("invalid action: " + action);
108 }
109 }
110
111 /** Description of the Method */
112 public void execute() {
113 if (name == null)
114 throw new BuildException("name is null");
115 if (action == null)
116 action = START;
117 if (watches == null)
118 watches = new Hashtable();
119 StopWatch sw = (StopWatch) watches.get(name);
120 if (sw == null && action.equals(START)) {
121 sw = new StopWatch(name);
122 watches.put(name, sw);
123 return;
124 }
125 if (sw == null)
126 return;
127 if (action.equals(START)) {
128 sw.start();
129 return;
130 }
131 if (action.equals(STOP)) {
132 sw.stop();
133 return;
134 }
135 if (action.equals(TOTAL)) {
136 String time = sw.format(sw.total());
137 log("[" + name + ": " + time + "]");
138 getProject().setProperty(name, time);
139 return;
140 }
141 if (action.equals(ELAPSED)) {
142 String time = sw.format(sw.elapsed());
143 log("[" + name + ": " + time + "]");
144 getProject().setProperty(name, time);
145 return;
146 }
147 }
148}
149
Note: See TracBrowser for help on using the repository browser.