Skip to content

Commit 1dbcab3

Browse files
Merge pull request #124 from Spring-Framework-Java-Apps/master
merge
2 parents 46dd8f0 + 596fce3 commit 1dbcab3

24 files changed

+1052
-646
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl
99
liberapay: # Replace with a single Liberapay username
1010
issuehunt: # Replace with a single IssueHunt username
1111
otechie: # Replace with a single Otechie username
12-
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
12+
custom: ["https://www.paypal.me/ThomasWoehlke"]

etc/requirements/Requirements.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,23 @@
1212

1313
## F006 Page after first successful Login
1414

15-
## F007 Add first new Task
15+
## F007 Add first new Task from Inbox
1616

1717
## F008 Add first new Project
1818

19+
## F009 Add another new Task from Inbox
20+
INBOX -> add new task -> Form -> save -> INBOX ( -> OK )
21+
-> add new task -> Form -> save -> Project (-> NOK )
22+
23+
BUG: after saving to db app should show Inbox, but shows ProjectView for RootProject
24+
25+
URLpaths:
26+
http://localhost:5000/taskstate/inbox
27+
http://localhost:5000/task/addtoproject/0
28+
http://localhost:5000/project/0/?listTaskTime=MIN5&listTaskTime=MIN10&listTaskTime=MIN15&listTaskTime=MIN30&listTaskTime=MIN45&listTaskTime=HOUR1&listTaskTime=HOUR2&listTaskTime=HOUR3&listTaskTime=HOUR4&listTaskTime=HOUR6&listTaskTime=HOUR8&listTaskTime=MORE&listTaskTime=NONE&numberOfNewIncomingMessages=0&listTaskEnergy=LOW&listTaskEnergy=MEDIUM&listTaskEnergy=HIGH&listTaskEnergy=NONE&context=Work&refreshMessages=false
29+
30+
31+
32+
1933

2034

etc/set_java13.cmd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
subst /D J:
2+
subst J: "C:\Program Files\Java\jdk-13.0.2"

etc/set_java1_8.cmd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
subst /D J:
2+
subst J: "C:\Program Files\Java\jdk1.8.0_241"

etc/uml/SimpleWorklist.mdzip

33.7 KB
Binary file not shown.

etc/uml/SimpleWorklist.mdzip.bak

277 KB
Binary file not shown.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>org.woehlke</groupId>
55
<artifactId>simpleworklist</artifactId>
6-
<version>2.3.12-SNAPSHOT</version>
6+
<version>2.3.14-SNAPSHOT</version>
77
<packaging>jar</packaging>
88
<parent>
99
<groupId>org.springframework.boot</groupId>

run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ function runHerokuLocal() {
2828

2929
function main() {
3030
runGithubTestBuild
31-
#runDev
3231
#setupHeroku
3332
runHerokuLocal
33+
#runDev
3434
}
3535

3636
main

src/main/java/org/woehlke/simpleworklist/common/AbstractController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.woehlke.simpleworklist.config.ApplicationProperties;
99
import org.woehlke.simpleworklist.context.Context;
1010
import org.woehlke.simpleworklist.project.Project;
11+
import org.woehlke.simpleworklist.task.TaskService;
1112
import org.woehlke.simpleworklist.user.account.UserAccount;
1213
import org.woehlke.simpleworklist.task.TaskEnergy;
1314
import org.woehlke.simpleworklist.task.TaskTime;
@@ -36,6 +37,9 @@ public abstract class AbstractController {
3637
@Autowired
3738
protected ProjectService projectService;
3839

40+
@Autowired
41+
protected TaskService taskService;
42+
3943
@Autowired
4044
protected UserAccountService userAccountService;
4145

src/main/java/org/woehlke/simpleworklist/project/ProjectController.java

Lines changed: 7 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
import org.springframework.validation.ObjectError;
1111
import org.springframework.web.bind.annotation.*;
1212
import org.woehlke.simpleworklist.common.AbstractController;
13-
import org.woehlke.simpleworklist.taskstate.TaskMoveService;
1413
import org.woehlke.simpleworklist.context.Context;
1514
import org.woehlke.simpleworklist.task.Task;
1615
import org.woehlke.simpleworklist.user.account.UserAccount;
1716
import org.woehlke.simpleworklist.breadcrumb.Breadcrumb;
1817
import org.woehlke.simpleworklist.user.UserSessionBean;
19-
import org.woehlke.simpleworklist.task.TaskService;
2018

2119
import org.springframework.beans.factory.annotation.Autowired;
2220
import javax.validation.Valid;
@@ -31,40 +29,11 @@
3129
@RequestMapping(path = "/project")
3230
public class ProjectController extends AbstractController {
3331

34-
private final TaskService taskService;
35-
private final TaskMoveService taskMoveService;
36-
private final ProjectService projectService;
37-
38-
private static final long rootProjectId = 0L;
32+
private final ProjectControllerService projectControllerService;
3933

4034
@Autowired
41-
public ProjectController(TaskService taskService, TaskMoveService taskMoveService, ProjectService projectService) {
42-
this.taskService = taskService;
43-
this.taskMoveService = taskMoveService;
44-
this.projectService = projectService;
45-
}
46-
47-
@RequestMapping(path = "/root", method = RequestMethod.GET)
48-
public final String showRootProject(
49-
@PageableDefault(sort = "orderIdProject") Pageable pageable,
50-
@RequestParam(required = false) String message,
51-
@RequestParam(required = false) boolean isDeleted,
52-
@ModelAttribute("userSession") UserSessionBean userSession,
53-
Locale locale, Model model) {
54-
log.info("/project/root");
55-
Context context = super.getContext(userSession);
56-
userSession.setLastProjectId(0L);
57-
model.addAttribute("userSession",userSession);
58-
Page<Task> taskPage = taskService.findByRootProject(context,pageable);
59-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowRootProject(locale);
60-
model.addAttribute("breadcrumb", breadcrumb);
61-
model.addAttribute("taskPage", taskPage);
62-
if(message != null){
63-
model.addAttribute("message",message);
64-
model.addAttribute("isDeleted",isDeleted);
65-
model.addAttribute("myTaskState","PROJECT");
66-
}
67-
return "project/root";
35+
public ProjectController(ProjectControllerService projectControllerService) {
36+
this.projectControllerService = projectControllerService;
6837
}
6938

7039
@RequestMapping(path = "/{projectId}", method = RequestMethod.GET)
@@ -102,37 +71,15 @@ public final String showProject(
10271
return "project/show";
10372
}
10473

105-
@RequestMapping(path = "/add/new/project", method = RequestMethod.GET)
106-
public final String addNewTopLevelProjectForm(
107-
@ModelAttribute("userSession") UserSessionBean userSession,
108-
Locale locale, Model model
109-
){
110-
log.info("/project/add/new/project (GET)");
111-
addNewProject(rootProjectId, userSession, locale, model);
112-
return "project/addToplevel";
113-
}
114-
115-
116-
@RequestMapping(path = "/add/new/project", method = {RequestMethod.POST, RequestMethod.PUT})
117-
public final String addNewTopLevelProjectSave(
118-
@Valid Project project,
119-
@ModelAttribute("userSession") UserSessionBean userSession,
120-
BindingResult result,
121-
Locale locale, Model model
122-
){
123-
log.info("/project/add/new/project (POST)");
124-
return addNewProjectPersist( rootProjectId, userSession, project,
125-
result, locale, model, "project/addToplevel");
126-
}
127-
12874
@RequestMapping(path = "/{projectId}/add/new/project", method = RequestMethod.GET)
12975
public final String addNewSubProjectGet(
13076
@PathVariable long projectId,
13177
@ModelAttribute("userSession") UserSessionBean userSession,
13278
Locale locale, Model model
13379
) {
13480
log.info("private addNewProjectGet (GET) projectId="+projectId);
135-
addNewProject(projectId, userSession, locale, model);
81+
Context context = super.getContext(userSession);
82+
projectControllerService.addNewProject(projectId, userSession, context, locale, model);
13683
return "project/add";
13784
}
13885

@@ -144,7 +91,8 @@ public final String addNewSubProjectPost(
14491
BindingResult result,
14592
Locale locale, Model model) {
14693
log.info("private addNewProjectPost (POST) projectId="+projectId+" "+project.toString());
147-
return addNewProjectPersist( projectId, userSession, project,
94+
Context context = super.getContext(userSession);
95+
return projectControllerService.addNewProjectPersist( projectId, userSession, project, context,
14896
result, locale, model ,"project/add");
14997
}
15098

@@ -268,118 +216,4 @@ public final String deleteProject(
268216
return "redirect:/project/" + newProjectId;
269217
}
270218

271-
272-
private final void addNewProject(
273-
long projectId,
274-
UserSessionBean userSession,
275-
Locale locale,
276-
Model model
277-
) {
278-
log.info("private addNewProject projectId="+projectId);
279-
Context context = super.getContext(userSession);
280-
UserAccount userAccount = context.getUserAccount();
281-
userSession.setLastProjectId(projectId);
282-
model.addAttribute("userSession",userSession);
283-
Project thisProject = null;
284-
Project project = null;
285-
if (projectId == 0) {
286-
thisProject = new Project();
287-
thisProject.setId(0L);
288-
project = Project.newRootProjectFactory(userAccount);
289-
if(userSession.getContextId() == 0L){
290-
model.addAttribute("mustChooseArea", true);
291-
project.setContext(userAccount.getDefaultContext());
292-
} else {
293-
project.setContext(context);
294-
}
295-
} else {
296-
thisProject = projectService.findByProjectId(projectId);
297-
project = Project.newProjectFactory(thisProject);
298-
}
299-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
300-
model.addAttribute("breadcrumb", breadcrumb);
301-
model.addAttribute("thisProject", thisProject);
302-
model.addAttribute("project", project);
303-
}
304-
305-
private String addNewProjectPersist(
306-
long projectId,
307-
UserSessionBean userSession,
308-
Project project,
309-
BindingResult result,
310-
Locale locale, Model model,
311-
String template
312-
){
313-
log.info("private addNewProjectPersist projectId="+projectId+" "+project.toString());
314-
Context context = super.getContext(userSession);
315-
UserAccount userAccount = context.getUserAccount();
316-
userSession.setLastProjectId(projectId);
317-
model.addAttribute("userSession",userSession);
318-
if(result.hasErrors()){
319-
Project thisProject = null;
320-
if (projectId == 0) {
321-
thisProject = new Project();
322-
thisProject.setId(0L);
323-
} else {
324-
thisProject = projectService.findByProjectId(projectId);
325-
}
326-
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
327-
model.addAttribute("breadcrumb", breadcrumb);
328-
model.addAttribute("thisProject", thisProject);
329-
model.addAttribute("project", project);
330-
return template;
331-
} else {
332-
if (projectId == 0) {
333-
if(userSession.getContextId()>0) {
334-
project.setContext(context);
335-
}
336-
project = projectService.saveAndFlush(project);
337-
projectId = project.getId();
338-
} else {
339-
Project thisProject = projectService.findByProjectId(projectId);
340-
List<Project> children = thisProject.getChildren();
341-
children.add(project);
342-
thisProject.setChildren(children);
343-
project.setParent(thisProject);
344-
project = projectService.saveAndFlush(project);
345-
projectId = project.getId();
346-
log.info("project: "+ project.toString());
347-
log.info("thisProject: "+ thisProject.toString());
348-
}
349-
return "redirect:/project/" + projectId;
350-
}
351-
}
352-
353-
@RequestMapping(path = "/task/{sourceTaskId}/changeorderto/{destinationTaskId}", method = RequestMethod.GET)
354-
public String changeTaskOrderIdWithinAProject(
355-
@PathVariable("sourceTaskId") Task sourceTask,
356-
@PathVariable("destinationTaskId") Task destinationTask,
357-
@ModelAttribute("userSession") UserSessionBean userSession,
358-
Locale locale, Model model
359-
){
360-
Context context = super.getContext(userSession);
361-
if(!sourceTask.isInRootProject()){
362-
userSession.setLastProjectId(sourceTask.getProject().getId());
363-
}
364-
model.addAttribute("userSession",userSession);
365-
log.info("-------------------------------------------------");
366-
log.info(" changeTaskOrderIdWithinAProject");
367-
log.info("-------------------------------------------------");
368-
log.info(" source Task: "+sourceTask.toString());
369-
log.info("-------------------------------------------------");
370-
log.info(" destination Task: "+destinationTask.toString());
371-
log.info("-------------------------------------------------");
372-
String returnUrl = "redirect:/taskstate/inbox";
373-
boolean rootProject = sourceTask.isInRootProject();
374-
returnUrl = "redirect:/project/0";
375-
if(rootProject){
376-
taskMoveService.moveOrderIdRootProject(sourceTask, destinationTask);
377-
} else {
378-
taskMoveService.moveOrderIdProject(sourceTask, destinationTask);
379-
log.info(" DONE: taskMoveService.moveOrderIdProject (2)");
380-
returnUrl = "redirect:/project/" + sourceTask.getProject().getId();
381-
}
382-
log.info("-------------------------------------------------");
383-
return returnUrl;
384-
}
385219
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.woehlke.simpleworklist.project;
2+
3+
import org.springframework.ui.Model;
4+
import org.springframework.validation.BindingResult;
5+
import org.woehlke.simpleworklist.context.Context;
6+
import org.woehlke.simpleworklist.user.UserSessionBean;
7+
import org.woehlke.simpleworklist.user.account.UserAccount;
8+
9+
import java.util.Locale;
10+
11+
public interface ProjectControllerService {
12+
13+
void addNewProject(
14+
long projectId,
15+
UserSessionBean userSession,
16+
Context context,
17+
Locale locale,
18+
Model model
19+
);
20+
21+
String addNewProjectPersist(
22+
long projectId,
23+
UserSessionBean userSession,
24+
Project project,
25+
Context context,
26+
BindingResult result,
27+
Locale locale,
28+
Model model,
29+
String template
30+
);
31+
32+
Project getProject(
33+
long projectId,
34+
UserAccount userAccount,
35+
UserSessionBean userSession
36+
);
37+
}

0 commit comments

Comments
 (0)