001    /*
002     Copyright (c) 2012, Regents of the University of Colorado
003     All rights reserved.
004    
005     Redistribution and use in source and binary forms, with or without modification, 
006     are permitted provided that the following conditions are met:
007    
008     * Redistributions of source code must retain the above copyright notice, this 
009        list of conditions and the following disclaimer.
010       
011     * Redistributions in binary form must reproduce the above copyright notice, 
012        this list of conditions and the following disclaimer in the documentation 
013        and/or other materials provided with the distribution.
014       
015     * Neither the name of the University of Colorado nor the names of its 
016        contributors may be used to endorse or promote products derived from this 
017        software without specific prior written permission.
018    
019     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
022     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
023     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
024     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
025     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
026     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
027     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
028     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029     */
030    
031    package edu.ucdenver.ccp.esm;
032    
033    /**
034     * <p>Definition of Edge for dependency graphs</p>
035     * 
036     * <p>Edge is then fed into graphs of the JUNG library</p>
037     * 
038     * <p>The Edge definition can be modified based on one's own needs</p>
039     * 
040     * @author Implemented by Haibin Liu and Tested by Philippe Thomas
041     *
042     */
043    public class Edge {
044            /** governor token */
045        private Vertex gov;
046    
047        /** Edge label */
048        private String label;
049        
050        /** dependent token */
051        private Vertex dep;
052        
053        /**
054             * Construtor to initialize the class field
055             */
056        public Edge (Vertex gov, String label, Vertex dep) {
057            this.gov = gov;
058            this.label = label;
059            this.dep = dep;
060        }  
061        
062        /**
063         * retrieve dependent node of the edge
064         * @return dependent node
065         */
066        public Vertex getDependent() {
067            return dep;     
068        }
069        
070        /**
071         * retrieve governor node of the edge
072         * @return governor node
073         */
074        public Vertex getGovernor() {
075            return gov;     
076        }
077        
078        /**
079         * retrieve edge label
080         * @return edge label
081         */
082        public String getLabel() {
083            return label;   
084        }
085        
086        
087        /**
088         * print edge content
089         */
090        @Override
091            public String toString(){
092            StringBuilder sb = new StringBuilder();
093            sb.append(label);
094                    sb.append("(");
095                    sb.append(gov.toString());
096                    sb.append(", ");
097                    sb.append(dep.toString());
098                    sb.append(")");
099                    
100                    return sb.toString();
101        }
102    }