I have enum class
public enum TaskName {
LOGIN,REGISTER,MESSAGE
}
I use this enum with switch-case
public class TaskController {
private UserDao userDaoJpaImpl;
private FriendDao friendDaoJpaImpl;
private GroupDao groupDaoJpaImpl;
private MessageDao messageDaoJpaImpl;
public TaskController() {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("Eclipselink_JPA");
userDaoJpaImpl = new UserDaoJpaImpl(emfactory);
friendDaoJpaImpl = new FriendDaoJpaImpl(emfactory);
groupDaoJpaImpl = new GroupDaoJpaImpl(emfactory);
messageDaoJpaImpl = new MessageDaoJpaImpl(emfactory);
}
public void doIt(String taskName)
{
switch (taskName) {
case LOGIN:
userDaoJpaImpl.create(/*Something*/);
//Implementation
break;
case REGISTER:
//Implementation
break;
case MESSAGE:
messageDaoJpaImpl.create(/*Something*/);
//Implementation
break;
}
}
}
I create object of TaskController as static TaskController controller=new TaskController()
so that object created only once
Now I am planning to use Command Pattern in place of switch-case
but i am stuck how to use my UserDaoJpaImpl,FriendDaoJpaImpl,GroupDaoJpaImpl,MessageDaoJpaImpl inside Command classess
Edit
Command Class
public interface Command {
void setSession(Session session); //Session is websocket connection session not HttpSession
void setConnectedUser(Map<String, UserDTO> connectedUser);
void setData(String data);
JSONObject execute();
}
I want to move whole logic from TaskController.doIt() to Other command class which will implement Command Interface.
I am using Websocket. I don't want to use spring for this problem
Thanks in advance