package com.csc.library.factory;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import com.csc.library.command.CommandBase;
import com.csc.library.command.CscCommand;
import com.csc.library.modecontroller.CMDModeManagement;
import com.csc.library.properties.CscSession;
import com.csc.library.request.CMDMode;
import com.csc.library.request.RequestWebsocket;
import com.csc.library.session.InitialEnvironment;

public class CommandFactory {
	private static CommandFactory instance;
	
	private CommandFactory(){
	}
	
	public static CommandFactory getInstance(){
		if(instance == null){
			instance = new CommandFactory();
		}
		return instance;
	}
	
	public CscCommand getCommand(CscSession session ,RequestWebsocket req){
		CommandBase command = null;
		try{
			CMDModeManagement.ModeBuilder builder = CMDModeFactory.getInstance().getModeBuilder(req.getCommandMode());
			String className = builder.getClassName(req.getCommandCode());
			Class c = Class.forName("com.csc.library.command."+className);
			command = (CommandBase)c.newInstance();
			command.setRequest(req);
			command.setSession(session);
			command.setParamConfig(builder.getParamConfig(req.getCommandCode()));
		}catch(Exception e){
			e.printStackTrace();
		}
		return command;
	}
}