Show ServerCommunicator.java syntax highlighted
package persister.distributed;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import com.sun.org.apache.xerces.internal.impl.dtd.models.DFAContentModel;
//import ca.usask.hci.gt.GT;
//import ca.usask.hci.gt.application.ObjectChannel;
//import ca.usask.hci.gt.application.ObjectChannelListener;
//import ca.usask.hci.gt.application.ObjectMessageEvent;
//import ca.usask.hci.gt.appnetinterface.ControlMessage;
//import ca.usask.hci.gt.network.YellowPagesServer;
import persister.AgilePlannerClient;
import persister.AgilePlannerServer;
import persister.Backlog;
import persister.ConnectionFailedException;
import persister.CouldNotLoadProjectException;
import persister.ForbiddenOperationException;
import persister.IndexCard;
import persister.IndexCardNotFoundException;
import persister.Iteration;
import persister.Message;
import persister.MouseMove;
import persister.NotConnectedException;
import persister.AsynchronousPersister;
import persister.PlannerDataChangeListener;
import persister.Project;
import persister.StoryCard;
import persister.SynchronousPersister;
import persister.impl.data.MessageDataObject;
import persister.local.PersisterToXML;
import persister.network.NetworkServer;
/**
* @author webers
*
*/
@SuppressWarnings("unused")
public class ServerCommunicator implements CallbackCommunicator {
private static final long serialVersionUID = 6221398165337964512L;
private SynchronousPersister persisterToXML;
private Hashtable<Long, Long> storycardparents;
private long clientid = 1;
private NetworkServer ns;
public static void main(String[] args){
try{
ServerCommunicator comm = new ServerCommunicator("ProjectDirectory", "ProjectFile",5050);
}catch(Exception e){
e.printStackTrace();
System.exit(-1);
}
}
public ServerCommunicator(String projectDirectory, String projectName, int port) throws Exception {
if (projectDirectory != null) {
this.persisterToXML = new PersisterToXML(projectDirectory, projectName);
this.ns = new NetworkServer(port, this);
this.storycardparents = new Hashtable<Long, Long>();
}
}
public boolean disconnect() {
// try {
// GT.disconnect();
// this.server = null;
// return true;
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// return false;
// }
return false;
}
public synchronized void receiveMessage(Message message) {
Backlog back;
Iteration iter;
StoryCard sc;
Project prj;
Message returnMessage;
long id;
try {
switch (message.getMessageType()) {
case Message.CONNECT:
connectToProject();
break;
case Message.MOUSE_MOVE:
break;
case Message.BRING_TO_FRONT:
break;
case Message.DELETE_REMOTE_MOUSE:
break;
case Message.CREATE_BACKLOG:
createdBacklog(message);
break;
case Message.CREATE_ITERATION:
createdIteration(message);
break;
case Message.CREATE_PROJECT:
createdProject(message);
break;
case Message.CREATE_STORYCARD:
sc = (StoryCard)message.getMessage();
createdStoryCard(persisterToXML.createStoryCard(sc.getName(), sc.getDescription(), sc.getWidth(), sc.getHeight(), sc.getLocationX(), sc.getLocationY(), sc.getParent(),
sc.getBestCaseEstimate(), sc.getMostlikelyEstimate(), sc.getWorstCaseEstimate(), sc.getActualEffort(), sc.getStatus()));
break;
// case Message.DELETE_BACKLOG:
// back = (Backlog)message.getMessage();
// this.storycardparents.remove(back.getId());
// this.persisterToXML.deleteCard(back.getId());
// break;
// case Message.DELETE_ITERATION:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.deleteIteration(iter.getId());
// break;
// case Message.DELETE_PROJECT:
// prj = (Project)message.getMessage();
// this.persisterToXML.deleteProject(prj.getId());
// break;
// case Message.DELETE_STORYCARD:
// sc = (StoryCard)message.getMessage();
// this.storycardparents.remove(sc.getId());
// this.persisterToXML.deleteStoryCard(sc.getId());
// break;
// case Message.MOVE_BACKLOG:
// back = (Backlog)message.getMessage();
// this.persisterToXML.moveBacklog(back.getId(), back.getLocationX(), back.getLocationY());
// break;
// case Message.MOVE_ITERATION:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.moveIteration(iter.getId(), iter.getLocationX(), iter.getLocationY());
// break;
// case Message.MOVE_STORYCARD:
// sc = (StoryCard)message.getMessage();
// this.persisterToXML.moveStoryCard(sc.getId(), sc.getLocationX(), sc.getLocationY());
// break;
case Message.MOVE_STORYCARD_TO_NEW_PARENT:
movedStoryCardToNewParent(message);
break;
// case Message.UNDELETE_BACKLOG:
// back = (Backlog)message.getMessage();
// this.persisterToXML.undeleteBacklog(back);
// break;
// case Message.UNDELETE_ITERATION:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.undeleteIteration(iter);
// break;
// case Message.UNDELETE_PROJECT:
// prj = (Project)message.getMessage();
// this.persisterToXML.undeleteProject(prj);
// break;
case Message.UNDELETE_CARD:
sc = (StoryCard)message.getMessage();
this.persisterToXML.undeleteCard(sc);
break;
// case Message.UPDATE_BACKLOG_SIZE:
// back = (Backlog)message.getMessage();
// this.persisterToXML.updateBacklogSize(back.getId(), back.getWidth(), back.getHeight());
// break;
// case Message.UPDATE_ITERATION:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.updateIteration(iter);
// break;
// case Message.UPDATE_ITERATION_STATUS:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.updateIterationStatus(iter.getId(), iter.getStatus());
// break;
// case Message.UPDATE_ITERATION_DESCRIPTION:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.updateIterationDescription(iter.getId(), iter.getDescription());
// break;
// case Message.UPDATE_ITERATION_ENDDATE:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.updateIterationEndDate(iter.getId(), iter.getEndDate());
// break;
// case Message.UPDATE_ITERATION_NAME:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.updateIterationName(iter.getId(), iter.getName());
// break;
// case Message.UPDATE_ITERATION_SIZE:
// iter = (Iteration)message.getMessage();
// this.persisterToXML.updateIterationSize(iter.getId(), iter.getWidth(), iter.getHeight());
// break;
// case Message.UPDATE_STORYCARD:
// sc = (StoryCard)message.getMessage();
// this.persisterToXML.updateCard(sc);
// break;
//
// case Message.UPDATE_PROJECT_NAME:
// prj = (Project)message.getMessage();
// this.persisterToXML.updateProjectName(prj.getId(), prj.getName());
// break;
case Message.LOAD:
//this.persisterToXML.load(DEFAULT_FILE_NAME);
String loadProjectName = (String)message.getMessage();
System.out.println(loadProjectName);
Project proj = this.persisterToXML.load((String)message.getMessage());
// Project proj = ((LocalPersister)persisterToXML).directGetProject();
this.loadedProject(proj);
break;
case Message.TIMEBOX_LOAD:
Object[] msg = (Object[])message.getMessage();
String projectName = (String)msg[0];
Timestamp start = (Timestamp)msg[1];
Timestamp end = (Timestamp)msg[2];
this.persisterToXML.load(projectName, start, end);
case Message.UPLOAD:
String[] returnedData = (String[]) message.getMessage();
this.persisterToXML.writeToFile(returnedData[0], returnedData[1]);
break;
case Message.SAVE_AS:
System.out.println((String)message.getMessage());
String fileName = (String)message.getMessage();
String[] str = this.persisterToXML.readFromFile("anystring");
this.upLoadFile(fileName,str);
break;
// case Message.GET_PROJECT_NAMES:
// //this.persisterToXML.getProjectNames();
// break;
// case Message.GET_PROJECT_FILES_NAME:
// String[] filesNames = this.persisterToXML.getProjectFiles();
// this.sendFileNames(filesNames);
// System.out.println("sentFrom server");
// break;
default:
break;
}
} catch (ForbiddenOperationException e) {
e.printStackTrace();
} catch (IndexCardNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void connectToProject() {
Project p = persisterToXML.getProject();
MessageDataObject returnMessage = new MessageDataObject(this.clientid, Message.CONNECT, p);
sendMessage(returnMessage);
}
/****************************************************************************************
* LOAD & SAVE *
****************************************************************************************/
public void upLoadFile(String fileName, String[] content) {
String[] str = new String[2];
str[0] = fileName;
// discard what is in content content[0]
str[1] = content[1];
MessageDataObject message = new MessageDataObject(this.clientid,
Message.SAVE_AS, str);
sendMessage(message);
}// end method
public void sendFileNames(String[] filesNames)
{
MessageDataObject message = new MessageDataObject(this.clientid,
Message.GET_PROJECT_FILES_NAME, filesNames);
sendMessage(message);
for(int i = 0; i < filesNames.length; i++)
{
System.out.println("filesNamesSentByServer: "+filesNames[i]);
}
}
/****************************************************************************************
* CREATE *
****************************************************************************************/
private void createdBacklog(Message message) {
Backlog back = (Backlog)message.getMessage();
Backlog toReturn = null;
try {
toReturn = persisterToXML.createBacklog(back.getWidth(), back.getHeight(), back.getLocationX(), back.getLocationY());
} catch (ForbiddenOperationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MessageDataObject returnMessage = new MessageDataObject(this.clientid, Message.CREATE_BACKLOG, toReturn);
sendMessage(returnMessage);
}
private void createdIteration(Message message) {
Iteration iter = (Iteration)message.getMessage();
Iteration iterReturned = persisterToXML.createIteration(iter.getName(), iter.getDescription(), iter.getWidth(), iter.getHeight(), iter.getLocationX(), iter.getLocationY(),
iter.getAvailableEffort(), iter.getStartDate(), iter.getEndDate());
MessageDataObject returnMessage = new MessageDataObject(this.clientid, Message.CREATE_ITERATION, iterReturned);
sendMessage(returnMessage);
}
private void createdProject(Message message) {
Project prj = (Project)message.getMessage();
Project returnProject = null;
try {
returnProject = persisterToXML.createProject(prj.getName());
} catch (ForbiddenOperationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MessageDataObject returnMessage = new MessageDataObject(this.clientid, Message.CREATE_PROJECT, returnProject);
sendMessage(returnMessage);
}
private void createdStoryCard(StoryCard storycard) {
this.storycardparents.put(storycard.getId(), storycard.getParent());
MessageDataObject message = new MessageDataObject(this.clientid, Message.CREATE_STORYCARD, storycard);
sendMessage(message);
}
private void loadedProject(Project project) {
System.out.println("Project "+project.getName()+ "loading from server");
MessageDataObject message = new MessageDataObject(this.clientid, Message.LOAD, project);
sendMessage(message);
}
/****************************************************************************************
* DELETE *
****************************************************************************************/
// public void deletedBacklog(Backlog backlog) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.DELETE_BACKLOG, backlog);
// //this.server.addMessage(message);
// this.server.send(message);
// }
//
// public void deletedIteration(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.DELETE_ITERATION, iteration);
// //this.server.addMessage(message);
// this.server.send(message);
// }
//
// public void deletedProject(Project project) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.DELETE_PROJECT, project);
// //this.server.addMessage(message);
// this.server.send(message);
// }
private void deletedCard(IndexCard indexCard) {
this.storycardparents.remove(indexCard.getId());
MessageDataObject message = new MessageDataObject(this.clientid, Message.DELETE_CARD, indexCard);
//this.server.addMessage(message);
sendMessage(message);
}
/****************************************************************************************
* UNDELETE *
****************************************************************************************/
// public void undeletedBacklog(Backlog backlog) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UNDELETE_BACKLOG, backlog);
// //this.server.addMessage(message);
// sendMessage(message);
// }
//
// public void undeletedIteration(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UNDELETE_ITERATION, iteration);
// //this.server.addMessage(message);
// sendMessage(message);
// }
//
// public void undeletedProject(Project project) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UNDELETE_PROJECT, project);
// //this.server.addMessage(message);
// sendMessage(message);
// }
//
private void undeletedCard(IndexCard indexCard) {
this.storycardparents.put(indexCard.getId(), indexCard.getParent());
MessageDataObject message = new MessageDataObject(this.clientid, Message.UNDELETE_CARD, indexCard);
//this.server.addMessage(message);
sendMessage(message);
}
/****************************************************************************************
* MOVE *
****************************************************************************************/
// public void movedBacklog(Backlog backlog) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.MOVE_BACKLOG, backlog);
// //this.server.addMessage(message);
// }
//
// public void movedIteration(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.MOVE_ITERATION, iteration);
// //this.server.addMessage(message);
// }
//
// public void movedStoryCard(StoryCard storycard) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.MOVE_STORYCARD, storycard);
// //this.server.addMessage(message);
// }
/****************************************************************************************
* MOVE STORYCARD BETWEEN PARENTS *
****************************************************************************************/
private void movedStoryCardToNewParent(Message message) {
StoryCard sc = (StoryCard)message.getMessage();
HashMap<String, String> additionalData = new HashMap();
long parentId = Long.parseLong(((MessageDataObject)message).getData().get("newparentid"));
int locationX = Integer.parseInt(((MessageDataObject)message).getData().get("locationX"));
int locationY = Integer.parseInt(((MessageDataObject)message).getData().get("locationY"));
//long id = this.storycardparents.get(sc.getId()).longValue();
StoryCard returnStoryCard = null;
try {
returnStoryCard = persisterToXML.moveStoryCardToNewParent(sc.getId(), sc.getParent(),
parentId, locationX, locationY);
//this.storycardparents.put(storycard.getId(), storycard.getParent());
MessageDataObject returnMessage = new MessageDataObject(this.clientid, Message.MOVE_STORYCARD_TO_NEW_PARENT, returnStoryCard);
sendMessage(returnMessage);
} catch (IndexCardNotFoundException e) {
MessageDataObject returnMessage = new MessageDataObject(this.clientid, Message.EXCEPTION, e);
sendMessage(returnMessage);
}
}
/****************************************************************************************
* UPDATE BACKLOG *
****************************************************************************************/
// public void updatedBacklogSize(Backlog backlog) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_BACKLOG_SIZE, backlog);
// //this.server.addMessage(message);
// }
/****************************************************************************************
* UPDATE ITERATION *
****************************************************************************************/
// public void updatedIteration(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_ITERATION, iteration);
// //this.server.addMessage(message);
// }
//
// public void updatedIterationDescription(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_ITERATION_DESCRIPTION, iteration);
// //this.server.addMessage(message);
// }
//
// public void updatedIterationEndDate(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_ITERATION_ENDDATE, iteration);
// //this.server.addMessage(message);
// }
//
// public void updatedIterationName(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_ITERATION_NAME, iteration);
// //this.server.addMessage(message);
// }
//
// public void updatedIterationSize(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_ITERATION_SIZE, iteration);
// //this.server.addMessage(message);
// }
//
// public void updatedIterationStatus(Iteration iteration) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_ITERATION_STATUS, iteration);
// //this.server.addMessage(message);
// }
/****************************************************************************************
* UPDATE PROJECT *
****************************************************************************************/
// public void updatedProjectName(Project project) {
// MessageDataObject message = new MessageDataObject(this.clientid, Message.UPDATE_PROJECT_NAME, project);
// //this.server.addMessage(message);
// }
/****************************************************************************************
* GETTERS & SETTERS *
****************************************************************************************/
public long getClientId() /* throws RemoteException */{
return this.clientid;
}
public void setClientId(long id) {
this.clientid = id;
}
public Hashtable<Long, Long> getStorycardparents() {
return storycardparents;
}
public void setStorycardparents(Hashtable<Long, Long> storycardparents) {
this.storycardparents = storycardparents;
}
public void getProjectFiles()
{
}
public void gotProjectNames(List<String> str) {
// TODO Auto-generated method stub
}
private void sendMessage(Message msg){
System.out.println("Project "+ "loaded from server");
ns.send(msg);
}
}
See more files for this project here