Skip to content

merge #124

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Apr 5, 2020
Merged

merge #124

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
custom: ["https://www.paypal.me/ThomasWoehlke"]
16 changes: 15 additions & 1 deletion etc/requirements/Requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,23 @@

## F006 Page after first successful Login

## F007 Add first new Task
## F007 Add first new Task from Inbox

## F008 Add first new Project

## F009 Add another new Task from Inbox
INBOX -> add new task -> Form -> save -> INBOX ( -> OK )
-> add new task -> Form -> save -> Project (-> NOK )

BUG: after saving to db app should show Inbox, but shows ProjectView for RootProject

URLpaths:
http://localhost:5000/taskstate/inbox
http://localhost:5000/task/addtoproject/0
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






2 changes: 2 additions & 0 deletions etc/set_java13.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
subst /D J:
subst J: "C:\Program Files\Java\jdk-13.0.2"
2 changes: 2 additions & 0 deletions etc/set_java1_8.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
subst /D J:
subst J: "C:\Program Files\Java\jdk1.8.0_241"
Binary file modified etc/uml/SimpleWorklist.mdzip
Binary file not shown.
Binary file added etc/uml/SimpleWorklist.mdzip.bak
Binary file not shown.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.woehlke</groupId>
<artifactId>simpleworklist</artifactId>
<version>2.3.12-SNAPSHOT</version>
<version>2.3.14-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
Expand Down
2 changes: 1 addition & 1 deletion run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ function runHerokuLocal() {

function main() {
runGithubTestBuild
#runDev
#setupHeroku
runHerokuLocal
#runDev
}

main
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.woehlke.simpleworklist.config.ApplicationProperties;
import org.woehlke.simpleworklist.context.Context;
import org.woehlke.simpleworklist.project.Project;
import org.woehlke.simpleworklist.task.TaskService;
import org.woehlke.simpleworklist.user.account.UserAccount;
import org.woehlke.simpleworklist.task.TaskEnergy;
import org.woehlke.simpleworklist.task.TaskTime;
Expand Down Expand Up @@ -36,6 +37,9 @@ public abstract class AbstractController {
@Autowired
protected ProjectService projectService;

@Autowired
protected TaskService taskService;

@Autowired
protected UserAccountService userAccountService;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.*;
import org.woehlke.simpleworklist.common.AbstractController;
import org.woehlke.simpleworklist.taskstate.TaskMoveService;
import org.woehlke.simpleworklist.context.Context;
import org.woehlke.simpleworklist.task.Task;
import org.woehlke.simpleworklist.user.account.UserAccount;
import org.woehlke.simpleworklist.breadcrumb.Breadcrumb;
import org.woehlke.simpleworklist.user.UserSessionBean;
import org.woehlke.simpleworklist.task.TaskService;

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

private final TaskService taskService;
private final TaskMoveService taskMoveService;
private final ProjectService projectService;

private static final long rootProjectId = 0L;
private final ProjectControllerService projectControllerService;

@Autowired
public ProjectController(TaskService taskService, TaskMoveService taskMoveService, ProjectService projectService) {
this.taskService = taskService;
this.taskMoveService = taskMoveService;
this.projectService = projectService;
}

@RequestMapping(path = "/root", method = RequestMethod.GET)
public final String showRootProject(
@PageableDefault(sort = "orderIdProject") Pageable pageable,
@RequestParam(required = false) String message,
@RequestParam(required = false) boolean isDeleted,
@ModelAttribute("userSession") UserSessionBean userSession,
Locale locale, Model model) {
log.info("/project/root");
Context context = super.getContext(userSession);
userSession.setLastProjectId(0L);
model.addAttribute("userSession",userSession);
Page<Task> taskPage = taskService.findByRootProject(context,pageable);
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowRootProject(locale);
model.addAttribute("breadcrumb", breadcrumb);
model.addAttribute("taskPage", taskPage);
if(message != null){
model.addAttribute("message",message);
model.addAttribute("isDeleted",isDeleted);
model.addAttribute("myTaskState","PROJECT");
}
return "project/root";
public ProjectController(ProjectControllerService projectControllerService) {
this.projectControllerService = projectControllerService;
}

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

@RequestMapping(path = "/add/new/project", method = RequestMethod.GET)
public final String addNewTopLevelProjectForm(
@ModelAttribute("userSession") UserSessionBean userSession,
Locale locale, Model model
){
log.info("/project/add/new/project (GET)");
addNewProject(rootProjectId, userSession, locale, model);
return "project/addToplevel";
}


@RequestMapping(path = "/add/new/project", method = {RequestMethod.POST, RequestMethod.PUT})
public final String addNewTopLevelProjectSave(
@Valid Project project,
@ModelAttribute("userSession") UserSessionBean userSession,
BindingResult result,
Locale locale, Model model
){
log.info("/project/add/new/project (POST)");
return addNewProjectPersist( rootProjectId, userSession, project,
result, locale, model, "project/addToplevel");
}

@RequestMapping(path = "/{projectId}/add/new/project", method = RequestMethod.GET)
public final String addNewSubProjectGet(
@PathVariable long projectId,
@ModelAttribute("userSession") UserSessionBean userSession,
Locale locale, Model model
) {
log.info("private addNewProjectGet (GET) projectId="+projectId);
addNewProject(projectId, userSession, locale, model);
Context context = super.getContext(userSession);
projectControllerService.addNewProject(projectId, userSession, context, locale, model);
return "project/add";
}

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

Expand Down Expand Up @@ -268,118 +216,4 @@ public final String deleteProject(
return "redirect:/project/" + newProjectId;
}


private final void addNewProject(
long projectId,
UserSessionBean userSession,
Locale locale,
Model model
) {
log.info("private addNewProject projectId="+projectId);
Context context = super.getContext(userSession);
UserAccount userAccount = context.getUserAccount();
userSession.setLastProjectId(projectId);
model.addAttribute("userSession",userSession);
Project thisProject = null;
Project project = null;
if (projectId == 0) {
thisProject = new Project();
thisProject.setId(0L);
project = Project.newRootProjectFactory(userAccount);
if(userSession.getContextId() == 0L){
model.addAttribute("mustChooseArea", true);
project.setContext(userAccount.getDefaultContext());
} else {
project.setContext(context);
}
} else {
thisProject = projectService.findByProjectId(projectId);
project = Project.newProjectFactory(thisProject);
}
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
model.addAttribute("breadcrumb", breadcrumb);
model.addAttribute("thisProject", thisProject);
model.addAttribute("project", project);
}

private String addNewProjectPersist(
long projectId,
UserSessionBean userSession,
Project project,
BindingResult result,
Locale locale, Model model,
String template
){
log.info("private addNewProjectPersist projectId="+projectId+" "+project.toString());
Context context = super.getContext(userSession);
UserAccount userAccount = context.getUserAccount();
userSession.setLastProjectId(projectId);
model.addAttribute("userSession",userSession);
if(result.hasErrors()){
Project thisProject = null;
if (projectId == 0) {
thisProject = new Project();
thisProject.setId(0L);
} else {
thisProject = projectService.findByProjectId(projectId);
}
Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale);
model.addAttribute("breadcrumb", breadcrumb);
model.addAttribute("thisProject", thisProject);
model.addAttribute("project", project);
return template;
} else {
if (projectId == 0) {
if(userSession.getContextId()>0) {
project.setContext(context);
}
project = projectService.saveAndFlush(project);
projectId = project.getId();
} else {
Project thisProject = projectService.findByProjectId(projectId);
List<Project> children = thisProject.getChildren();
children.add(project);
thisProject.setChildren(children);
project.setParent(thisProject);
project = projectService.saveAndFlush(project);
projectId = project.getId();
log.info("project: "+ project.toString());
log.info("thisProject: "+ thisProject.toString());
}
return "redirect:/project/" + projectId;
}
}

@RequestMapping(path = "/task/{sourceTaskId}/changeorderto/{destinationTaskId}", method = RequestMethod.GET)
public String changeTaskOrderIdWithinAProject(
@PathVariable("sourceTaskId") Task sourceTask,
@PathVariable("destinationTaskId") Task destinationTask,
@ModelAttribute("userSession") UserSessionBean userSession,
Locale locale, Model model
){
Context context = super.getContext(userSession);
if(!sourceTask.isInRootProject()){
userSession.setLastProjectId(sourceTask.getProject().getId());
}
model.addAttribute("userSession",userSession);
log.info("-------------------------------------------------");
log.info(" changeTaskOrderIdWithinAProject");
log.info("-------------------------------------------------");
log.info(" source Task: "+sourceTask.toString());
log.info("-------------------------------------------------");
log.info(" destination Task: "+destinationTask.toString());
log.info("-------------------------------------------------");
String returnUrl = "redirect:/taskstate/inbox";
boolean rootProject = sourceTask.isInRootProject();
returnUrl = "redirect:/project/0";
if(rootProject){
taskMoveService.moveOrderIdRootProject(sourceTask, destinationTask);
} else {
taskMoveService.moveOrderIdProject(sourceTask, destinationTask);
log.info(" DONE: taskMoveService.moveOrderIdProject (2)");
returnUrl = "redirect:/project/" + sourceTask.getProject().getId();
}
log.info("-------------------------------------------------");
return returnUrl;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.woehlke.simpleworklist.project;

import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.woehlke.simpleworklist.context.Context;
import org.woehlke.simpleworklist.user.UserSessionBean;
import org.woehlke.simpleworklist.user.account.UserAccount;

import java.util.Locale;

public interface ProjectControllerService {

void addNewProject(
long projectId,
UserSessionBean userSession,
Context context,
Locale locale,
Model model
);

String addNewProjectPersist(
long projectId,
UserSessionBean userSession,
Project project,
Context context,
BindingResult result,
Locale locale,
Model model,
String template
);

Project getProject(
long projectId,
UserAccount userAccount,
UserSessionBean userSession
);
}
Loading