PageRenderTime 54ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/src/taskmanager/TaskList.java

https://bitbucket.org/BohyunBarry/taskmanager
Java | 300 lines | 250 code | 41 blank | 9 comment | 50 complexity | cae333dc4ac6d2b99c31592b419190c1 MD5 | raw file
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package taskmanager;
  7. import java.io.Serializable;
  8. import java.util.ArrayList;
  9. import java.util.Calendar;
  10. import java.util.Collections;
  11. import java.util.List;
  12. import java.util.logging.Level;
  13. import java.util.logging.Logger;
  14. import ultilitiesPackage.DateFormatUltilities;
  15. import ultilitiesPackage.InputUltilities;
  16. /**
  17. *
  18. * @author LmThu
  19. */
  20. public class TaskList implements Serializable, Cloneable {
  21. private static final long serialVersionUID = -8391388585603023735L;
  22. private List<Task> tasksList = new ArrayList<>();
  23. public TaskList() {
  24. }
  25. public TaskList(List<Task> tasksList) {
  26. this.tasksList = tasksList;
  27. }
  28. public int getSize() {
  29. return tasksList.size();
  30. }
  31. public List<Task> getTask() {
  32. return tasksList;
  33. }
  34. @Override
  35. public String toString() {
  36. String temp = "{TaskList";
  37. for (Task p : tasksList) {
  38. temp += p;
  39. }
  40. temp += "}\r\n";
  41. return temp;
  42. }
  43. public Task makeNewTask(PeopleList resource) {
  44. PeopleList team = new PeopleList();
  45. String taskName = InputUltilities.getNextString("Please Enter the Task Name");
  46. Person taskLeader = findExistingPerson("Please Enter the Task Leader", resource);
  47. int numberOfMember = InputUltilities.getNextInt("Please Enter the number of member", 0, 100);
  48. for (int i = 0; i < numberOfMember; i++) {
  49. team.addNewPerson(findExistingPerson("Please Enter the Team Member", resource));
  50. }
  51. Calendar startOnDate = Calendar.getInstance();
  52. String dueDateString = "";
  53. Calendar dueOnDate = Calendar.getInstance();
  54. do {
  55. dueDateString = InputUltilities.getNextDate("Please Enter the due date yyyy-mm-dd");
  56. dueOnDate = DateFormatUltilities.getDateFromString(dueDateString);
  57. } while (DateFormatUltilities.getDifference(dueOnDate, startOnDate) < 0);
  58. return new Task(taskName, taskLeader, team.getList(), startOnDate, dueOnDate);
  59. }
  60. public boolean addNewTask(Task t) {
  61. if (!tasksList.contains(t)) {
  62. tasksList.add(t);
  63. return true;
  64. } else {
  65. System.out.println("Duplicated");
  66. return false;
  67. }
  68. }
  69. public Person findExistingPerson(String mes, PeopleList resource) {
  70. String personID = "";
  71. int index = 0;
  72. do {
  73. personID = InputUltilities.getNextString(mes);
  74. index = resource.getEmployeeByID(personID);
  75. } while (index == -1);
  76. return resource.getList().get(index);
  77. }
  78. public int getTaskByID(String id) {
  79. int i = 0;
  80. do {
  81. if (!(id.equals(tasksList.get(i).getTaskId()))) {
  82. i++;
  83. }
  84. } while ((i < tasksList.size()) && (!(id.equals(tasksList.get(i).getTaskId()))));
  85. if (i == tasksList.size()) {
  86. return -1;
  87. } else {
  88. return i;
  89. }
  90. }
  91. public void printTaskInfoByID(String id) {
  92. int i = getTaskByID(id);
  93. if (getTaskByID(id) != -1) {
  94. System.out.println(tasksList.get(i));
  95. } else {
  96. System.out.println("Cant Find the requested Task");
  97. }
  98. }
  99. public void editTaskNameByID(String id, String taskName) {
  100. int i = getTaskByID(id);
  101. if (getTaskByID(id) != -1) {
  102. tasksList.get(i).setTaskName(taskName);
  103. } else {
  104. System.out.println("Cant Find the requested Task");
  105. }
  106. }
  107. public void editTaskLeaderByID(String id, Person leader) {
  108. int i = getTaskByID(id);
  109. if (getTaskByID(id) != -1) {
  110. tasksList.get(i).setTaskLeader(leader);
  111. } else {
  112. System.out.println("Cant Find the requested Task");
  113. }
  114. }
  115. public void editTaskStatusByID(String id, Status status) {
  116. int i = getTaskByID(id);
  117. if (getTaskByID(id) != -1) {
  118. tasksList.get(i).setStatus(status);
  119. } else {
  120. System.out.println("Cant Find the requested Task");
  121. }
  122. }
  123. public void replaceTaskTeamByID(String id, List<Person> team) {
  124. int i = getTaskByID(id);
  125. if (i != -1) {
  126. tasksList.get(i).setTaskTeam(team);
  127. } else {
  128. System.out.println("Cant Find the requested Task");
  129. }
  130. }
  131. public void editDueOnDate(String id, Calendar dueDate) {
  132. int i = getTaskByID(id);
  133. if (getTaskByID(id) != -1) {
  134. tasksList.get(i).setDueOnDate(dueDate);
  135. } else {
  136. System.out.println("Cant Find the requested Task");
  137. }
  138. }
  139. public boolean removeTaskFromSystem(String id, Calendar dueDate) {
  140. int i = getTaskByID(id);
  141. if (getTaskByID(id) != -1) {
  142. tasksList.remove(i);
  143. return true;
  144. } else {
  145. System.out.println("Cant Find the requested Task");
  146. return false;
  147. }
  148. }
  149. public void sortTaskByStatus() {
  150. Collections.sort(tasksList, new TasksCompareByStatus());
  151. }
  152. public boolean duplicateTask(int index) {
  153. try {
  154. tasksList.add((Task) tasksList.get(index).clone());
  155. return true;
  156. } catch (CloneNotSupportedException ex) {
  157. return false;
  158. }
  159. }
  160. public void printAllTask() {
  161. if (tasksList.size() > 0) {
  162. System.out.println(tasksList);
  163. } else {
  164. System.out.println("EMPTY");
  165. }
  166. }
  167. public void setAll(List<Task> _tasks) {
  168. tasksList.addAll(_tasks);
  169. }
  170. public void printTaskByLeader() {
  171. String leaderId = InputUltilities.getNextString("Enter the leader here");
  172. int i = 0;
  173. do {
  174. if (tasksList.get(i).gettaskLeader().getId().equals(leaderId)) {
  175. System.out.println(tasksList.get(i));
  176. }
  177. i++;
  178. } while (i < tasksList.size());
  179. }
  180. public List<Task> getTaskByLeader() {
  181. List<Task> list = new ArrayList<>();
  182. String leaderId = InputUltilities.getNextString("Enter the leader here");
  183. int i = 0;
  184. do {
  185. if (tasksList.get(i).gettaskLeader().getId().equals(leaderId)) {
  186. list.add(tasksList.get(i));
  187. }
  188. i++;
  189. } while (i < tasksList.size());
  190. return list;
  191. }
  192. public List<Task> getTaskByStatus() {
  193. List<Task> list = new ArrayList<>();
  194. String status = InputUltilities.getNextString("Enter the STATUS here");
  195. Status _status = Status.ONGOING;
  196. switch (status) {
  197. case "COMPLETED":
  198. _status = Status.COMPLETED;
  199. break;
  200. case "CANCELLED":
  201. _status = Status.CANCELLED;
  202. break;
  203. case "PAUSED":
  204. _status = Status.PAUSED;
  205. default:
  206. _status = Status.ONGOING;
  207. break;
  208. }
  209. int i = 0;
  210. do {
  211. if (tasksList.get(i).getStatus().equals(_status)) {
  212. list.add(tasksList.get(i));
  213. }
  214. i++;
  215. } while (i < tasksList.size());
  216. return list;
  217. }
  218. public List<Task> getTaskByDateRange() {
  219. List<Task> list = new ArrayList<>();
  220. String status = InputUltilities.getNextString("Enter the Date here");
  221. Calendar preset = Calendar.getInstance();
  222. preset = DateFormatUltilities.getDateFromString(status);
  223. for (Task p : tasksList) {
  224. if (DateFormatUltilities.getDifference(preset, p.getDueOnDate()) > 0) {
  225. list.add(p);
  226. }
  227. }
  228. return list;
  229. }
  230. public double getAverageTime() {
  231. long sum = 0;
  232. for (Task p : tasksList) {
  233. sum += DateFormatUltilities.getDifference(p.getDueOnDate(), p.getAddOnDate());
  234. }
  235. return (double) sum / tasksList.size() / 1000 / 3600;
  236. }
  237. @Override
  238. public Object clone() throws CloneNotSupportedException {
  239. return super.clone();
  240. }
  241. public void deleteTaskByID() {
  242. System.out.println("Please be careful when delete this");
  243. String id = InputUltilities.getNextString("Enter ID Here");
  244. int index = getTaskByID(id);
  245. tasksList.remove(index);
  246. }
  247. public List<Task> lateTaskByUser() {
  248. String leaderID = InputUltilities.getNextString("Please Enter the leader Id");
  249. List<Task> leaderList = getTaskByLeader();
  250. List<Task> res = null;
  251. int numOfDay = InputUltilities.getNextInt("NUmber of days", 0, 100);
  252. for (Task t : leaderList) {
  253. if (t.getStatus() != Status.COMPLETED && DateFormatUltilities.getDifference(Calendar.getInstance(),t.getDueOnDate()) > numOfDay*36524) {
  254. res.add(t);
  255. }
  256. }
  257. return res;
  258. }
  259. }