View Javadoc

1   /*
2    * $Id: Node.java 1540 2011-08-17 13:30:37Z hoheisel $
3    *
4    * Copyright (c) Jun 27, 2006
5    * Fraunhofer Institute for Computer Architecture and Software Technology
6    * See http://www.first.fraunhofer.de for more details.
7    */
8   
9   package net.kwfgrid.gwes.prorater;
10  
11  import net.kwfgrid.gwes.XMLDB;
12  import net.kwfgrid.gwes.exception.DatabaseException;
13  import org.apache.log4j.Logger;
14  
15  import java.util.ArrayList;
16  
17  /**
18   * Description of a computing node
19   *
20   * @author Helge Rose'
21   * @version $Id: Node.java 1540 2011-08-17 13:30:37Z hoheisel $
22   */
23  public class Node implements Comparable {
24  
25  	/**
26       * log4j logger.
27       */
28      final static Logger logger = Logger.getLogger(Node.class);
29  
30      /**
31       * host name
32       */
33      String hostname;
34  
35      /**
36       * alternative operationCandidates involving this host
37       */
38      ArrayList<Alternative> alternatives;
39  
40      /**
41       * load quality of this host
42       */
43      public float quality;
44  
45      public Node(String name) {
46          alternatives = new ArrayList<Alternative>();
47          hostname = name;
48      }
49  
50      void add(Alternative alternative) {
51          alternative.operationCandidate.setQuality(quality);
52          alternative.operationCandidate.setSelected(false);
53          alternatives.add(alternative);
54      }
55  
56      // only used for testing purposes
57      public void setQuality(float quality) {
58          this.quality = quality;
59          logger.debug(hostname + ": " + quality);
60      }
61  
62      void updateQuality(float oldQuality) {
63          try {
64              quality = XMLDB.getInstance().getHardwareQuality(hostname);
65              logger.debug("Retrieved quality for resource "+ hostname + ": quality=" + quality);
66          } catch (DatabaseException e) {
67              quality = oldQuality;
68              logger.warn("Could not connect to resource database. Using old quality="+quality+" for resource "+ hostname + ". "+e);
69          }
70      }
71  
72      public int compareTo(Object o)
73      {
74          float difference = quality - ((Node) o).quality;
75          if (difference > 0) return 1;
76          if (difference < 0) return -1;
77          return 0;
78      }
79  
80  
81  }