OSDN Git Service

imported from subversion repository
[xerial/xerial-core.git] / src / main / java / org / xerial / util / graph / Edge.java
1 /*--------------------------------------------------------------------------\r
2  *  Copyright 2004 Taro L. Saito\r
3  *\r
4  *  Licensed under the Apache License, Version 2.0 (the "License");\r
5  *  you may not use this file except in compliance with the License.\r
6  *  You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *  Unless required by applicable law or agreed to in writing, software\r
11  *  distributed under the License is distributed on an "AS IS" BASIS,\r
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *  See the License for the specific language governing permissions and\r
14  *  limitations under the License.\r
15  *--------------------------------------------------------------------------*/\r
16 //--------------------------------------\r
17 // XerialJ\r
18 //\r
19 // Edge.java\r
20 // Since: 2004/12/27\r
21 //\r
22 // $URL: http://www.xerial.org/svn/project/XerialJ/trunk/xerial-core/src/main/java/org/xerial/util/graph/Edge.java $ \r
23 // $Author: leo $\r
24 //--------------------------------------\r
25 package org.xerial.util.graph;\r
26 \r
27 /**\r
28  * Edge structure from source node ID to destination node ID\r
29  * \r
30  * @author leo\r
31  * \r
32  */\r
33 public class Edge implements Comparable<Edge>\r
34 {\r
35     final int srcNodeID;\r
36     final int destNodeID;\r
37 \r
38     /**\r
39      * @param edge\r
40      * @param src\r
41      * @param dest\r
42      */\r
43     public Edge(int src, int dest)\r
44     {\r
45         this.srcNodeID = src;\r
46         this.destNodeID = dest;\r
47     }\r
48 \r
49     public int getDestNodeID()\r
50     {\r
51         return destNodeID;\r
52     }\r
53 \r
54     public int getSourceNodeID()\r
55     {\r
56         return srcNodeID;\r
57     }\r
58 \r
59     public boolean equals(Object o)\r
60     {\r
61         if (o instanceof Edge)\r
62         {\r
63             Edge e = (Edge) o;\r
64             return (srcNodeID == e.getSourceNodeID()) && (destNodeID == e.getDestNodeID());\r
65         }\r
66         else\r
67             return false;\r
68     }\r
69 \r
70     @Override\r
71     public int hashCode()\r
72     {\r
73         int hash = 31;\r
74         hash += srcNodeID * 271;\r
75         hash += destNodeID * 271;\r
76         return hash % 1987;\r
77     }\r
78 \r
79     public int compareTo(Edge o)\r
80     {\r
81         int diff = srcNodeID - o.getSourceNodeID();\r
82         return (diff != 0) ? diff : destNodeID - o.getDestNodeID();\r
83     }\r
84 \r
85     public String toString()\r
86     {\r
87         return String.format("(%d, %d)", srcNodeID, destNodeID);\r
88     }\r
89 }\r