JSocketMUD/
JSocketMUD/dk/socketmud/
JSocketMUD/dk/socketmud/io/
JSocketMUD/dk/socketmud/object/
JSocketMUD/dk/socketmud/util/
package dk.socketmud.action;

public class ActionFactory
{
	protected ActionFactory()
	{
		; // to prevent instances of this class being made
	}

	public static SMAction getInstance(String command) throws IllegalActionException
	{
		try
		{
			Class c = Class.forName("dk.socketmud.action.Cmd" + command);
		    Object o = c.newInstance();

		    if (o instanceof SMAction)
		    	return (SMAction) o;

		    throw new IllegalActionException("Command '" + command + "' is not an SMAction");
		}
		catch (ClassNotFoundException ex)
		{
			throw new IllegalActionException("Class for command '" + command + "' not found");
		}
		catch (InstantiationException ex)
		{
			throw new IllegalActionException("Failed to instantiate class for command '" + command + "'");
		}
		catch (IllegalAccessException ex)
		{
			throw new IllegalActionException("Class for command '" + command + "' not accessable");
		}
	}
}