Skip to content

Commit f2262bf

Browse files
committed
bugfixing
1 parent 4807683 commit f2262bf

File tree

5 files changed

+293
-226
lines changed

5 files changed

+293
-226
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package org.woehlke.simpleworklist.task;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.stereotype.Controller;
6+
import org.springframework.ui.Model;
7+
import org.springframework.validation.BindingResult;
8+
import org.springframework.validation.ObjectError;
9+
import org.springframework.web.bind.annotation.ModelAttribute;
10+
import org.springframework.web.bind.annotation.RequestMapping;
11+
import org.springframework.web.bind.annotation.RequestMethod;
12+
import org.woehlke.simpleworklist.breadcrumb.Breadcrumb;
13+
import org.woehlke.simpleworklist.common.AbstractController;
14+
import org.woehlke.simpleworklist.context.Context;
15+
import org.woehlke.simpleworklist.taskstate.TaskMoveService;
16+
import org.woehlke.simpleworklist.user.UserSessionBean;
17+
import org.woehlke.simpleworklist.user.account.UserAccount;
18+
19+
import javax.validation.Valid;
20+
import java.util.Locale;
21+
22+
23+
@Slf4j
24+
@Controller
25+
@RequestMapping(path = "/task")
26+
public class TaskAddController extends AbstractController {
27+
28+
private final TaskMoveService taskMoveService;
29+
30+
@Autowired
31+
public TaskAddController(TaskMoveService taskMoveService) {
32+
this.taskMoveService = taskMoveService;
33+
}
34+
35+
@RequestMapping(path = "/add", method = RequestMethod.GET)
36+
public final String addNewTaskToInboxGet(
37+
@ModelAttribute("userSession") UserSessionBean userSession,
38+
Locale locale, Model model
39+
) {
40+
UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser();
41+
Task task = new Task();
42+
task.setTaskState(TaskState.INBOX);
43+
task.setTaskEnergy(TaskEnergy.NONE);
44+
task.setTaskTime(TaskTime.NONE);
45+
Boolean mustChooseContext = false;
46+
if(userSession.getContextId() == 0L){
47+
mustChooseContext = true;
48+
task.setContext(userAccount.getDefaultContext());
49+
} else {
50+
Context context = contextService.findByIdAndUserAccount(userSession.getContextId(), userAccount);
51+
task.setContext(context);
52+
}
53+
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(TaskState.INBOX,locale);
54+
model.addAttribute("breadcrumb", breadcrumb);
55+
model.addAttribute("mustChooseArea", mustChooseContext);
56+
model.addAttribute("breadcrumb", breadcrumb);
57+
model.addAttribute("task", task);
58+
return "task/addToInbox";
59+
}
60+
61+
@RequestMapping(path = "/add", method = RequestMethod.POST)
62+
public final String addNewTaskToInboxPost(
63+
@ModelAttribute("userSession") UserSessionBean userSession,
64+
@Valid Task task,
65+
BindingResult result, Locale locale, Model model) {
66+
Context context = super.getContext(userSession);
67+
if (result.hasErrors()) {
68+
for (ObjectError e : result.getAllErrors()) {
69+
log.info(e.toString());
70+
}
71+
Boolean mustChooseArea = false;
72+
task.setContext(context);
73+
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(TaskState.INBOX,locale);
74+
model.addAttribute("mustChooseArea", mustChooseArea);
75+
model.addAttribute("breadcrumb", breadcrumb);
76+
model.addAttribute("task", task);
77+
return "task/addToProject";
78+
} else {
79+
task.setProject(null);
80+
if(task.getDueDate()==null){
81+
task.setTaskState(TaskState.INBOX);
82+
} else {
83+
task.setTaskState(TaskState.SCHEDULED);
84+
}
85+
task.setFocus(false);
86+
task.setContext(context);
87+
//TODO: verify, that this is correct:
88+
long maxOrderIdProject = taskMoveService.getMaxOrderIdProject(task.getProject(),context);
89+
task.setOrderIdProject(++maxOrderIdProject);
90+
//
91+
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext());
92+
task.setOrderIdTaskState(++maxOrderIdTaskState);
93+
task = taskService.saveAndFlush(task);
94+
log.info(task.toString());
95+
return "redirect:/taskstate/" + task.getTaskState().name().toLowerCase();
96+
}
97+
}
98+
}

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

Lines changed: 1 addition & 215 deletions
Original file line numberDiff line numberDiff line change
@@ -16,173 +16,21 @@
1616
import org.woehlke.simpleworklist.taskstate.TaskMoveService;
1717
import org.woehlke.simpleworklist.context.Context;
1818
import org.woehlke.simpleworklist.project.Project;
19-
import org.woehlke.simpleworklist.user.account.UserAccount;
20-
import org.woehlke.simpleworklist.breadcrumb.Breadcrumb;
21-
import org.woehlke.simpleworklist.user.UserSessionBean;
2219

2320
@Slf4j
2421
@Controller
2522
@RequestMapping(path = "/task")
2623
public class TaskController extends AbstractController {
2724

28-
private final TaskService taskService;
2925
private final TaskMoveService taskMoveService;
3026
private final TaskControllerService taskControllerService;
3127

3228
@Autowired
33-
public TaskController(TaskService taskService, TaskMoveService taskMoveService, TaskControllerService taskControllerService) {
34-
this.taskService = taskService;
29+
public TaskController(TaskMoveService taskMoveService, TaskControllerService taskControllerService) {
3530
this.taskMoveService = taskMoveService;
3631
this.taskControllerService = taskControllerService;
3732
}
3833

39-
@RequestMapping(path = "/{taskId}/edit", method = RequestMethod.GET)
40-
public final String editTaskGet(
41-
@PathVariable("taskId") Task task,
42-
@ModelAttribute("userSession") UserSessionBean userSession,
43-
Locale locale, Model model
44-
) {
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 "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, Locale locale, Model model) {
72-
Task persistentTask = taskService.findOne(taskId);
73-
long projectId = 0;
74-
Project thisProject;
75-
if (persistentTask.getProject() == null) {
76-
thisProject = new Project();
77-
thisProject.setId(0L);
78-
} else {
79-
thisProject = persistentTask.getProject();
80-
projectId = thisProject.getId();
81-
}
82-
if (result.hasErrors()) {
83-
for (ObjectError e : result.getAllErrors()) {
84-
log.info(e.toString());
85-
}
86-
model.addAttribute("thisProject", thisProject);
87-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
88-
model.addAttribute("breadcrumb", breadcrumb);
89-
model.addAttribute("task", task);
90-
return "task/edit";
91-
} else {
92-
persistentTask.setTitle(task.getTitle());
93-
persistentTask.setText(task.getText());
94-
if(task.getDueDate()==null){
95-
persistentTask.setDueDate(null);
96-
if(persistentTask.getTaskState().compareTo(TaskState.SCHEDULED)==0){
97-
persistentTask.setTaskState(TaskState.INBOX);
98-
}
99-
} else {
100-
persistentTask.setDueDate(task.getDueDate());
101-
persistentTask.setTaskState(TaskState.SCHEDULED);
102-
}
103-
persistentTask.setTaskTime(task.getTaskTime());
104-
persistentTask.setTaskEnergy(task.getTaskEnergy());
105-
boolean contextChanged = persistentTask.getContext().equalsById(task.getContext());
106-
if(contextChanged){
107-
persistentTask.setContext(task.getContext());
108-
if(thisProject.getId()==0L) {
109-
persistentTask.setRootProject();
110-
} else if(thisProject.getContext().equalsById(task.getContext())){
111-
persistentTask.setProject(thisProject);
112-
}
113-
userSession.setContextId(task.getContext().getId());
114-
model.addAttribute("userSession", userSession);
115-
return "redirect:/project/0/";
116-
}
117-
taskService.saveAndFlush(persistentTask);
118-
return "redirect:/project/" + projectId + "/";
119-
}
120-
}
121-
122-
@RequestMapping(path = "/add", method = RequestMethod.GET)
123-
public final String addNewTaskToInboxGet(
124-
@ModelAttribute("userSession") UserSessionBean userSession,
125-
Locale locale, Model model
126-
) {
127-
UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser();
128-
Task task = new Task();
129-
task.setTaskState(TaskState.INBOX);
130-
task.setTaskEnergy(TaskEnergy.NONE);
131-
task.setTaskTime(TaskTime.NONE);
132-
Boolean mustChooseContext = false;
133-
if(userSession.getContextId() == 0L){
134-
mustChooseContext = true;
135-
task.setContext(userAccount.getDefaultContext());
136-
} else {
137-
Context context = contextService.findByIdAndUserAccount(userSession.getContextId(), userAccount);
138-
task.setContext(context);
139-
}
140-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(TaskState.INBOX,locale);
141-
model.addAttribute("breadcrumb", breadcrumb);
142-
model.addAttribute("mustChooseArea", mustChooseContext);
143-
model.addAttribute("breadcrumb", breadcrumb);
144-
model.addAttribute("task", task);
145-
return "task/addToInbox";
146-
}
147-
148-
149-
@RequestMapping(path = "/add", method = RequestMethod.POST)
150-
public final String addNewTaskToInboxPost(
151-
@ModelAttribute("userSession") UserSessionBean userSession,
152-
@Valid Task task,
153-
BindingResult result, Locale locale, Model model) {
154-
Context context = super.getContext(userSession);
155-
if (result.hasErrors()) {
156-
for (ObjectError e : result.getAllErrors()) {
157-
log.info(e.toString());
158-
}
159-
Boolean mustChooseArea = false;
160-
task.setContext(context);
161-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(TaskState.INBOX,locale);
162-
model.addAttribute("mustChooseArea", mustChooseArea);
163-
model.addAttribute("breadcrumb", breadcrumb);
164-
model.addAttribute("task", task);
165-
return "task/addToProject";
166-
} else {
167-
task.setProject(null);
168-
if(task.getDueDate()==null){
169-
task.setTaskState(TaskState.INBOX);
170-
} else {
171-
task.setTaskState(TaskState.SCHEDULED);
172-
}
173-
task.setFocus(false);
174-
task.setContext(context);
175-
//TODO: verify, that this is correct:
176-
long maxOrderIdProject = taskMoveService.getMaxOrderIdProject(task.getProject(),context);
177-
task.setOrderIdProject(++maxOrderIdProject);
178-
//
179-
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext());
180-
task.setOrderIdTaskState(++maxOrderIdTaskState);
181-
task = taskService.saveAndFlush(task);
182-
log.info(task.toString());
183-
return "redirect:/taskstate/" + task.getTaskState().name().toLowerCase();
184-
}
185-
}
18634

18735
@RequestMapping(path = "/delete/{taskId}", method = RequestMethod.GET)
18836
public final String deleteTaskGet(@PathVariable("taskId") Task task) {
@@ -224,66 +72,4 @@ public final String transformTaskIntoProjectGet(@PathVariable("taskId") Task tas
22472
return "redirect:/project/" + projectId + "/";
22573
}
22674

227-
@RequestMapping(path = "/complete/{taskId}", method = RequestMethod.GET)
228-
public final String completeTaskGet(@PathVariable("taskId") Task task) {
229-
if(task != null){
230-
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(TaskState.COMPLETED,task.getContext());
231-
task.setOrderIdTaskState(++maxOrderIdTaskState);
232-
taskService.complete(task);
233-
}
234-
return "redirect:/taskstate/completed";
235-
}
236-
237-
@RequestMapping(path = "/incomplete/{taskId}", method = RequestMethod.GET)
238-
public final String undoneTaskGet(@PathVariable("taskId") Task task) {
239-
if(task !=null) {
240-
taskService.incomplete(task);
241-
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext());
242-
task.setOrderIdTaskState(++maxOrderIdTaskState);
243-
taskService.saveAndFlush(task);
244-
switch (task.getTaskState()) {
245-
case TODAY:
246-
return "redirect:/taskstate/today";
247-
case NEXT:
248-
return "redirect:/taskstate/next";
249-
case WAITING:
250-
return "redirect:/taskstate/waiting";
251-
case SCHEDULED:
252-
return "redirect:/taskstate/scheduled";
253-
case SOMEDAY:
254-
return "redirect:/taskstate/someday";
255-
case COMPLETED:
256-
return "redirect:/taskstate/completed";
257-
case TRASH:
258-
return "redirect:/taskstate/trash";
259-
default:
260-
return "redirect:/taskstate/inbox";
261-
}
262-
} else {
263-
return "redirect:/taskstate/inbox";
264-
}
265-
}
266-
267-
@RequestMapping(path = "/setfocus/{taskId}", method = RequestMethod.GET)
268-
public final String setFocusGet(@PathVariable("taskId") Task task,
269-
@RequestParam(required=false) String back){
270-
if(task !=null) {
271-
taskService.setFocus(task);
272-
return taskControllerService.getView(task,back);
273-
} else {
274-
return "redirect:/taskstate/inbox";
275-
}
276-
}
277-
278-
@RequestMapping(path = "/unsetfocus/{taskId}", method = RequestMethod.GET)
279-
public final String unsetFocusGet(@PathVariable("taskId") Task task,
280-
@RequestParam(required=false) String back){
281-
if(task !=null) {
282-
taskService.unsetFocus(task);
283-
return taskControllerService.getView(task,back);
284-
} else {
285-
return "redirect:/taskstate/inbox";
286-
}
287-
}
288-
28975
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.woehlke.simpleworklist.task;
22

3+
import lombok.extern.slf4j.Slf4j;
34
import org.springframework.stereotype.Service;
45

6+
@Slf4j
57
@Service
68
public class TaskControllerServiceImpl implements TaskControllerService {
79

0 commit comments

Comments
 (0)