001: /*
002: * This file or a portion of this file is licensed under the terms of
003: * the Globus Toolkit Public License, found in file GTPL, or at
004: * http://www.globus.org/toolkit/download/license.html. This notice must
005: * appear in redistributions of this file, with or without modification.
006: *
007: * Redistributions of this Software, with or without modification, must
008: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
009: * some other similar material which is provided with the Software (if
010: * any).
011: *
012: * Copyright 1999-2004 University of Chicago and The University of
013: * Southern California. All rights reserved.
014: */
015:
016: package org.griphyn.cPlanner.parser.dax;
017:
018: import org.griphyn.cPlanner.classes.SubInfo;
019:
020: import org.griphyn.cPlanner.partitioner.graph.Bag;
021: import org.griphyn.cPlanner.partitioner.graph.LabelBag;
022: import org.griphyn.cPlanner.partitioner.graph.GraphNode;
023:
024: import org.griphyn.cPlanner.common.PegasusProperties;
025: import org.griphyn.cPlanner.common.LogManager;
026:
027: /**
028: * The callback, that ends up building a label graph. With each GraphNode a label
029: * is associated. The label can be associated via a profile in the VDS namespace
030: * with the jobs in the DAX. The key for the profile can either be set via the
031: * constructor, or a default key is used.
032: *
033: * @author Karan Vahi
034: * @version $Revision: 221 $
035: */
036:
037: public class DAX2LabelGraph extends DAX2Graph {
038:
039: /**
040: * The default key for the VDS namespace profile, that is used in case none
041: * is specified by the user.
042: */
043: public static final String DEFAULT_LABEL_KEY = "label";
044:
045: /**
046: * The default label value that is to be applied, in case the profile is
047: * not associated with the job.
048: */
049: //public static String DEFAULT_LABEL_VALUE = "default";
050: /**
051: * The profile key that is used for the labelling.
052: */
053: private String mLabelKey;
054:
055: /**
056: * Sets the default label value that is to be used if the profile is not
057: * associated with the job.
058: *
059: * @param value the value to be associated.
060: */
061: // public static void setLabelValue(String value){
062: // DEFAULT_LABEL_VALUE = value;
063: // }
064:
065: /**
066: * The overloaded constructor.
067: *
068: * @param properties the properties passed to the planner.
069: * @param dax the path to the DAX file.
070: */
071: public DAX2LabelGraph(PegasusProperties properties, String dax) {
072: super (properties, dax);
073: mProps = properties;
074: this .setLabelKey(DEFAULT_LABEL_KEY);
075: }
076:
077: /**
078: * Set the profile key that is to be used to pick up the labels.
079: * Sets the profile key to the value specified. If value passed is
080: * null, then is set to the default label key.
081: *
082: * @param key the VDS profile key that is to be used.
083: *
084: * @see #DEFAULT_LABEL_KEY
085: */
086: public void setLabelKey(String key) {
087: mLabelKey = (key == null) ? this .DEFAULT_LABEL_KEY : key;
088: LabelBag.setLabelKey(mLabelKey);
089: }
090:
091: /**
092: * This constructs a graph node for the job and ends up storing it in the
093: * internal map. In addition assigns a label with the node. The label is
094: * is the value of a profile in the VDS namespace. The name of the profile
095: * can
096: *
097: * @param job the job that was parsed.
098: */
099: public void cbJob(SubInfo job) {
100: mLogger.log("Adding job to graph " + job.getName(),
101: LogManager.DEBUG_MESSAGE_LEVEL);
102: GraphNode gn = new GraphNode(job.logicalId, job.logicalName);
103: String label = (String) job.vdsNS.get(mLabelKey);
104: // label = (label == null)? DEFAULT_LABEL_VALUE : label;
105: Bag bag = new LabelBag();
106: bag.add(mLabelKey, label);
107: gn.setBag(bag);
108: put(job.logicalId, gn);
109: }
110:
111: /**
112: * Callback to signal that traversal of the DAX is complete. At this point a
113: * dummy root node is added to the graph, that is the parents to all the root
114: * nodes in the existing DAX. This method in additions adds the default label
115: * to the root.
116: */
117: public void cbDone() {
118: super .cbDone();
119: Bag bag = new LabelBag();
120: // bag.add(mLabelKey,DEFAULT_LABEL_VALUE);
121: mRoot.setBag(bag);
122: }
123:
124: }
|