KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gov > nasa > jpf > search > heuristic > DefaultComparator


1 //
2
// Copyright (C) 2005 United States Government as represented by the
3
// Administrator of the National Aeronautics and Space Administration
4
// (NASA). All Rights Reserved.
5
//
6
// This software is distributed under the NASA Open Source Agreement
7
// (NOSA), version 1.3. The NOSA has been approved by the Open Source
8
// Initiative. See the file NOSA-1.3-JPF at the top of the distribution
9
// directory tree for the complete NOSA document.
10
//
11
// THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY
12
// KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
13
// LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO
14
// SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
15
// A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT
16
// THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT
17
// DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE.
18
//
19
package gov.nasa.jpf.search.heuristic;
20
21 import java.util.Comparator JavaDoc;
22
23 /**
24  * the default comparator for heuristic state ordering
25  *
26  * this class has to determine which state to choose if the
27  * heuristic values are equal
28  */

29 public class DefaultComparator implements Comparator JavaDoc {
30   
31   public int compare (Object JavaDoc o1, Object JavaDoc o2) {
32     // 2do - Hmm, that's really fifo?
33

34     HeuristicState hs1 = (HeuristicState) o1;
35     HeuristicState hs2 = (HeuristicState) o2;
36     
37     int p1 = hs1.getPriority();
38     int p2 = hs2.getPriority();
39
40     if (p1 == p2) {
41       int h1 = hs1.hashCode();
42       int h2 = hs2.hashCode();
43
44       if (h1 == h2) {
45         return 0;
46       } else if (hs1.uniqueID < hs2.uniqueID) {
47         return -1;
48       } else {
49         return 1;
50       }
51     } else if (p1 < p2) {
52       return -1;
53     } else {
54       return 1;
55     }
56   }
57 }
58
Popular Tags