Skip to content

Commit b781e9f

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

File tree

12 files changed

+182
-288
lines changed

12 files changed

+182
-288
lines changed

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

Lines changed: 45 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
import javax.persistence.*;
99
import javax.persistence.Index;
1010

11+
import lombok.EqualsAndHashCode;
12+
import lombok.Getter;
13+
import lombok.Setter;
14+
import lombok.ToString;
1115
import org.hibernate.annotations.OnDelete;
1216
import org.hibernate.annotations.OnDeleteAction;
1317
import org.hibernate.validator.constraints.Length;
@@ -31,6 +35,10 @@
3135
@Index(name = "ix_project_row_created_at", columnList = "row_created_at")
3236
}
3337
)
38+
@Getter
39+
@Setter
40+
@EqualsAndHashCode
41+
@ToString
3442
public class Project extends AuditModel implements Serializable, ComparableById<Project> {
3543

3644
private static final long serialVersionUID = 4566653175832872422L;
@@ -45,44 +53,53 @@ public class Project extends AuditModel implements Serializable, ComparableById<
4553
private Long id;
4654

4755
@ManyToOne(
48-
fetch = FetchType.LAZY,
49-
optional = true,
50-
cascade = {
51-
CascadeType.MERGE,
52-
CascadeType.REFRESH
53-
}
56+
fetch = FetchType.LAZY,
57+
optional = true,
58+
cascade = {
59+
CascadeType.MERGE,
60+
CascadeType.REFRESH
61+
}
5462
)
5563
@JoinColumn(name = "parent_id")
5664
@OnDelete(action = OnDeleteAction.NO_ACTION)
5765
private Project parent;
5866

5967
@ManyToOne(
60-
fetch = FetchType.LAZY,
61-
optional = false,
62-
cascade = {
63-
CascadeType.MERGE,
64-
CascadeType.REFRESH
65-
}
68+
fetch = FetchType.LAZY,
69+
optional = false,
70+
cascade = {
71+
CascadeType.MERGE,
72+
CascadeType.REFRESH
73+
}
6674
)
6775
@JoinColumn(name = "context_id")
6876
@OnDelete(action = OnDeleteAction.NO_ACTION)
6977
private Context context;
7078

71-
@SafeHtml(whitelistType=SafeHtml.WhiteListType.NONE)
79+
@SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
7280
@NotBlank
73-
@Length(min=1,max=255)
74-
@Column(name="name",nullable = false)
81+
@Length(min = 1, max = 255)
82+
@Column(name = "name", nullable = false)
7583
private String name;
7684

7785
//@SafeHtml(whitelistType= SafeHtml.WhiteListType.RELAXED)
7886
@NotBlank
79-
@Length(min=0,max=65535)
80-
@Column(name="description", nullable = true, length = 65535, columnDefinition="text")
87+
@Length(min = 0, max = 65535)
88+
@Column(name = "description", nullable = true, length = 65535, columnDefinition = "text")
8189
private String description;
8290

83-
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent", cascade = { CascadeType.ALL })
91+
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent", cascade = {CascadeType.ALL})
8492
private List<Project> children = new ArrayList<>();
8593

94+
@Transient
95+
public String getUrl() {
96+
if (this.getId() == null || this.getId() == 0L) {
97+
return "redirect:/project/root";
98+
} else {
99+
return "redirect:/project/" + this.getId();
100+
}
101+
}
102+
86103
@Transient
87104
public boolean hasNoChildren() {
88105
return this.children.size() == 0;
@@ -108,7 +125,7 @@ public boolean equalsById(Project otherObject) {
108125
@Override
109126
public boolean equalsByUniqueConstraint(Project otherObject) {
110127
boolean okParent;
111-
if(this.isRootProject()){
128+
if (this.isRootProject()) {
112129
okParent = (otherObject.isRootProject());
113130
} else {
114131
okParent = this.getParent().equalsByUniqueConstraint(otherObject.getParent());
@@ -137,92 +154,22 @@ public static Project newRootProjectFactory(UserAccount userAccount) {
137154
return n;
138155
}
139156

140-
public static Project newRootProjectFactory(UserAccount userAccount,Context context) {
157+
public static Project newRootProjectFactory(Context context) {
141158
Project n = new Project();
142159
n.setParent(null);
143160
n.setContext(context);
144161
return n;
145162
}
146163

147-
public Long getId() {
148-
return id;
149-
}
150-
151-
public void setId(Long id) {
152-
this.id = id;
153-
}
154-
155-
public Project getParent() {
156-
return parent;
157-
}
158-
159-
public void setParent(Project parent) {
160-
this.parent = parent;
161-
}
162-
163-
public String getName() {
164-
return name;
165-
}
166-
167-
public void setName(String name) {
168-
this.name = name;
169-
}
170-
171-
public String getDescription() {
172-
return description;
173-
}
174-
175-
public void setDescription(String description) {
176-
this.description = description;
177-
}
178-
179-
public List<Project> getChildren() {
180-
return children;
181-
}
182164

183-
public void setChildren(List<Project> children) {
184-
this.children = children;
185-
}
186-
187-
public Context getContext() {
188-
return context;
189-
}
190-
191-
public void setContext(Context context) {
192-
this.context = context;
193-
}
194-
195-
@Override
196-
public boolean equals(Object o) {
197-
if (this == o) return true;
198-
if (!(o instanceof Project)) return false;
199-
if (!super.equals(o)) return false;
200-
Project project = (Project) o;
201-
return Objects.equals(getId(), project.getId()) &&
202-
Objects.equals(getParent(), project.getParent()) &&
203-
getContext().equals(project.getContext()) &&
204-
getName().equals(project.getName()) &&
205-
getDescription().equals(project.getDescription()) &&
206-
getChildren().equals(project.getChildren());
207-
}
208-
209-
@Override
210-
public int hashCode() {
211-
return Objects.hash(super.hashCode(), getId(), getParent(), getContext(), getName(), getDescription(), getChildren());
212-
}
213-
214-
@Override
215-
public String toString() {
216-
return "Project{" +
217-
"id=" + id +
218-
", parent=" + parent +
219-
", context=" + context +
220-
", name='" + name + '\'' +
221-
", description='" + description + '\'' +
222-
", uuid='" + uuid + '\'' +
223-
", rowCreatedAt=" + rowCreatedAt +
224-
", rowUpdatedAt=" + rowUpdatedAt +
225-
'}';
165+
//TODO: use newRootProjectFactory(Context context);
166+
@Deprecated
167+
public static Project newRootProjectFactory(UserAccount userAccount, Context context) {
168+
Project n = new Project();
169+
n.setParent(null);
170+
n.setContext(context);
171+
return n;
226172
}
227173

228174
}
175+

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public final String addNewTaskToRootProjectPost(
164164
task.setOrderIdProject(++maxOrderIdProject);
165165
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext());
166166
task.setOrderIdTaskState(++maxOrderIdTaskState);
167-
task = taskService.saveAndFlush(task);
167+
task = taskService.addToRootProject(task);
168168
log.info(task.toString());
169169
return "redirect:/project/root";
170170
}
@@ -186,7 +186,7 @@ public final String showProject(
186186
Page<Task> taskPage = null;
187187
if (projectId != 0) {
188188
thisProject = projectService.findByProjectId(projectId);
189-
taskPage = taskService.findByProject(thisProject, context, pageable);
189+
taskPage = taskService.findByProject(thisProject, pageable);
190190
} else {
191191
thisProject = new Project();
192192
thisProject.setId(0L);
@@ -350,7 +350,7 @@ public final String deleteProject(
350350
model.addAttribute("message",s.toString());
351351
model.addAttribute("isDeleted",false);
352352
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(project,locale);
353-
Page<Task> taskPage = taskService.findByProject(project, context, request);
353+
Page<Task> taskPage = taskService.findByProject(project, request);
354354
model.addAttribute("taskPage", taskPage);
355355
model.addAttribute("breadcrumb", breadcrumb);
356356
model.addAttribute("thisProject", project);
@@ -399,6 +399,7 @@ public String changeTaskOrderIdWithinAProject(
399399

400400
@RequestMapping(path = "/{projectId}/add/task", method = RequestMethod.GET)
401401
public final String addNewTaskToProjectGet(
402+
@PathVariable("projectId") Project thisProject,
402403
@ModelAttribute("userSession") UserSessionBean userSession,
403404
Locale locale, Model model
404405
) {
@@ -407,6 +408,7 @@ public final String addNewTaskToProjectGet(
407408
task.setTaskState(TaskState.INBOX);
408409
task.setTaskEnergy(TaskEnergy.NONE);
409410
task.setTaskTime(TaskTime.NONE);
411+
task.setProject(thisProject);
410412
Boolean mustChooseArea = false;
411413
if(userSession.getContextId() == 0L){
412414
mustChooseArea = true;
@@ -418,7 +420,7 @@ public final String addNewTaskToProjectGet(
418420
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowRootProject(locale);
419421
model.addAttribute("breadcrumb", breadcrumb);
420422
model.addAttribute("mustChooseArea", mustChooseArea);
421-
model.addAttribute("thisProjectId", 0L);
423+
model.addAttribute("thisProject", thisProject);
422424
model.addAttribute("breadcrumb", breadcrumb);
423425
model.addAttribute("task", task);
424426
return "id/task/add";
@@ -445,7 +447,6 @@ public final String addNewTaskToProjectPost(
445447
model.addAttribute("thisProject", thisProject);
446448
model.addAttribute("breadcrumb", breadcrumb);
447449
model.addAttribute("task", task);
448-
//return "task/addToProject";
449450
return "id/task/add";
450451
} else {
451452
Project thisProject = projectService.findByProjectId(projectId);
@@ -462,9 +463,9 @@ public final String addNewTaskToProjectPost(
462463
task.setOrderIdProject(++maxOrderIdProject);
463464
long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext());
464465
task.setOrderIdTaskState(++maxOrderIdTaskState);
465-
task = taskService.saveAndFlush(task);
466+
task = taskService.addToProject(task);
466467
log.info(task.toString());
467-
return "redirect:/project/" + projectId + "/";
468+
return thisProject.getUrl();
468469
}
469470
}
470471

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.springframework.ui.Model;
44
import org.springframework.validation.BindingResult;
55
import org.woehlke.simpleworklist.context.Context;
6+
import org.woehlke.simpleworklist.task.Task;
67
import org.woehlke.simpleworklist.user.UserSessionBean;
78
import org.woehlke.simpleworklist.user.account.UserAccount;
89

@@ -51,4 +52,6 @@ String addNewProjectToRootPersist(
5152
Model model,
5253
String s
5354
);
55+
56+
String transformTaskIntoProjectGet(Task task);
5457
}

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.woehlke.simpleworklist.breadcrumb.BreadcrumbService;
1010
import org.woehlke.simpleworklist.context.Context;
1111
import org.woehlke.simpleworklist.context.ContextService;
12+
import org.woehlke.simpleworklist.task.Task;
1213
import org.woehlke.simpleworklist.user.UserSessionBean;
1314
import org.woehlke.simpleworklist.user.account.UserAccount;
1415

@@ -161,4 +162,28 @@ public String addNewProjectToRootPersist(
161162
project = projectService.saveAndFlush(project);
162163
return s + project.getId();
163164
}
165+
166+
@Override
167+
public String transformTaskIntoProjectGet(Task task) {
168+
if(task != null) {
169+
long projectId = 0;
170+
if (task.getProject() != null) {
171+
projectId = task.getProject().getId();
172+
}
173+
Project parentProject = projectService.findByProjectId(projectId);
174+
Project thisProject = new Project();
175+
thisProject.setParent(parentProject);
176+
thisProject.setName(task.getTitle());
177+
thisProject.setDescription(task.getText());
178+
thisProject.setUuid(task.getUuid());
179+
thisProject.setContext(task.getContext());
180+
thisProject = projectService.saveAndFlush(thisProject);
181+
task.emptyTrash();
182+
//taskService.updatedViaTaskstate(task);
183+
projectId = thisProject.getId();
184+
log.info("tried to transform Task " + task.getId() + " to new Project " + projectId);
185+
return thisProject.getUrl();
186+
}
187+
return "redirect:/taskstate/inbox";
188+
}
164189
}

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,4 +344,27 @@ public boolean hasContext(Context context) {
344344
return (this.getContext().getId().longValue() == context.getId().longValue());
345345
}
346346

347+
@Transient
348+
public String getView(boolean project){
349+
if(project){
350+
if(this.project == null){
351+
return "redirect:/project/root";
352+
} else {
353+
return this.project.getUrl();
354+
}
355+
} else {
356+
return "redirect:/"+this.taskState.getUrl();
357+
}
358+
}
359+
360+
@Transient
361+
public String getUrl(){
362+
return getView(false);
363+
}
364+
365+
@Transient
366+
public String getProjectUrl() {
367+
368+
return getView(true);
369+
}
347370
}

0 commit comments

Comments
 (0)