package com.iluwatar.front.controller;

/**
 * 
 * FrontController is the handler class that takes in all the requests and
 * renders the correct response.
 *
 */
public class FrontController {
	
	public void handleRequest(String request) {
		Command command = getCommand(request);
		command.process();
	}
	
	private Command getCommand(String request) {
		Class commandClass = getCommandClass(request);
		try {
			return (Command) commandClass.newInstance();
		} catch (Exception e) {
			throw new ApplicationException(e);
		}
	}
	
	private Class getCommandClass(String request) {
		Class result;
		try {
			result = Class.forName("com.iluwatar.front.controller." + request + "Command");
		} catch (ClassNotFoundException e) {
			result = UnknownCommand.class;
		}
		return result;
	}
}