001: /*
002: * Globus Toolkit Public License (GTPL)
003: *
004: * Copyright (c) 1999 University of Chicago and The University of
005: * Southern California. All Rights Reserved.
006: *
007: * 1) The "Software", below, refers to the Globus Toolkit (in either
008: * source-code, or binary form and accompanying documentation) and a
009: * "work based on the Software" means a work based on either the
010: * Software, on part of the Software, or on any derivative work of
011: * the Software under copyright law: that is, a work containing all
012: * or a portion of the Software either verbatim or with
013: * modifications. Each licensee is addressed as "you" or "Licensee."
014: *
015: * 2) The University of Southern California and the University of
016: * Chicago as Operator of Argonne National Laboratory are copyright
017: * holders in the Software. The copyright holders and their third
018: * party licensors hereby grant Licensee a royalty-free nonexclusive
019: * license, subject to the limitations stated herein and
020: * U.S. Government license rights.
021: *
022: * 3) A copy or copies of the Software may be given to others, if you
023: * meet the following conditions:
024: *
025: * a) Copies in source code must include the copyright notice and
026: * this license.
027: *
028: * b) Copies in binary form must include the copyright notice and
029: * this license in the documentation and/or other materials
030: * provided with the copy.
031: *
032: * 4) All advertising materials, journal articles and documentation
033: * mentioning features derived from or use of the Software must
034: * display the following acknowledgement:
035: *
036: * "This product includes software developed by and/or derived from
037: * the Globus project (http://www.globus.org/)."
038: *
039: * In the event that the product being advertised includes an intact
040: * Globus distribution (with copyright and license included) then
041: * this clause is waived.
042: *
043: * 5) You are encouraged to package modifications to the Software
044: * separately, as patches to the Software.
045: *
046: * 6) You may make modifications to the Software, however, if you
047: * modify a copy or copies of the Software or any portion of it,
048: * thus forming a work based on the Software, and give a copy or
049: * copies of such work to others, either in source code or binary
050: * form, you must meet the following conditions:
051: *
052: * a) The Software must carry prominent notices stating that you
053: * changed specified portions of the Software.
054: *
055: * b) The Software must display the following acknowledgement:
056: *
057: * "This product includes software developed by and/or derived
058: * from the Globus Project (http://www.globus.org/) to which the
059: * U.S. Government retains certain rights."
060: *
061: * 7) You may incorporate the Software or a modified version of the
062: * Software into a commercial product, if you meet the following
063: * conditions:
064: *
065: * a) The commercial product or accompanying documentation must
066: * display the following acknowledgment:
067: *
068: * "This product includes software developed by and/or derived
069: * from the Globus Project (http://www.globus.org/) to which the
070: * U.S. Government retains a paid-up, nonexclusive, irrevocable
071: * worldwide license to reproduce, prepare derivative works, and
072: * perform publicly and display publicly."
073: *
074: * b) The user of the commercial product must be given the following
075: * notice:
076: *
077: * "[Commercial product] was prepared, in part, as an account of
078: * work sponsored by an agency of the United States Government.
079: * Neither the United States, nor the University of Chicago, nor
080: * University of Southern California, nor any contributors to
081: * the Globus Project or Globus Toolkit nor any of their employees,
082: * makes any warranty express or implied, or assumes any legal
083: * liability or responsibility for the accuracy, completeness, or
084: * usefulness of any information, apparatus, product, or process
085: * disclosed, or represents that its use would not infringe
086: * privately owned rights.
087: *
088: * IN NO EVENT WILL THE UNITED STATES, THE UNIVERSITY OF CHICAGO
089: * OR THE UNIVERSITY OF SOUTHERN CALIFORNIA OR ANY CONTRIBUTORS
090: * TO THE GLOBUS PROJECT OR GLOBUS TOOLKIT BE LIABLE FOR ANY
091: * DAMAGES, INCLUDING DIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL
092: * DAMAGES RESULTING FROM EXERCISE OF THIS LICENSE AGREEMENT OR
093: * THE USE OF THE [COMMERCIAL PRODUCT]."
094: *
095: * 8) LICENSEE AGREES THAT THE EXPORT OF GOODS AND/OR TECHNICAL DATA
096: * FROM THE UNITED STATES MAY REQUIRE SOME FORM OF EXPORT CONTROL
097: * LICENSE FROM THE U.S. GOVERNMENT AND THAT FAILURE TO OBTAIN SUCH
098: * EXPORT CONTROL LICENSE MAY RESULT IN CRIMINAL LIABILITY UNDER U.S.
099: * LAWS.
100: *
101: * 9) Portions of the Software resulted from work developed under a
102: * U.S. Government contract and are subject to the following license:
103: * the Government is granted for itself and others acting on its
104: * behalf a paid-up, nonexclusive, irrevocable worldwide license in
105: * this computer software to reproduce, prepare derivative works, and
106: * perform publicly and display publicly.
107: *
108: * 10) The Software was prepared, in part, as an account of work
109: * sponsored by an agency of the United States Government. Neither
110: * the United States, nor the University of Chicago, nor The
111: * University of Southern California, nor any contributors to the
112: * Globus Project or Globus Toolkit, nor any of their employees,
113: * makes any warranty express or implied, or assumes any legal
114: * liability or responsibility for the accuracy, completeness, or
115: * usefulness of any information, apparatus, product, or process
116: * disclosed, or represents that its use would not infringe privately
117: * owned rights.
118: *
119: * 11) IN NO EVENT WILL THE UNITED STATES, THE UNIVERSITY OF CHICAGO OR
120: * THE UNIVERSITY OF SOUTHERN CALIFORNIA OR ANY CONTRIBUTORS TO THE
121: * GLOBUS PROJECT OR GLOBUS TOOLKIT BE LIABLE FOR ANY DAMAGES,
122: * INCLUDING DIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES
123: * RESULTING FROM EXERCISE OF THIS LICENSE AGREEMENT OR THE USE OF
124: * THE SOFTWARE.
125: *
126: * END OF LICENSE
127: */
128:
129: package org.griphyn.cPlanner.common;
130:
131: import org.griphyn.cPlanner.classes.PlannerOptions;
132:
133: import java.util.Collection;
134: import java.util.Set;
135: import java.util.Vector;
136:
137: /**
138: * A Singleton wrapper around the
139: * PlannerOptions class to get hold
140: * of the options specified by the
141: * user to run Pegasus. This allows
142: * us to get hold of the options anywhere
143: * without us messing up with the constructors
144: * of classes.
145: *
146: * @author Karan Vahi
147: * @author Gaurang Mehta
148: * @version $Revision: 278 $
149: *
150: * @see org.griphyn.cPlanner.classes.PlannerOptions
151: */
152:
153: public class UserOptions {
154: /**
155: * The object holding the
156: * Singleton instance.
157: */
158: private static UserOptions mPOptions = null;
159:
160: /**
161: * The Logger object used to
162: * log the messages.
163: */
164: private LogManager mLogger;
165:
166: /**
167: * The object containing all the
168: * user options.
169: */
170: private PlannerOptions mPlannerOpts = null;
171:
172: /**
173: * The method used to invoke the
174: * singleton instance the first
175: * time, from the CPlanner class.
176: *
177: * @param opt the object containing
178: * the options to the Planner.
179: */
180: public static UserOptions getInstance(PlannerOptions opt) {
181: if (mPOptions == null && opt != null) {
182: mPOptions = new UserOptions(opt);
183: }
184: return mPOptions;
185: }
186:
187: /**
188: * The method used to invoke the
189: * singleton instance from the
190: * other classes.
191: */
192: public static UserOptions getInstance() {
193: return getInstance(null);
194: }
195:
196: /**
197: * The private constructor that initializes the user options.
198: * This should be invoked from the CPlanner class in the toolkit
199: * package.
200: *
201: * @throws RuntimeException in case of incorrect initialization.
202: */
203: private UserOptions(PlannerOptions opt) {
204: if (opt == null) {
205: mLogger.log("Wrong Invocation of the Singleton Instance",
206: LogManager.FATAL_MESSAGE_LEVEL);
207: throw new RuntimeException(
208: "Wrong Invocation of the Singleton Instance");
209: }
210: mPlannerOpts = opt;
211: }
212:
213: /**
214: * Returns the dax file, that
215: * was generated by Chimera
216: * containing the description of
217: * the Abstract plan.
218: */
219: public String getDaxFile() {
220: return this .mPlannerOpts.getDAX();
221: }
222:
223: /**
224: * Returns output pool where the
225: * user wants the data products
226: * to be transferred to.
227: */
228: public String getOutputPool() {
229: return this .mPlannerOpts.getOutputSite();
230: }
231:
232: /**
233: * Returns the options passed to the planner.
234: *
235: * @return PlannerOptions
236: */
237: public PlannerOptions getOptions() {
238: return this .mPlannerOpts;
239: }
240:
241: /**
242: * Returns the directory where the
243: * user wants the submit files to be
244: * generated.
245: */
246: public String getSubmitFileDir() {
247: return this .mPlannerOpts.getSubmitDirectory();
248: }
249:
250: /**
251: * Returns the list of execution pools
252: * where the user wants the data
253: * products to be computed.
254: */
255: public Collection getExecutionSites() {
256: //return new Vector(this.mPlannerOpts.getExecutionSites());
257: return this .mPlannerOpts.getExecutionSites();
258: }
259:
260: /**
261: * Sets the execution sites.
262: *
263: * @param sites the <code>Set</code> containing the site names.
264: */
265: public void setExecutionSites(Collection sites) {
266: this .mPlannerOpts.setExecutionSites(sites);
267: }
268:
269: /**
270: * Returns whether we want to create
271: * a Random Directory or not.
272: */
273: public boolean generateRandomDirectory() {
274: return this .mPlannerOpts.generateRandomDirectory();
275: }
276:
277: /**
278: * It returns the set of cache files.
279: */
280: public Set getCacheFiles() {
281: return this .mPlannerOpts.getCacheFiles();
282: }
283:
284: /**
285: * Returns the name of the random
286: * directory, only if the generate
287: * Random Dir flag is set.
288: * Else it returns null.
289: */
290: public String getRandomDirName() {
291: if (this .generateRandomDirectory()) {
292: return this .mPlannerOpts.getRandomDir();
293: }
294: return null;
295: }
296:
297: /**
298: * Returns true if the user had asked
299: * for the force option.
300: */
301: public boolean getForceOption() {
302: return this.mPlannerOpts.getForce();
303: }
304: }
|