View Javadoc
1 //============================================================================== 2 // file : ViewHelper.java 3 // project: Front View Control 4 // 5 // last change: date: $Date: 2003/09/10 09:13:57 $ 6 // by: $Author: bitiboy $ 7 // revision: $Revision: 1.1 $ 8 //------------------------------------------------------------------------------ 9 // copyright: GNU GPL Software License (see class documentation) 10 //============================================================================== 11 package com.justhis.control; 12 13 14 /* 15 * $Id: ViewHelper.java,v 1.1 2003/09/10 09:13:57 bitiboy Exp $ 16 * 17 * Copyright 2003 Acai Software All Rights Reserved. 18 * 19 * This file ViewHelper.java is part of the Front View Control. 20 21 * The Front View Control is free software; you can redistribute it and/or modify 22 * it under the terms of the GNU General Public License as published by 23 * the Free Software Foundation; either version 2 of the License, or 24 * (at your option) any later version. 25 26 * The Front View Control is distributed in the hope that it will be useful, 27 * but WITHOUT ANY WARRANTY; without even the implied warranty of 28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 29 * GNU General Public License for more details. 30 31 * You should have received a copy of the GNU General Public License 32 * along with the Front View Control; if not, write to the Free Software 33 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 34 35 * http://www.justhis.com 36 * CONTACT: email = superaxis@sohu.com webmaster@justhis.com 37 */ 38 import com.justhis.util.PropertiesReader; 39 import com.justhis.util.exception.JavaClassRefectException; 40 import com.justhis.util.exception.PropertiesFileReadException; 41 42 import java.util.Enumeration; 43 import java.util.HashMap; 44 import java.util.Map; 45 46 47 /*** 48 * A singleton class that creates commands using the command mapping property 49 * file. 50 * 51 * @author <a href="http://blog.ejb.cn">acai</a> 52 * @version $Revision: 1.1 $ 53 */ 54 public class ViewHelper { 55 //~ Static fields/initializers --------------------------------------------- 56 57 /*** The name of the property file mapping command names to classes. */ 58 private static final java.lang.String COMMAND_MAPPING_PROPERTY_FILE = "/cmdMapping"; 59 60 /*** Mapping of command name to command class. */ 61 private static Map commands = null; 62 63 /*** synchronized sign */ 64 private static Object obj = new Object(); 65 66 //~ Constructors ----------------------------------------------------------- 67 68 /*** 69 * Construct an instance. 70 */ 71 private ViewHelper() { 72 } 73 74 //~ Methods ---------------------------------------------------------------- 75 76 /*** 77 * Create the map of command names to command classes. 78 */ 79 private static void createCommandMap() 80 throws PropertiesFileReadException, 81 JavaClassRefectException { 82 Map commandMap = new HashMap(); 83 84 PropertiesReader reader = new PropertiesReader(COMMAND_MAPPING_PROPERTY_FILE); 85 86 for (Enumeration e = reader.getKeys(); e.hasMoreElements();) { 87 String action = (String) e.nextElement(); 88 Class newCommandClass = null; 89 90 try { 91 newCommandClass = Class.forName(reader.getProperty(action)); 92 } catch (ClassNotFoundException e1) { 93 throw new JavaClassRefectException("Happen ClassNotFoundException", 94 e1 95 ); 96 } 97 98 commandMap.put(action, newCommandClass); 99 } 100 101 setCommands(commandMap); 102 } 103 104 /*** 105 * Get the map from command names to command classes. 106 * 107 * @return the map from command names to command classes 108 */ 109 private static Map getCommands() 110 throws PropertiesFileReadException, 111 JavaClassRefectException { 112 synchronized (obj) { 113 if (commands == null) { 114 createCommandMap(); 115 } 116 } 117 118 return commands; 119 } 120 121 /*** 122 * Set the map from command names to command classes. 123 * 124 * @return commandMap the new map from command names to command classes 125 */ 126 private static void setCommands(Map commandMap) { 127 commands = commandMap; 128 } 129 130 /*** 131 * Create a Command instance for the specified action or command. 132 * 133 * @param action the name of the command 134 * 135 * @return Command or <code>null</code> if the command could not be created 136 */ 137 public static Command getCommand(String action) 138 throws PropertiesFileReadException, 139 JavaClassRefectException { 140 Class newCommandClass = (Class) getCommands().get(action); 141 142 Command newCommand = null; 143 144 try { 145 newCommand = (Command) newCommandClass.newInstance(); 146 } catch (InstantiationException e) { 147 throw new JavaClassRefectException("Happen InstantiationException", 148 e 149 ); 150 } catch (IllegalAccessException e) { 151 throw new JavaClassRefectException("Happen IllegalAccessException", 152 e 153 ); 154 } 155 156 return newCommand; 157 } 158 } 159 160 161 /* 162 * $Log: ViewHelper.java,v $ 163 * Revision 1.1 2003/09/10 09:13:57 bitiboy 164 * *** empty log message *** 165 * 166 * 167 */

This page was automatically generated by Maven