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 }