Code Search for Developers
 
 
  

ServerCommunicator.java from MASE: Agile Software Engineering at Krugle


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

MASE: Agile Software Engineering

The MASE project investigates methods to support the coordination and executable acceptance testing of software projects. Keywords: Agile methods, distributed teams, Extreme Programming. See http://ebe.cpsc.ucalgary.ca/ebe for more information.

Project homepage: http://sourceforge.net/projects/mase
Programming language(s): Java,XML
License: other

  CallbackCommunicator.java
  ClientCommunicator.java
  ServerCommunicator.java