/** * Copyright 2007-2008 University Of Southern California * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package edu.isi.pegasus.planner.dax; import edu.isi.pegasus.common.util.XMLWriter; /** * * @author gmehta * @version $Revision: 3009 $ */ public class Edge { /** * The parent of the child */ private String mChild; /** * The parent of the parent */ private String mParent; /** * The edge label for the parent child relationship. Optional. */ private String mLabel; /** * * @param parent */ public Edge(String parent, String child) { mParent = parent; mChild = child; } public Edge(Edge e) { this(e.getParent(), e.getChild(), e.getLabel()); } /** * * @param parent * @param label */ public Edge(String parent, String child, String label) { mParent = parent; mChild = child; mLabel = label; } /** * @return the parent */ public String getParent() { return mParent; } /** * @param parent the parent of the edge to set */ public void setParent(String parent) { mParent = parent; } /** * @return the child of the edge */ public String getChild() { return mChild; } /** * @param parent the child of the edge to set */ public void setChild(String child) { mChild = child; } /** * @return the label */ public String getLabel() { return mLabel; } /** * @param label the label to set */ public void setLabel(String label) { mLabel = label; } public Edge clone() { return new Edge(this.mParent, this.mChild, this.mLabel); } @Override public int hashCode() { return 31 * mParent.hashCode() + 12 * mChild.hashCode() + (mLabel==null ? 0 : 29 * mLabel.hashCode()); } @Override public boolean equals(Object o) { if (!(o instanceof Edge)) { return false; } if (this == o) { return true; } return mParent.equals(((Edge) o).getParent()) && mChild.equals(((Edge)o).getChild())&& mLabel.equals(((Edge) o).getLabel()); } @Override public String toString() { return "(" + mParent + "->" +(mChild+mLabel == null ? "" : ":" +mLabel) + ')'; } public void toXML(XMLWriter writer) { toXML(writer, 0); } public void toXMLParent(XMLWriter writer) { toXMLParent(writer, 0); } public void toXML(XMLWriter writer, int indent) { writer.startElement("child",indent); writer.startElement("parent", indent+1); writer.writeAttribute("ref", mParent); if (mLabel != null && !mLabel.isEmpty()) { writer.writeAttribute("edge-label", mLabel); } writer.noLine(); writer.endElement(); writer.endElement(indent); } public void toXMLParent(XMLWriter writer, int indent) { writer.startElement("parent", indent); writer.writeAttribute("ref", mParent); if (mLabel != null && !mLabel.isEmpty()) { writer.writeAttribute("edge-label", mLabel); } writer.endElement(); } }