Skip to content

Commit e46661d

Browse files
committed
Fixed #129, Fixed #126, working on 168
1 parent 21039a5 commit e46661d

File tree

9 files changed

+420
-529
lines changed

9 files changed

+420
-529
lines changed

src/main/java/org/woehlke/simpleworklist/task/Task.java

Lines changed: 90 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import javax.persistence.Index;
99

1010

11+
import lombok.Getter;
12+
import lombok.Setter;
1113
import org.hibernate.annotations.OnDelete;
1214
import org.hibernate.annotations.OnDeleteAction;
1315
import org.hibernate.validator.constraints.Length;
@@ -44,6 +46,8 @@
4446
@Index(name = "ix_task_title", columnList = "title")
4547
}
4648
)
49+
@Getter
50+
@Setter
4751
public class Task extends AuditModel implements Serializable, ComparableById<Task> {
4852

4953
private static final long serialVersionUID = 5247710652586269801L;
@@ -152,6 +156,91 @@ public void switchToLastFocusType() {
152156
this.lastTaskState = old;
153157
}
154158

159+
public void delete(){
160+
this.lastTaskState = this.taskState;
161+
this.taskState = TaskState.TRASH;
162+
}
163+
164+
public void undelete(){
165+
if( this.taskState == TaskState.TRASH){
166+
this.taskState = this.lastTaskState;
167+
this.lastTaskState = TaskState.TRASH;
168+
}
169+
}
170+
171+
public void complete(){
172+
this.lastTaskState = this.taskState;
173+
this.taskState = TaskState.COMPLETED;
174+
}
175+
176+
public void incomplete(){
177+
if( this.taskState == TaskState.COMPLETED){
178+
this.taskState = this.lastTaskState;
179+
this.lastTaskState = TaskState.COMPLETED;
180+
}
181+
}
182+
183+
public void setFocus(){
184+
this.focus = true;
185+
}
186+
187+
public void unsetFocus(){
188+
this.focus = false;
189+
}
190+
191+
private void pushTaskstate(TaskState newState){
192+
this.taskState = this.lastTaskState;
193+
this.lastTaskState = newState;
194+
}
195+
196+
//TODO: delete Due Date
197+
public void moveToInbox(){
198+
pushTaskstate(TaskState.INBOX);
199+
}
200+
201+
//TODO: Due Date = Date of Today
202+
public void moveToToday(){
203+
pushTaskstate(TaskState.TODAY);
204+
}
205+
206+
//TODO: delete Due Date
207+
public void moveToNext(){
208+
pushTaskstate(TaskState.NEXT);
209+
}
210+
211+
//TODO: delete Due Date
212+
public void moveToWaiting(){
213+
pushTaskstate(TaskState.WAITING);
214+
}
215+
216+
//TODO: Due Date = Date of Tomorrow
217+
public void moveToScheduled(){
218+
pushTaskstate(TaskState.SCHEDULED);
219+
}
220+
221+
//TODO: delete Due Date
222+
public void moveToSomeday(){
223+
pushTaskstate(TaskState.SOMEDAY);
224+
}
225+
226+
public void moveToFocus(){
227+
this.focus = true;
228+
}
229+
230+
public void moveToCompletedTasks(){
231+
pushTaskstate(TaskState.COMPLETED);
232+
}
233+
234+
public void moveToTrash(){
235+
pushTaskstate(TaskState.TRASH);
236+
}
237+
238+
public void emptyTrash(){
239+
if(this.taskState == TaskState.TRASH){
240+
pushTaskstate(TaskState.TRASH);
241+
}
242+
}
243+
155244
@Transient
156245
public boolean hasSameContextAs(Task otherTask){
157246
return (this.getContext().equalsById( otherTask.getContext()));
@@ -208,7 +297,7 @@ public void moveDownByProject(){
208297

209298
@Transient
210299
public boolean isInRootProject(){
211-
return (this.getProject() == null);
300+
return ((this.getProject() == null)) || (this.getProject().getId()==0L);
212301
}
213302

214303
@Transient
@@ -255,168 +344,4 @@ public boolean hasContext(Context context) {
255344
return (this.getContext().getId().longValue() == context.getId().longValue());
256345
}
257346

258-
public void setOrderIdTaskState(Task destinationTask) {
259-
this.orderIdTaskState = destinationTask.getOrderIdTaskState();
260-
}
261-
262-
public void setOrderIdProject(Task otherTask) {
263-
this.orderIdProject = otherTask.getOrderIdProject();
264-
}
265-
266-
/**
267-
* Sets also 'history back' for taskState
268-
*/
269-
public void setTaskState(TaskState taskState) {
270-
this.lastTaskState = this.taskState;
271-
this.taskState = taskState;
272-
}
273-
274-
275-
public Long getId() {
276-
return id;
277-
}
278-
279-
public void setId(Long id) {
280-
this.id = id;
281-
}
282-
283-
public Project getProject() {
284-
return project;
285-
}
286-
287-
public void setProject(Project project) {
288-
this.project = project;
289-
}
290-
291-
public String getTitle() {
292-
return title;
293-
}
294-
295-
public void setTitle(String title) {
296-
this.title = title;
297-
}
298-
299-
public String getText() {
300-
return text;
301-
}
302-
303-
public void setText(String text) {
304-
this.text = text;
305-
}
306-
307-
public TaskState getTaskState() {
308-
return taskState;
309-
}
310-
311-
public Boolean getFocus() {
312-
return focus;
313-
}
314-
315-
public void setFocus(Boolean focus) {
316-
this.focus = focus;
317-
}
318-
319-
public Date getDueDate() {
320-
return dueDate;
321-
}
322-
323-
public void setDueDate(Date dueDate) {
324-
this.dueDate = dueDate;
325-
}
326-
327-
public TaskState getLastTaskState() {
328-
return lastTaskState;
329-
}
330-
331-
public void setLastTaskState(TaskState lastTaskState) {
332-
this.lastTaskState = lastTaskState;
333-
}
334-
335-
public TaskEnergy getTaskEnergy() {
336-
return taskEnergy;
337-
}
338-
339-
public void setTaskEnergy(TaskEnergy taskEnergy) {
340-
this.taskEnergy = taskEnergy;
341-
}
342-
343-
public TaskTime getTaskTime() {
344-
return taskTime;
345-
}
346-
347-
public void setTaskTime(TaskTime taskTime) {
348-
this.taskTime = taskTime;
349-
}
350-
351-
public Context getContext() {
352-
return context;
353-
}
354-
355-
public void setContext(Context context) {
356-
this.context = context;
357-
}
358-
359-
public long getOrderIdProject() {
360-
return orderIdProject;
361-
}
362-
363-
public void setOrderIdProject(long orderIdProject) {
364-
this.orderIdProject = orderIdProject;
365-
}
366-
367-
public long getOrderIdTaskState() {
368-
return orderIdTaskState;
369-
}
370-
371-
public void setOrderIdTaskState(long orderIdTaskState) {
372-
this.orderIdTaskState = orderIdTaskState;
373-
}
374-
375-
@Override
376-
public boolean equals(Object o) {
377-
if (this == o) return true;
378-
if (!(o instanceof Task)) return false;
379-
if (!super.equals(o)) return false;
380-
Task task = (Task) o;
381-
return getOrderIdProject() == task.getOrderIdProject() &&
382-
getOrderIdTaskState() == task.getOrderIdTaskState() &&
383-
Objects.equals(getId(), task.getId()) &&
384-
getProject().equals(task.getProject()) &&
385-
getContext().equals(task.getContext()) &&
386-
getTitle().equals(task.getTitle()) &&
387-
getText().equals(task.getText()) &&
388-
getFocus().equals(task.getFocus()) &&
389-
getTaskState() == task.getTaskState() &&
390-
getLastTaskState() == task.getLastTaskState() &&
391-
getTaskEnergy() == task.getTaskEnergy() &&
392-
getTaskTime() == task.getTaskTime() &&
393-
Objects.equals(getDueDate(), task.getDueDate());
394-
}
395-
396-
@Override
397-
public int hashCode() {
398-
return Objects.hash(super.hashCode(), getId(), getProject(), getContext(), getTitle(), getText(), getFocus(), getTaskState(), getLastTaskState(), getTaskEnergy(), getTaskTime(), getDueDate(), getOrderIdProject(), getOrderIdTaskState());
399-
}
400-
401-
@Override
402-
public String toString() {
403-
return "Task{" +
404-
"id=" + id +
405-
", project=" + project +
406-
", context=" + context +
407-
", title='" + title + '\'' +
408-
", text='" + text + '\'' +
409-
", focus=" + focus +
410-
", taskState=" + taskState +
411-
", lastTaskState=" + lastTaskState +
412-
", taskEnergy=" + taskEnergy +
413-
", taskTime=" + taskTime +
414-
", dueDate=" + dueDate +
415-
", orderIdProject=" + orderIdProject +
416-
", orderIdTaskState=" + orderIdTaskState +
417-
", uuid='" + uuid + '\'' +
418-
", rowCreatedAt=" + rowCreatedAt +
419-
", rowUpdatedAt=" + rowUpdatedAt +
420-
'}';
421-
}
422347
}

src/main/java/org/woehlke/simpleworklist/task/TaskController.java

Lines changed: 2 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -35,94 +35,6 @@ public TaskController(TaskMoveService taskMoveService, TaskControllerService tas
3535
this.taskControllerService = taskControllerService;
3636
}
3737

38-
@RequestMapping(path = "/{taskId}/edit", method = RequestMethod.GET)
39-
public final String editTaskGet(
40-
@PathVariable("taskId") Task task,
41-
@ModelAttribute("userSession") UserSessionBean userSession,
42-
Locale locale, Model model
43-
) {
44-
log.info("editTaskGet");
45-
UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser();
46-
List<Context> contexts = contextService.getAllForUser(userAccount);
47-
if(task != null) {
48-
Project thisProject = null;
49-
if (task.getProject() == null) {
50-
thisProject = new Project();
51-
thisProject.setId(0L);
52-
} else {
53-
thisProject = task.getProject();
54-
}
55-
model.addAttribute("thisProject", thisProject);
56-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
57-
model.addAttribute("breadcrumb", breadcrumb);
58-
model.addAttribute("task", task);
59-
model.addAttribute("areas", contexts);
60-
return "taskstate/task/edit";
61-
} else {
62-
return "redirect:/taskstate/inbox";
63-
}
64-
}
65-
66-
@RequestMapping(path = "/{taskId}/edit", method = RequestMethod.POST)
67-
public final String editTaskPost(
68-
@PathVariable long taskId,
69-
@Valid Task task,
70-
@ModelAttribute("userSession") UserSessionBean userSession,
71-
BindingResult result,
72-
Locale locale,
73-
Model model
74-
) {
75-
log.info("editTaskPost");
76-
Task persistentTask = taskService.findOne(taskId);
77-
long projectId = 0;
78-
Project thisProject;
79-
if (persistentTask.getProject() == null) {
80-
thisProject = new Project();
81-
thisProject.setId(0L);
82-
} else {
83-
thisProject = persistentTask.getProject();
84-
projectId = thisProject.getId();
85-
}
86-
if (result.hasErrors()) {
87-
for (ObjectError e : result.getAllErrors()) {
88-
log.info(e.toString());
89-
}
90-
model.addAttribute("thisProject", thisProject);
91-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
92-
model.addAttribute("breadcrumb", breadcrumb);
93-
model.addAttribute("task", task);
94-
return "taskstate/task/edit";
95-
} else {
96-
persistentTask.setTitle(task.getTitle());
97-
persistentTask.setText(task.getText());
98-
if(task.getDueDate()==null){
99-
persistentTask.setDueDate(null);
100-
if(persistentTask.getTaskState().compareTo(TaskState.SCHEDULED)==0){
101-
persistentTask.setTaskState(task.getTaskState());
102-
}
103-
} else {
104-
persistentTask.setDueDate(task.getDueDate());
105-
persistentTask.setTaskState(TaskState.SCHEDULED);
106-
}
107-
persistentTask.setTaskTime(task.getTaskTime());
108-
persistentTask.setTaskEnergy(task.getTaskEnergy());
109-
boolean contextChanged = persistentTask.getContext().equalsById(task.getContext());
110-
if(contextChanged){
111-
persistentTask.setContext(task.getContext());
112-
if(thisProject.getId()==0L) {
113-
persistentTask.setRootProject();
114-
} else if(thisProject.getContext().equalsById(task.getContext())){
115-
persistentTask.setProject(thisProject);
116-
}
117-
userSession.setContextId(task.getContext().getId());
118-
model.addAttribute("userSession", userSession);
119-
return "redirect:/project/root";
120-
}
121-
taskService.saveAndFlush(persistentTask);
122-
return "redirect:/project/" + projectId;
123-
}
124-
}
125-
12638
@RequestMapping(path = "/{taskId}/delete", method = RequestMethod.GET)
12739
public final String deleteTaskGet(@PathVariable("taskId") Task task) {
12840
log.info("deleteTaskGet");
@@ -191,8 +103,8 @@ public final String unsetDoneTaskGet(
191103
taskService.incomplete(task);
192104
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext());
193105
task.setOrderIdTaskState(++maxOrderIdTaskState);
194-
taskService.saveAndFlush(task);
195-
return "redirect:/taskstate/"+task.getTaskState().name().toLowerCase();
106+
task = taskService.updatedViaTaskstate(task);
107+
return "redirect:"+task.getTaskState().getUrl();
196108
} else {
197109
return "redirect:/taskstate/inbox";
198110
}

0 commit comments

Comments
 (0)