Code Search for Developers
 
 
  

AgilePlannerWebUIServiceImpl.java from MASE: Agile Software Engineering at Krugle


Show AgilePlannerWebUIServiceImpl.java syntax highlighted

package ucalgary.ebe.webui.server;

import java.sql.Timestamp;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

import persister.AbstractRoot;
import persister.Backlog;
import persister.ForbiddenOperationException;
import persister.IndexCardNotFoundException;
import persister.Iteration;
import persister.IndexCard;
import persister.NotConnectedException;
import persister.Project;
import persister.StoryCard;
import persister.impl.data.BacklogDataObject;
import persister.impl.data.IterationDataObject;
import persister.impl.data.ProjectDataObject;
import persister.impl.data.StoryCardDataObject;
import persister.local.LocalPersister;
import ucalgary.ebe.webui.client.data.BacklogWeb;
import ucalgary.ebe.webui.client.data.IterationWeb;
import ucalgary.ebe.webui.client.data.ProjectWeb;
import ucalgary.ebe.webui.client.data.StoryCardWeb;
import ucalgary.ebe.webui.server.service.AgilePlannerWebUIService;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class AgilePlannerWebUIServiceImpl extends RemoteServiceServlet implements AgilePlannerWebUIService {

	private static final String ONLY_DATE_TIMESTAMP_PATTERN = "(\\d){4}-(\\d){2}-(\\d){2}";
	private static final String COMPLETE_TIMESTAMP_PATTERN = "(\\d){4}-(\\d){2}-(\\d){2}\\s(\\d){2}:(\\d){2}:(\\d){2}\\.\\d{1,9}";
	
	private static final long serialVersionUID = -721448177047087267L;
	
	private Hashtable<Long, AbstractRoot> lookup = new Hashtable<Long, AbstractRoot>();
	
	private LocalPersister ps;
	
	public AgilePlannerWebUIServiceImpl() {
		ps = new LocalPersister();
		ps.connect(null, null, "default.xml");
	}
	
	
	private Timestamp convertToTimestamp(String ts) {
		if(ts.matches(ONLY_DATE_TIMESTAMP_PATTERN)) {
			return Timestamp.valueOf(ts+" 00:00:00.000000000");
		} else if(ts.matches(COMPLETE_TIMESTAMP_PATTERN)) {
			return Timestamp.valueOf(ts);
		} else {
			return new Timestamp(System.currentTimeMillis());
		}
		
		
	}
	
	
	
	/**
	 * Converts the project returned by the persister to a
	 * web transferable format that can be used by the frontend
	 * 
	 * @param project
	 * @return
	 */
	private ProjectWeb convertProject(Project project) {
		this.lookup.put(project.getId(), project);
		
		ProjectWeb prj = new ProjectWeb();
		
		prj.setBacklog(this.convertBacklog(project.getBacklog()));
	
		for(Iteration iteration : project.getIterationChildren()) {
			prj.addIteration(this.convertIteration(iteration));
		}
		
		System.out.println("convertProject");
		return prj;
	}
	
	
	/**
	 * Converts an iteration from persister to web frontend format
	 * 
	 * @param iteration
	 * @return
	 */
	private IterationWeb convertIteration(Iteration iteration) {
		this.lookup.put(iteration.getId(), iteration);
		IterationWeb iter = new IterationWeb(iteration.getId(), iteration.getParent(), 
				iteration.getName(), iteration.getDescription(),
				iteration.getAvailableEffort(), 
				iteration.getStartDate().toString(), iteration.getEndDate().toString());
		
		for(StoryCard storycard : iteration.getStoryCardChildren()) {
			iter.addStoryCard(this.convertStoryCard(storycard));
		}
		
		System.out.println("convertIteration");
		return iter;
	}
	
	
	/**
	 * Converts a backlog from persister to web frontend format
	 * 
	 * @param backlog
	 * @return
	 */
	private BacklogWeb convertBacklog(Backlog backlog) {
		this.lookup.put(backlog.getId(), backlog);
		BacklogWeb back = new BacklogWeb(backlog.getId(), backlog.getParent());
		
		for(StoryCard storycard : backlog.getStoryCardChildren()) {
			back.addStoryCard(this.convertStoryCard(storycard));
		}
		
		System.out.println("convertBacklog");
		return back;
	}
	
	
	/**
	 * Converts a storycard from persister to web frontend format
	 * 
	 * @param storycard
	 * @return
	 */
	private StoryCardWeb convertStoryCard(StoryCard storycard) {
		this.lookup.put(storycard.getId(), storycard);
		StoryCardWeb sc = new StoryCardWeb(storycard.getId(), storycard.getParent(), 
				storycard.getName(), storycard.getDescription(), 
				storycard.getBestCaseEstimate(), storycard.getMostlikelyEstimate(), 
				storycard.getWorstCaseEstimate(), storycard.getActualEffort(), 
				storycard.isCompleted());;
		
		System.out.println("convertStoryCard");
		return sc;
	}


	/* (non-Javadoc)
	 * @see ucalgary.ebe.mase.server.myservice.MyService#loadProject(java.lang.String)
	 */
	public ProjectWeb loadProject(String name) {
		
		System.out.println("loadProject");
//		return this.convertProject(this.createProject());
		try {
			return this.convertProject(ps.directLoad(name));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	
	
	public Vector getProjectNames() {
		
		System.out.println("getProjectNames");
		Vector names = new Vector();
//		names.add("Project1");
//		names.add("Project2");
		
		List<String> prjs = new LinkedList<String>();
		
		try {
			prjs = ps.directGetProjectNames();
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		for(String name : prjs) {
			names.add(name);
		}
		
		return names;
		
	}
	
	
/****************************************************************************************
 *									CREATE												* 
 ****************************************************************************************/
	
	//TODO consider throwing exceptions
	public BacklogWeb createBacklog() {
		System.out.println("Create Backlog");
		
		try {
			return convertBacklog(ps.directCreateBacklog(Backlog.DEFAULT_WIDTH, Backlog.DEFAULT_HEIGHT, 
					Backlog.DEFAULT_LOCATION_X, Backlog.DEFAULT_LOCATION_Y));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ForbiddenOperationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	//consider throwing exceptions
	public IterationWeb createIteration(String name, String description, 
			float availableEffort, String startDate, String endDate) {
				
		try {
			return this.convertIteration(ps.directCreateIteration(name, description, 
					Iteration.DEFAULT_WIDTH, Iteration.DEFAULT_HEIGHT, 
					Iteration.DEFAULT_LOCATION_X, Iteration.DEFAULT_LOCATION_Y, 
					availableEffort, convertToTimestamp(startDate), convertToTimestamp(endDate)));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
		
	}
	
	public ProjectWeb createProject(String name) {
		System.out.println("Create Project");
		
		try {
			return this.convertProject(ps.directCreateProject(name));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ForbiddenOperationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	
	//TODO consider throwing exceptions
	public StoryCardWeb createStoryCard(String name, String description, long parentid, float bestCaseEstimate, 
			float mostlikelyEstimate, float worstCaseEstimate, float actualEffort, boolean completed) {
		System.out.println("Create Storycard");
		
		int locationX = ((IndexCard)this.lookup.get(parentid)).getLocationX() + 50;
		int locationY = ((IndexCard)this.lookup.get(parentid)).getLocationY() + 50;
		
		try {
			return this.convertStoryCard(ps.directCreateStoryCard(name, description, 
					StoryCard.DEFAULT_WIDTH, StoryCard.DEFAULT_HEIGHT, 
					locationX, locationY, parentid, bestCaseEstimate, mostlikelyEstimate, 
					worstCaseEstimate, actualEffort, completed));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	
/****************************************************************************************
 *									DELETE												* 
 ****************************************************************************************/
	
	public BacklogWeb deleteBacklog(long id) {
		System.out.println("Delete Backlog "+id);
		try {
			return this.convertBacklog(ps.directDeleteBacklog(id));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ForbiddenOperationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public IterationWeb deleteIteration(long id) {
		System.out.println("Delete Iteration "+id);
		try {
			return this.convertIteration(ps.directDeleteIteration(id));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public ProjectWeb deleteProject(long id) {
		System.out.println("Delete Project "+id);
		
		try {
			return this.convertProject(ps.directDeleteProject(id));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
		
	}
	
	public StoryCardWeb deleteStoryCard(long id) {
		System.out.println("Delete StoryCard "+id);

		try {
			return this.convertStoryCard(ps.directDeleteStoryCard(id));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}

	
/****************************************************************************************
 *										UPDATE STORYCARD								* 
 ****************************************************************************************/
	
	public StoryCardWeb updateStoryCardActualEffort(long id, float actualEffort) {
		System.out.println("Update StoryCard "+id+" to actual effort "+ actualEffort);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardActualEffort(id, actualEffort));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public StoryCardWeb updateStoryCardBestCaseEstimate(long id, float bestCaseEstimate) {
		System.out.println("Update StoryCard "+id+" to best case "+ bestCaseEstimate);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardBestCaseEstimate(id, bestCaseEstimate));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public StoryCardWeb updateStoryCardComplete(long id, boolean completed) {
		System.out.println("Update StoryCard "+id+" to completed "+ completed);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardComplete(id, completed));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public StoryCardWeb updateStoryCardDescription(long id, String description) {
		System.out.println("Update StoryCard "+id+" to description "+ description);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardDescription(id, description));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public StoryCardWeb updateStoryCardMostLikelyEstimate(long id, float mostlikelyEstimate) {
		System.out.println("Update StoryCard "+id+" to most likely effort "+ mostlikelyEstimate);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardMostLikelyEstimate(id, mostlikelyEstimate));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public StoryCardWeb updateStoryCardName(long id, String name) {
		System.out.println("Update StoryCard "+id+" to name "+ name);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardName(id, name));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
		
	}
	
	public StoryCardWeb updateStoryCardInProgress(long id, boolean started) {
		System.out.println("Update StoryCard "+id+" to started "+ started);
		
		return null;
	}
	
	public StoryCardWeb updateStoryCardWorstCaseEstimate(long id, float worstCaseEstimate) {
		System.out.println("Update StoryCard "+id+" to worst case "+ worstCaseEstimate);
		try {
			return this.convertStoryCard(ps.directUpdateStoryCardWorstCaseEstimate(id, worstCaseEstimate));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	
/****************************************************************************************
 *						MOVE STORYCARD BETWEEN PARENTS									* 
 ****************************************************************************************/
	
	public StoryCardWeb moveStoryCardToNewParent(long id, long oldparentid, long newparentid) {
		System.out.println("Move StoryCard "+id+" from "+oldparentid+" to "+ newparentid);
		
		int locationX = ((IndexCard)this.lookup.get(newparentid)).getLocationX();
		int locationY = ((IndexCard)this.lookup.get(newparentid)).getLocationY();
		
		try {
			return this.convertStoryCard(ps.directMoveStoryCardToNewParent(id, oldparentid, newparentid, locationX, locationY));
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}

	
/****************************************************************************************
 *								UPDATE ITERATION										* 
 ****************************************************************************************/
	
	public IterationWeb updateIterationAvailableEffort(long id, float availableEffort) {
		System.out.println("Update Iteration "+id+" to available effort "+ availableEffort);
		try {
			return this.convertIteration(ps.directUpdateIterationAvailableEffort(id, availableEffort));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public IterationWeb updateIterationComplete(long id, boolean completed) {
		System.out.println("Update Iteration "+id+" to complete "+ completed);
		try {
			return this.convertIteration(ps.directUpdateIterationComplete(id, completed));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public IterationWeb updateIterationDescription(long id, String description) {
		System.out.println("Update Iteration "+id+" to description "+ description);
		try {
			return this.convertIteration(ps.directUpdateIterationDescription(id, description));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
	public IterationWeb updateIterationEndDate(long id, String endDate) {
		System.out.println("Update Iteration "+id+" to end date "+ endDate);
		try {
			return this.convertIteration(ps.directUpdateIterationEndDate(id, convertToTimestamp(endDate)));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}

	public IterationWeb updateIterationName(long id, String name) {
		System.out.println("Update Iteration "+id+" to name "+ name);
		try {
			return this.convertIteration(ps.directUpdateIterationName(id, name));
		} catch (NotConnectedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexCardNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
	
/****************************************************************************************
 *											UPDATE PROJECT								* 
 ****************************************************************************************/

	public ProjectWeb updateProjectName(long id, String name) {
		System.out.println("Update Project "+id+" to name "+ name);
		
		return null;

	}

}




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

  service/
    AgilePlannerWebUIService.java
    AgilePlannerWebUIServiceAsync.java
  AgilePlannerWebUIServiceImpl.java