Java Reference
In-Depth Information
16. public Task getTask(String taskID, Date lastUpdate) throws UpdateException{
17. return UpdateServerDelegate.getTask(taskID, lastUpdate);
18. }
19.
20. public void updateTask(String taskID, Task updatedTask) throws UpdateException{
21. UpdateServerDelegate.updateTask(taskID, updatedTask);
22. }
23. }
The class UpdateServerDelegate performs the server-side behavior for ClientPullServerImpl . Specifically, it
retrieves Task objects, and ensures that up-to-date copies of Tasks are provided to clients by comparing the last
update Date .
Example A.240 UpdateServerDelegate.java
1. import java.util.Date;
2. import java.util.HashMap;
3. public class UpdateServerDelegate{
4. private static HashMap tasks = new HashMap();
5.
6. public static Task getTask(String taskID, Date lastUpdate) throws UpdateException{
7. if (tasks.containsKey(taskID)){
8. Task storedTask = (Task)tasks.get(taskID);
9. if (storedTask.getLastEditDate().after(lastUpdate)){
10. return storedTask;
11. }
12. else{
13. throw new UpdateException("Task " + taskID + " does not need to be updated",
UpdateException.TASK_UNCHANGED);
14. }
15. }
16. else{
17. return loadNewTask(taskID);
18. }
19. }
20.
21. public static void updateTask(String taskID, Task task) throws UpdateException{
22. if (tasks.containsKey(taskID)){
23. if (task.getLastEditDate().equals(((Task)tasks.get(taskID)). getLastEditDate())){
24. ((TaskImpl)task).setLastEditDate(new Date());
25. tasks.put(taskID, task);
26. }
27. else{
28. throw new UpdateException("Task " + taskID + " data must be refreshed before
editing", UpdateException.TASK_OUT_OF_DATE);
29. }
30. }
31. }
32.
33. private static Task loadNewTask(String taskID){
34. Task newTask = new TaskImpl(taskID, "", new Date(), null);
35. tasks.put(taskID, newTask);
36. return newTask;
37. }
38. }
Any problems encountered during the periodic client pull operations are represented by the UpdateException
class. The Task interface and TaskImpl class represent the business elements of the example.
Example A.241 Task.java
1. import java.util.Date;
2. import java.io.Serializable;
3. import java.util.ArrayList;
4. public interface Task extends Serializable{
5. public String getTaskID();
6. public Date getLastEditDate();
7. public String getTaskName();
8. public String getTaskDetails();
9. public ArrayList getSubTasks();
10.
11. public void setTaskName(String newName);
12. public void setTaskDetails(String newDetails);
13. public void addSubTask(Task task);
14. public void removeSubTask(Task task);
15. }
Search WWH ::




Custom Search