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