Refactoring: Moving GUI program logic from CoderClient to each controller class
-Removing the Session Guard -Adding a SessionHandler -Adding a ProjectHandler
This commit is contained in:
parent
0a580f8c53
commit
5a9e709ae8
22 changed files with 656 additions and 655 deletions
107
src/com/coder/client/session/SessionHandler.java
Normal file
107
src/com/coder/client/session/SessionHandler.java
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
package com.coder.client.session;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import zutil.log.LogUtil;
|
||||
|
||||
import com.coder.server.message.CoderMessage;
|
||||
|
||||
public class SessionHandler{
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
|
||||
private Session session;
|
||||
private HashSet<SessionListener> sessionListeners = new HashSet<SessionListener>();
|
||||
private HashSet<ProjectMessageListener> messageListeners = new HashSet<ProjectMessageListener>();
|
||||
|
||||
public boolean setupConnection(String url, int port){
|
||||
if(session != null && session.isConnected()){
|
||||
session.close();
|
||||
}
|
||||
session = Session.setupConnection(url, port);
|
||||
if(session != null){
|
||||
for(ProjectMessageListener listener : messageListeners){
|
||||
session.addMessageListener(listener);
|
||||
}
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionConnectionSuccess();
|
||||
}
|
||||
return true;
|
||||
}else{
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionConnectionFailure();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean authenticateSession(String username, char[] clearTextPassword){
|
||||
if(session == null){
|
||||
return false;
|
||||
}else{
|
||||
boolean success = session.authenticate(username, clearTextPassword);
|
||||
if(success){
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionAuthenticationSuccess();
|
||||
}
|
||||
session.start();
|
||||
return true;
|
||||
}else{
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionAuthenticationFailure();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean sendMessage(CoderMessage msg){
|
||||
logger.fine("sending a message");
|
||||
if(session != null){
|
||||
try {
|
||||
session.send(msg);
|
||||
} catch (IOException e) {
|
||||
logger.log(Level.SEVERE, "unable to send message", e);
|
||||
closeCurrentSession(true);
|
||||
return false;
|
||||
}
|
||||
logger.fine("successfully sent the meessage");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void closeCurrentSession(boolean retry){
|
||||
if(session != null){
|
||||
logger.info("closing session to server");
|
||||
session.close();
|
||||
session = null;
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionDisconnected(retry);
|
||||
}
|
||||
}else{
|
||||
logger.fine("cannot close current session: session already terminated");
|
||||
}
|
||||
}
|
||||
|
||||
public void addSessionListener(SessionListener listener){
|
||||
this.sessionListeners.add(listener);
|
||||
}
|
||||
|
||||
public void addMessageListener(ProjectMessageListener listener) {
|
||||
messageListeners.add(listener);
|
||||
if(session != null){
|
||||
session.addMessageListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void authenticationCancel() {
|
||||
closeCurrentSession(false);
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionAuthenticationCancel();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue