Skip to content

Commit 4d4027e

Browse files
committed
bugfix
1 parent 0028d10 commit 4d4027e

File tree

7 files changed

+76
-32
lines changed

7 files changed

+76
-32
lines changed

src/main/java/org/woehlke/java/simpleworklist/domain/ProjectRootTaskController.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,36 +54,39 @@ public final String projectRootTaskAddGet(
5454
@ModelAttribute("userSession") UserSessionBean userSession,
5555
Locale locale, Model model
5656
) {
57+
log.info("------------------------------------------------------");
5758
log.info("/project/root/add/task (GET)");
59+
log.info("------------------------------------------------------");
5860
Context context = super.getContext(userSession);
5961
UserAccount userAccount = context.getUserAccount();
6062
Task thisTask = new Task();
6163
thisTask.setTaskState(TaskState.INBOX);
6264
thisTask.setTaskEnergy(TaskEnergy.NONE);
6365
thisTask.setTaskTime(TaskTime.NONE);
6466
thisTask.unsetFocus();
65-
Project thisProject;
6667
Boolean mustChooseContext = false;
67-
thisProject = new Project();
68-
thisProject.setId(0L);
68+
69+
Context projectsContext;
6970
if(userSession.getLastContextId() == 0L){
7071
mustChooseContext = true;
71-
thisTask.setContext(userAccount.getDefaultContext());
72-
thisProject.setContext(userAccount.getDefaultContext());
72+
projectsContext = userAccount.getDefaultContext();
7373
} else {
74-
thisTask.setContext(context);
75-
thisProject.setContext(context);
74+
projectsContext = context;
7675
}
76+
Project thisProject = Project.getRootProject(projectsContext);
77+
thisTask.setContext(projectsContext);
78+
List<Project> rootProjects = projectControllerService.findRootProjectsByContext(context);
7779
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShoProjectId(thisProject,locale,userSession);
7880
model.addAttribute("breadcrumb", breadcrumb);
7981
model.addAttribute("mustChooseContext", mustChooseContext); //TODO: rename mustChooseArea -> mustChooseContext
80-
model.addAttribute("thisProject", thisProject);
82+
model.addAttribute("thisProject", null);
8183
model.addAttribute("thisProjectId", thisProject.getId());
8284
model.addAttribute("breadcrumb", breadcrumb);
8385
model.addAttribute("task", thisTask);
8486
model.addAttribute("userSession", userSession);
8587
model.addAttribute("taskstateType",PROJECTS.getSlug());
8688
model.addAttribute("dataPage", true);
89+
model.addAttribute("rootProjects",rootProjects);
8790
return "project/root/task/add";
8891
}
8992

@@ -95,7 +98,9 @@ public final String projectRootTaskAddPost(
9598
Locale locale,
9699
Model model
97100
) {
101+
log.info("------------------------------------------------------");
98102
log.info("/project/root/task/add (POST)");
103+
log.info("------------------------------------------------------");
99104
Context context = super.getContext(userSession);
100105
model.addAttribute("dataPage", true);
101106
model.addAttribute("addProjectToTask", false);
@@ -107,10 +112,14 @@ public final String projectRootTaskAddPost(
107112
Boolean mustChooseArea = false;
108113
task.setContext(context);
109114
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(TaskState.INBOX,locale,userSession);
115+
List<Project> rootProjects = projectControllerService.findRootProjectsByContext(context);
116+
Project thisProject = null;
110117
model.addAttribute("mustChooseArea", mustChooseArea);
111118
model.addAttribute("breadcrumb", breadcrumb);
112119
model.addAttribute("task", task);
113120
model.addAttribute("userSession", userSession);
121+
model.addAttribute("thisProject", thisProject);
122+
model.addAttribute("rootProjects", rootProjects);
114123
return "project/root/task/add";
115124
} else {
116125
task.setContext(context);
@@ -127,13 +136,15 @@ public final String editTaskGet(
127136
@ModelAttribute("userSession") UserSessionBean userSession,
128137
Locale locale, Model model
129138
) {
139+
log.info("------------------------------------------------------");
130140
log.info("editTaskGet");
141+
log.info("------------------------------------------------------");
131142
List<Context> contexts = super.getContexts();
132143
Context thisContext = thisTask.getContext();
133144
Project thisProject = taskLifecycleService.addProjectFromTaskToModel( thisTask, model );
134145
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForTaskstate(thisTask.getTaskState(),locale,userSession);
135146
model.addAttribute("breadcrumb", breadcrumb);
136-
model.addAttribute("thisProject", thisProject); //TODO: remove?
147+
model.addAttribute("thisProject", thisProject);
137148
model.addAttribute("thisContext", thisContext);
138149
model.addAttribute("task", thisTask);
139150
model.addAttribute("contexts", contexts);
@@ -153,7 +164,9 @@ public final String editTaskPost(
153164
Locale locale,
154165
Model model
155166
) {
167+
log.info("------------------------------------------------------");
156168
log.info("editTaskPost");
169+
log.info("------------------------------------------------------");
157170
model.addAttribute("taskstateType",PROJECTS.getSlug());
158171
model.addAttribute("dataPage", true);
159172
model.addAttribute("addProjectToTask", true);
@@ -168,7 +181,9 @@ public final String editTaskPost(
168181
result.addError(error);
169182
}
170183
if (result.hasErrors() ) {
184+
log.info("------------------------------------------------------");
171185
log.warn("result.hasErrors");
186+
log.info("------------------------------------------------------");
172187
for (ObjectError e : result.getAllErrors()) {
173188
log.warn(e.toString());
174189
}
@@ -231,7 +246,9 @@ public final String deleteTaskGet(
231246
@ModelAttribute("userSession") UserSessionBean userSession,
232247
Model model
233248
) {
249+
log.info("------------------------------------------------------");
234250
log.info("deleteTaskGet");
251+
log.info("------------------------------------------------------");
235252
if(task!= null){
236253
task.delete();
237254
taskLifecycleService.updatedViaProjectRoot(task);
@@ -251,7 +268,9 @@ public final String undeleteTaskGet(
251268
@ModelAttribute("userSession") UserSessionBean userSession,
252269
Model model
253270
) {
271+
log.info("------------------------------------------------------");
254272
log.info("undeleteTaskGet");
273+
log.info("------------------------------------------------------");
255274
task.undelete();
256275
taskLifecycleService.updatedViaProjectRoot(task);
257276
userSession.setLastProjectId(Project.rootProjectId);

src/main/java/org/woehlke/java/simpleworklist/domain/db/data/Project.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.woehlke.java.simpleworklist.domain.db.data;
22

3+
import lombok.Data;
34
import lombok.Getter;
45
import lombok.Setter;
56
import lombok.ToString;
@@ -14,10 +15,7 @@
1415
import javax.validation.constraints.NotBlank;
1516
import javax.validation.constraints.NotNull;
1617
import java.io.Serializable;
17-
import java.util.ArrayList;
18-
import java.util.List;
19-
import java.util.Objects;
20-
import java.util.UUID;
18+
import java.util.*;
2119

2220
import static java.lang.Boolean.FALSE;
2321

@@ -91,6 +89,22 @@ public class Project extends AuditModel implements Serializable, ComparableById<
9189
@Column(name = "collapsed", nullable = false)
9290
private Boolean collapsed = FALSE;
9391

92+
public static Project getRootProject(Context projectsContext) {
93+
List<Project> children = new ArrayList<>();
94+
Date now = new Date();
95+
Project thisProject = new Project();
96+
thisProject.setId(0L);
97+
thisProject.setContext(projectsContext);
98+
thisProject.setName("");
99+
thisProject.setDescription("");
100+
thisProject.setCollapsed(FALSE);
101+
thisProject.setChildren(children);
102+
thisProject.setUuid(UUID.randomUUID());
103+
thisProject.setRowCreatedAt(now);
104+
thisProject.setRowUpdatedAt(now);
105+
return thisProject;
106+
}
107+
94108
@Transient
95109
public String getUrlRoot() {
96110
return "redirect:/project/root";

src/main/java/org/woehlke/java/simpleworklist/domain/meso/project/ProjectControllerService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,7 @@ Project getProject(
6868

6969
Project moveProjectToAnotherProject(Project thisProject, Project targetProject);
7070
Project moveProjectToAnotherContext(Project thisProject, Context newContext);
71+
72+
List<Project> findAllProjectsByContext(Context context);
73+
List<Project> findRootProjectsByContext(Context context);
7174
}

src/main/java/org/woehlke/java/simpleworklist/domain/meso/project/ProjectControllerServiceImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,14 @@ public Project moveProjectToAnotherContext(@NotNull Project thisProject, @NotNul
276276
}
277277
return thisProject;
278278
}
279+
280+
@Override
281+
public List<Project> findAllProjectsByContext(Context context){
282+
return projectService.findAllProjectsByContext(context);
283+
}
284+
285+
@Override
286+
public List<Project> findRootProjectsByContext(Context context){
287+
return projectService.findRootProjectsByContext(context);
288+
}
279289
}

src/main/java/org/woehlke/java/simpleworklist/domain/meso/task/TaskLifecycleServiceImpl.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,20 +174,18 @@ public Task updatedViaProject(Task task) {
174174
return task;
175175
}
176176

177-
178177
public Project addProjectFromTaskToModel(Task task, Model model){
178+
log.info("addProjectFromTaskToModel");
179179
Project thisProject;
180180
if (task.getProject() == null || task.getProject().getId() == null || task.getProject().getId() == 0L) {
181-
thisProject = new Project();
182-
thisProject.setId(0L);
181+
thisProject = Project.getRootProject(task.getContext());
183182
} else {
184183
thisProject = task.getProject();
185184
}
186185
model.addAttribute("thisProject", thisProject);
187186
Project lastProject;
188187
if (task.getLastProject() == null || task.getLastProject().getId() == null || task.getLastProject().getId() == 0L) {
189-
lastProject = new Project();
190-
lastProject.setId(0L);
188+
lastProject = Project.getRootProject(task.getContext());
191189
} else {
192190
lastProject = task.getLastProject();
193191
}

src/main/resources/templates/layout/page.html

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,18 @@
7070
</div>
7171
</div>
7272
<div class="container" sec:authorize="isAuthenticated()">
73-
<div class="row" th:if="${dataPage != null}">
74-
<div class="col-md-8">
75-
<th:block th:replace="${twcontent}" />
76-
</div>
77-
<div class="col-md-4">
78-
<div th:replace="layout/projects :: navigation-projects(rootProjects=${rootProjects},thisProject=${thisProject})"></div>
79-
</div>
80-
</div>
81-
<div class="row" th:if="${dataPage == null}">
82-
<div class="col">
83-
<th:block th:replace="${twcontent}" />
84-
</div>
73+
<div class="row" th:if="${dataPage != null}">
74+
<div class="col-md-8">
75+
<th:block th:replace="${twcontent}" />
76+
</div>
77+
<div class="col-md-4">
78+
<div th:replace="layout/projects :: navigation-projects(rootProjects=${rootProjects},thisProject=${thisProject})"></div>
79+
</div>
80+
</div>
81+
<div class="row" th:if="${dataPage == null}">
82+
<div class="col">
83+
<th:block th:replace="${twcontent}" />
84+
</div>
8585
</div>
8686
</div>
8787
</section>
@@ -105,7 +105,7 @@
105105
</nav>
106106
</footer>
107107

108-
<script th:src="@{/js/google-analytics.js}"></script>
108+
<script th:src="@{/js/google-analytics.js}"></script>
109109
<script th:src="@{/webjars/jquery/3.6.0/jquery.js}"></script>
110110
<script th:src="@{/webjars/popper.js/2.9.3/umd/popper.min.js}"></script>
111111
<script th:src="@{/webjars/bootstrap/5.2.0/js/bootstrap.bundle.min.js}"></script>

src/main/resources/templates/project/root/task/add.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<head th:replace="layout/page :: tw-page-head(headtitle=~{::title},links=~{},refreshMessages=false)">
88
<title th:text="'SimpleWorklist | ' + #{task.add.h1}">Title</title>
99
</head>
10-
<body th:replace="layout/page :: tw-page-body(twcontent=~{::mytwcontent},twtitle=~{::mytwtitle},,scripts=~{::script})">
10+
<body th:replace="layout/page :: tw-page-body(twcontent=~{::mytwcontent},twtitle=~{::mytwtitle},scripts=~{::script})">
1111

1212
<div th:fragment="mytwtitle">
1313
<!-- New Task Form -->

0 commit comments

Comments
 (0)