All pastes #1901574 Raw Edit

Stuff

public java v1 · immutable
#1901574 ·published 2010-07-16 05:37 UTC
rendered paste body
/**Copyright 2010 Carlos Rincón** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package jalarmv;import java.util.Calendar;import javax.swing.JOptionPane;/**** @author Carlos Eduardo Hernández Rincón* @fecha 10/07/2010 06:26:54 PM* @universidad Universidad del Valle de México Campus Toluca* @materia --* @tema --*/public class ClockManagement {   //Tanto alarmaHoras como alarmaMinutos permite tratar la hora como entero, que aunque no   // está implementado aún, permite hacer la modularización   private String horaDeAlarma;   private int alarmaHoras;   private int alarmaMinutos;   //Definiendo este constructor se forza a siempre inicializar la hora de la alarma en un formato de   // HH:MM en 24 horas (no formato de 12 horas).   public ClockManagement(String horaAlarma) {      setHoraDeAlarma(horaAlarma);   }   private void setHoraDeAlarma(String horaDeAlarma) {      this.horaDeAlarma = horaDeAlarma;   }   //Este método sí está como público y además static porque la hora será siempre la misma para todos   // los objetos instanciados, además de que permite obtener la hora del sistema de una manera más   // amigable incluso para aquellos que no deseen instanciar una alarma   public static String getDate() {      String fecha;      Calendar hora = Calendar.getInstance();      fecha = hora.get(Calendar.HOUR_OF_DAY) + ":" + hora.get(Calendar.MINUTE);   return fecha;   }   //Se debe tener muchísimo cuidado al manejar este método (el único público de la clase) ya que se    // usa una pausa de hilo dentro de un ciclo y si no se implementa correctamente se puede caer en   // un bucle infinito del cual no podremos terminar nuestro proceso.   //Este es el método que comienza la cuenta regresiva   public void esperarLaHora() throws InterruptedException {      boolean yaEsHora = false;      while (yaEsHora == false) {         if (getDate().equals(horaDeAlarma)) {            yaEsHora = true;         } else if ((horaActualMinutos() > alarmaMinutos) && (horaActualHoras() == alarmaHoras)) {            yaEsHora = true;         } else {            Thread.sleep(1000 * 20);         }      }      llamarAlarma();   }   private int horaActualMinutos() {      String fecha;      Calendar hora = Calendar.getInstance();      fecha = hora.get(Calendar.HOUR_OF_DAY) + ":" + hora.get(Calendar.MINUTE);      int minutos = Integer.parseInt(fecha.substring(3));      return minutos;   }   private void setAlarmaMinutos() {      this.alarmaMinutos = Integer.parseInt(horaDeAlarma.substring(3));   }   private int horaActualHoras() {      String fecha;      Calendar hora = Calendar.getInstance();      fecha = hora.get(Calendar.HOUR_OF_DAY) + ":" + hora.get(Calendar.MINUTE);      int horas = Integer.parseInt(fecha.substring(0, 2));      return horas;   }   private void setAlarmaHoras() {      this.alarmaHoras = Integer.parseInt(horaDeAlarma.substring(0, 2));   }   //En este método va todo el bloque de código que quieren que se ejecute cuando la alarma se   // dispare   private void llamarAlarma() {      JOptionPane.showMessageDialog(null, "Ya es hora señor, son las\n\n" + getDate(), "LA ALARMA", JOptionPane.WARNING_MESSAGE);   }}