Coverage Report - tempcontroller.base.AbstractControladorTemperatura
 
Classes in this File Line Coverage Branch Coverage Complexity
AbstractControladorTemperatura
81% 
100% 
0
 
 1  
 /*
 2  
  * AbstractControladorTemperatura.java
 3  
  *
 4  
  * Created on 28 de Março de 2007, 16:42
 5  
  *
 6  
  * To change this template, choose Tools | Template Manager
 7  
  * and open the template in the editor.
 8  
  */
 9  
 
 10  
 package tempcontroller.base;
 11  
 
 12  
 import java.util.HashSet;
 13  
 import java.util.Iterator;
 14  
 import java.util.Set;
 15  
 
 16  
 /**
 17  
  * Classe abstrata de um controlador de temperatura. Controla
 18  
  * em especial o estado do controlador.
 19  
  */
 20  4
 public abstract class AbstractControladorTemperatura 
 21  
         implements IControladorTemperatura {
 22  
     
 23  
     /**
 24  
      * Estado atual do controlador.
 25  
      */
 26  4
     private IControladorTemperatura.Estado estado = 
 27  
             IControladorTemperatura.Estado.SEM_ALVO;
 28  
 
 29  
     /**
 30  
      * Conjunto de ouvintes de eventos deste controlador
 31  
      * de temperatura.
 32  
      */
 33  4
     private final Set<IOuvinteMudancaTemperatura> ouvintes = 
 34  
             new HashSet<IOuvinteMudancaTemperatura>();
 35  
     
 36  
     /**
 37  
      * Temperatura alvo.
 38  
      */
 39  
     private double temperaturaAlvo;
 40  
     
 41  
     /**
 42  
      * Obtém o estado do controlador.
 43  
      * @return O estado do controlador.
 44  
      */
 45  
     public IControladorTemperatura.Estado getEstado() {
 46  0
         return estado;
 47  
     }
 48  
 
 49  
     /**
 50  
      * Adiciona um ouvinte ao controlador de temperatura.
 51  
      * @param ouvinte Um ouvinte dos eventos do controlador de 
 52  
      * temperatura.
 53  
      */
 54  
     public void addIOuvinteMundancaTemperatura(
 55  
             final IOuvinteMudancaTemperatura ouvinte) {
 56  6
         ouvintes.add(ouvinte);
 57  6
     }
 58  
 
 59  
     /**
 60  
      * Remove um ouvinte dos eventos do controlador.
 61  
      * @param ouvinte Ouvinte que não quer mais receber eventos
 62  
      * do controlador.
 63  
      */
 64  
     public void removeOuvinteMudancaTemperatura(
 65  
             final IOuvinteMudancaTemperatura ouvinte) {
 66  0
         ouvintes.remove(ouvinte);
 67  0
     }
 68  
     
 69  
     /**
 70  
      * Notifica a todos os ouvintes o evento de mudança de temperatura.
 71  
      */
 72  
     protected void fireMudancaTemperatura() {
 73  3
         Iterator<IOuvinteMudancaTemperatura> it = ouvintes.iterator();
 74  6
         while (it.hasNext()) {
 75  3
             IOuvinteMudancaTemperatura ouvinte = it.next();
 76  3
             ouvinte.novaTemperatura(getTemperatura());
 77  3
         }
 78  3
     }
 79  
 
 80  
     /**
 81  
      * Notifica a todos os ouvintes o evento de temperatira alvo
 82  
      * alcancada.
 83  
      */
 84  
     protected void fireTemperaturaAlvoAlcancada() {
 85  9
         Iterator<IOuvinteMudancaTemperatura> it = ouvintes.iterator();
 86  18
         while (it.hasNext()) {
 87  9
             IOuvinteMudancaTemperatura ouvinte = it.next();
 88  9
             ouvinte.temperaturaAlvoAlcancada(getTemperatura());
 89  9
         }
 90  9
     }
 91  
     
 92  
     /**
 93  
      * Define uma nova temparatura alvo.
 94  
      * @param temperatura Nova temperatura alvo.
 95  
      */
 96  
     public void setTemperaturaAlvo(final double temperatura) {
 97  6
         temperaturaAlvo = temperatura;
 98  6
     }
 99  
 
 100  
     /**
 101  
      * Obtém a temperatura alvo deste controlador.
 102  
      * @return Temperatura alvo deste controlador.
 103  
      */
 104  
     public double getTemperaturaAlvo() {
 105  0
         return temperaturaAlvo;
 106  
     }
 107  
     
 108  
     /**
 109  
      * Libera os recursos alocados por este controlador.
 110  
      * Por ser uma classe abstrata, não faz nada.
 111  
      */
 112  
     public void dispose() {
 113  
         // nao faz nada por padrão. Subclasses
 114  
         // podem ou não implementar este método.
 115  0
     }
 116  
 
 117  
     /**
 118  
      * Cancela a busca por uma temperatura alvo.
 119  
      */
 120  
     public void cancelaTemperaturaAlvo() {
 121  6
         estado = IControladorTemperatura.Estado.SEM_ALVO;
 122  6
         cancelaTemperaturaAlvoImpl();
 123  6
     }
 124  
 
 125  
     /**
 126  
      * Cancela a busca por uma temperatura alvo.
 127  
      * Chamado pela implementação desta classe do método
 128  
      * 'cancelaTemperaturaAlvo'.
 129  
      */
 130  
     protected abstract void cancelaTemperaturaAlvoImpl();
 131  
 }