1 //----------------------------------------------------------------------
2 //
3 // PerfectJPattern: "Design patterns are good but components are better!"
4 // AnalogClock.java Copyright (c) 2009 Giovanni Azua Garcia
5 // bravegag@hotmail.com
6 //
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License
9 // as published by the Free Software Foundation; either version 3
10 // of the License, or (at your option) any later version.
11 //
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, see <http://www.gnu.org/licenses/>.
19 //
20 //----------------------------------------------------------------------
21 package org.perfectjpattern.core.behavioral.observer;
22
23 import java.text.*;
24 import java.util.*;
25
26 import org.slf4j.*;
27
28 /**
29 * Concrete implementation of {@link IClock} of type Digital
30 *
31 * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
32 * @version $Revision: 1.0 $Date: May 25, 2008 3:40:41 PM $
33 */
34 public
35 class DigitalClock
36 implements IClock
37 {
38 //------------------------------------------------------------------------
39 // public
40 //------------------------------------------------------------------------
41 /**
42 * {@inheritDoc}
43 */
44 public void
45 draw()
46 {
47 SimpleDateFormat myFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
48
49 theLogger.debug("Printing Digital timestamp: " + myFormat.format(
50 theDate));
51 }
52
53 //------------------------------------------------------------------------
54 /**
55 * {@inheritDoc}
56 */
57 public void
58 update(Date aDate)
59 {
60 theLogger.debug("Digital clock received an update event");
61
62 theDate = (Date) aDate.clone();
63
64 draw();
65 }
66
67 //------------------------------------------------------------------------
68 // protected
69 //------------------------------------------------------------------------
70 protected static void
71 setLogger(Logger aLogger)
72 {
73 theLogger = aLogger;
74 }
75
76 //------------------------------------------------------------------------
77 // members
78 //------------------------------------------------------------------------
79
80 private Date theDate;
81
82 /**
83 * Provides logging facilities for this class
84 */
85 private static Logger theLogger = LoggerFactory.getLogger(DigitalClock.
86 class);
87 }