View Javadoc

1   //----------------------------------------------------------------------
2   // 
3   // PerfectJPattern: "Design patterns are good but components are better!" 
4   // Application.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.chainofresponsibility;
22  
23  import org.perfectjpattern.core.api.behavioral.chainofresponsibility.*;
24  import org.slf4j.*;
25  
26  /**
27   * Concrete implementation of an Application
28   *
29   * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
30   * @version $Revision: 1.0 $Date: Apr 19, 2008 12:24:57 PM $
31   */
32  public 
33  class Application
34  implements IHelpAware, IPrintAware
35  {
36      //------------------------------------------------------------------------
37      // public
38      //------------------------------------------------------------------------
39      /** 
40       * {@inheritDoc}
41       */
42      public IParameterlessHandler 
43      getHelpHandler()
44      {
45          return theHelpHandler;
46      }
47  
48      //------------------------------------------------------------------------
49      /** 
50       * {@inheritDoc}
51       */
52      public IParameterlessHandler 
53      getPrintHandler()
54      {
55          return thePrintHandler;
56      }    
57      
58      //------------------------------------------------------------------------
59      // protected
60      //------------------------------------------------------------------------
61      protected static void
62      setLogger(Logger aLogger)
63      {
64          theLogger = aLogger;
65      }
66  
67      //------------------------------------------------------------------------
68      // inner classes
69      //------------------------------------------------------------------------
70      /**
71       * Inner implementation that handles Help requests
72       */
73      private IParameterlessHandler theHelpHandler = 
74          new AbstractParameterlessHandler()
75      {
76          //--------------------------------------------------------------------
77          @Override
78          public boolean 
79          canHandle(NullRequest aRequest)
80          throws IllegalArgumentException
81          {
82              return true;
83          }
84  
85          //--------------------------------------------------------------------
86          public void 
87          handle()
88          {
89              theLogger.debug("Application is displaying Help ...");
90          }        
91      };
92      
93      //------------------------------------------------------------------------
94      /**
95       * Inner implementation that handles Print requests
96       */
97      private IParameterlessHandler thePrintHandler = 
98          new AbstractParameterlessHandler()
99      {
100         //--------------------------------------------------------------------
101         @Override
102         public boolean 
103         canHandle(NullRequest aRequest)
104         throws IllegalArgumentException
105         {
106             return true;
107         }
108 
109         //--------------------------------------------------------------------
110         public void 
111         handle()
112         {
113             theLogger.debug("Application is Printing ...");
114         }                
115     };
116         
117     //------------------------------------------------------------------------
118     // members
119     //------------------------------------------------------------------------
120     /**
121      * Provides logging facilities for this class instance 
122      */
123     private static Logger theLogger = LoggerFactory.getLogger(Application.
124         class);
125 }