1 /******************************************************************************** 2 * InternetCafe is a software solution that helps the management of Cybercafes 3 * according with the ITALIAN DECREE LAW ON ANTI-TERROR MEASURES, 27 JULY 2005. 4 * Copyright (C) 2006 Guido Angelo Ingenito 5 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19 *******************************************************************************/ 20 package ui.command; 21 22 import org.apache.log4j.Logger; 23 24 public class CommandExecutor { 25 26 private static final transient Logger logger = Logger 27 .getLogger(CommandExecutor.class.getName()); 28 29 private static CommandExecutor instance = null; 30 31 public static CommandExecutor getInstance() { 32 return instance == null ? instance = new CommandExecutor() : instance; 33 } 34 35 protected CommandExecutor() { 36 37 } 38 39 public synchronized void executeCommand(final Command command, 40 boolean synchronous) { 41 try { 42 Thread thread = new Thread() { 43 public void run() { 44 try { 45 command.prologo(); 46 command.execution(); 47 command.epilogue(); 48 } catch (Exception ex) { 49 logger.error(ex.getMessage()); 50 ex.printStackTrace(); 51 } 52 53 } 54 }; 55 thread.start(); 56 if (synchronous) 57 thread.join(); 58 } catch (Exception ex) { 59 logger.error(ex.getMessage()); 60 ex.printStackTrace(); 61 } 62 } 63 }