diff --git a/pom.xml b/pom.xml
index fdf6c750..3c024daf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,41 +81,38 @@
3.5.0
- 3.6.0
+ 3.6.1
2.9.3
5.2.0
6.1.2
- 5.3
+ 5.7.0
true
2.9.0
- 2.63.0
- 2.4.21
+ 2.64.0
+ 3.0.12
2.2
1.15.3
- 6.46.0
+ 6.49.0
-
1.13.0
-
-
- 4.0.0
- true
- true
- true
- true
- true
-
-
- 3.0.0-M6
-
-
+ 3.3.0
+ 3.2.0
+ 3.3.0
+ 3.10.1
+ 3.0.1
+ 3.0.0
+ 3.4.1
+ 3.2.1
+ 3.0.0-M7
+ 3.0.0-M7
+ 3.0.0-M6
3.12.0
3.3.0
3.1.2
3.2.0
- 3.17.0
+ 3.17.0
4.7.0.0
3.0.0-M7
2.2.2
@@ -123,6 +120,12 @@
3.1.0
1.5.2
1.2022.6
+ 4.0.0
+ true
+ true
+ true
+ true
+ true
@@ -250,6 +253,7 @@
pom
import
+
@@ -305,6 +310,8 @@
${lombok.version}
false
+
+
+
+
+ org.postgresql
+ postgresql
+ 42.4.1
+
@@ -392,7 +405,7 @@
org.apache.maven.plugins
maven-invoker-plugin
- ${maven-invoker-plugin.version}
+ ${version.maven-invoker-plugin}
maven-plugin
provided
@@ -405,21 +418,21 @@
com.dkanejs.maven.plugins
docker-compose-maven-plugin
- ${docker-compose-maven-plugin.version}
+ ${version.docker-compose-maven-plugin}
maven-plugin
provided
org.apache.maven.plugins
maven-clean-plugin
- ${maven-clean-plugin.version}
+ ${version.maven-clean-plugin}
maven-plugin
provided
org.apache.maven.plugins
maven-dependency-plugin
- ${maven-dependency-plugin.version}
+ ${version.maven-dependency-plugin}
maven-plugin
provided
@@ -432,7 +445,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- ${maven-compiler-plugin.version}
+ ${version.maven-compiler-plugin}
maven-plugin
provided
@@ -477,6 +490,7 @@
+
org.apache.maven.plugins
maven-pmd-plugin
- ${maven-pmd-plugin.version}
+ ${version.maven-pmd-plugin}
maven-plugin
provided
@@ -521,7 +536,7 @@
org.apache.maven.plugins
maven-release-plugin
- ${maven-release-plugin.version}
+ ${version.maven-release-plugin}
maven-plugin
provided
@@ -534,39 +549,38 @@
org.apache.maven.plugins
maven-deploy-plugin
- ${maven-deploy-plugin.version}
+ ${version.maven-deploy-plugin}
maven-plugin
provided
org.apache.maven.plugins
maven-install-plugin
- ${maven-install-plugin.version}
+ ${version.maven-install-plugin}
maven-plugin
provided
org.apache.maven.plugins
maven-javadoc-plugin
- ${maven-javadoc-plugin.version}
+ ${version.maven-javadoc-plugin}
maven-plugin
provided
org.apache.maven.plugins
maven-source-plugin
- ${maven-source-plugin.version}
+ ${version.maven-source-plugin}
maven-plugin
provided
-
+
@@ -595,19 +610,20 @@
provided
false
+
org.springframework.boot
spring-boot-configuration-processor
provided
true
-
org.springframework.boot
spring-boot-starter-actuator
@@ -681,7 +697,7 @@
spring-boot-starter-cache
-->
-
+
+
org.springframework.security
spring-security-web
@@ -757,6 +772,7 @@
org.springframework.data
spring-data-commons
+ -->
org.springframework.security
@@ -764,7 +780,6 @@
test
-
org.webjars
jquery
@@ -781,16 +796,6 @@
org.webjars
font-awesome
-
-
- org.postgresql
- postgresql
-
-
- com.zaxxer
- HikariCP
-
-
org.thymeleaf
thymeleaf
@@ -824,19 +829,28 @@
org.thymeleaf
thymeleaf-testing
- provided
+ test
+
+
+ org.postgresql
+ postgresql
+
+
+ com.zaxxer
+ HikariCP
+
@@ -850,6 +864,7 @@
test
+
@@ -908,7 +924,6 @@
provided
-
org.apache.maven.plugins
maven-enforcer-plugin
@@ -980,12 +995,14 @@
maven-plugin
provided
+
org.apache.maven.plugins
maven-pmd-plugin
@@ -1040,6 +1057,7 @@
maven-plugin
provided
+
${project.artifactId}
- clean package spring-boot:run
+ clean install spring-boot:run
@@ -1065,27 +1084,27 @@
org.apache.maven.plugins
maven-invoker-plugin
- ${maven-invoker-plugin.version}
+ ${version.maven-invoker-plugin}
com.dkanejs.maven.plugins
docker-compose-maven-plugin
- ${docker-compose-maven-plugin.version}
+ ${version.docker-compose-maven-plugin}
org.apache.maven.plugins
maven-clean-plugin
- ${maven-clean-plugin.version}
+ ${version.maven-clean-plugin}
org.apache.maven.plugins
maven-dependency-plugin
- ${maven-dependency-plugin.version}
+ ${version.maven-dependency-plugin}
org.apache.maven.plugins
maven-compiler-plugin
- ${maven-compiler-plugin.version}
+ ${version.maven-compiler-plugin}
org.springframework.boot
@@ -1095,7 +1114,7 @@
org.apache.maven.plugins
maven-install-plugin
- ${maven-install-plugin.version}
+ ${version.maven-install-plugin}
org.apache.maven.plugins
@@ -1120,7 +1139,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- ${maven-surefire-plugin.version}
+ ${version.maven-surefire-plugin}
org.apache.maven.plugins
@@ -1130,7 +1149,7 @@
org.apache.maven.plugins
maven-release-plugin
- ${maven-release-plugin.version}
+ ${version.maven-release-plugin}
org.asciidoctor
@@ -1140,12 +1159,12 @@
org.apache.maven.plugins
maven-javadoc-plugin
- ${maven-javadoc-plugin.version}
+ ${version.maven-javadoc-plugin}
org.apache.maven.plugins
maven-pmd-plugin
- ${maven-pmd-plugin.version}
+ ${version.maven-pmd-plugin}
net.sourceforge.pmd
@@ -1176,7 +1195,7 @@
org.apache.maven.plugins
maven-source-plugin
- ${maven-source-plugin.version}
+ ${version.maven-source-plugin}
org.apache.maven.plugins
@@ -1186,12 +1205,12 @@
org.apache.maven.plugins
maven-deploy-plugin
- ${maven-deploy-plugin.version}
+ ${version.maven-deploy-plugin}
org.apache.maven.plugins
maven-failsafe-plugin
- ${maven-failsafe-plugin.version}
+ ${version.maven-failsafe-plugin}
@@ -1278,13 +1297,38 @@
org.springframework.boot
spring-boot-maven-plugin
+ JAR
true
true
+ org.eclipse.aether,org.beanshell,org.apache.maven.plugins,org.apache.maven.scm,org.jruby,com.vladsch.flexmark,org.apache.maven.doxia,org.codehaus.plexus,org.apache.maven.scm,io.netty,org.apache.groovy,org.eclipse.jetty,org.mockito,org.asciidoctor,com.github.jnr,org.apache.maven.surefire,org.apache.maven,net.sourceforge.saxon,net.sf.saxon,com.github.spotbugs,org.eclipse.jgit,org.apache.ant,org.apache.velocity,org.junit.jupiter,org.junit.platform,junit,org.mockito,net.sourceforge.pmd,org.eclipse.sisu,org.ow2.asmcom.fasterxml.jackson.module
org.springframework.boot
spring-boot-configuration-processor
+
@@ -1327,6 +1371,13 @@
org.apache.maven.plugins
maven-dependency-plugin
+
+ compile
+ maven-plugin
+ test,provided
+ org.eclipse.aether,antlr,org.beanshell,org.apache.maven.plugins,org.apache.maven.scm,org.jruby,com.vladsch.flexmark,org.apache.maven.doxia,org.codehaus.plexus,org.apache.maven.scm,io.netty,org.apache.groovy,org.eclipse.jetty,org.mockito,org.asciidoctor,com.github.jnr,org.apache.maven.surefire,org.apache.maven,net.sourceforge.saxon,net.sf.saxon,com.github.spotbugs,org.eclipse.jgit,org.apache.ant,org.apache.velocity,org.junit.jupiter,org.junit.platform,junit,org.mockito,net.sourceforge.pmd,org.eclipse.sisu,org.ow2.asmcom.fasterxml.jackson.module,
+ jboss-transaction-api_1.2_spec,byte-buddy-agent,byte-buddy,backport9,backport-util-concurrent,spring-boot-configuration-processor,spring-boot-devtools,ganymed-ssh2,maven-toolchain,weld-probe-core,antlr,bsh,velocity-tools,liquibase-core,jruby-complete,cdi-api,lombok,jcommander,checkstyle,plexus-build-api
+
copy-dependencies
@@ -1334,13 +1385,6 @@
copy-dependencies
-
- compile
- maven-plugin
- test,provided
- org.eclipse.aether,antlr,org.beanshell,org.apache.maven.plugins,org.apache.maven.scm,org.jruby,com.vladsch.flexmark,org.apache.maven.doxia,org.codehaus.plexus,org.apache.maven.scm,io.netty,org.apache.groovy,org.eclipse.jetty,org.mockito,org.asciidoctor,com.github.jnr,org.apache.maven.surefire,org.apache.maven,net.sourceforge.saxon,net.sf.saxon,com.github.spotbugs,org.eclipse.jgit,org.apache.ant,org.apache.velocity,org.junit.jupiter,org.junit.platform,junit,org.mockito,net.sourceforge.pmd,org.eclipse.sisu,org.ow2.asmcom.fasterxml.jackson.module,
- jboss-transaction-api_1.2_spec,byte-buddy-agent,byte-buddy,backport9,backport-util-concurrent,spring-boot-configuration-processor,spring-boot-devtools,ganymed-ssh2,maven-toolchain,weld-probe-core,antlr,bsh,velocity-tools,liquibase-core,jruby-complete,cdi-api,lombok,jcommander,checkstyle,plexus-build-api
-
@@ -1486,15 +1530,6 @@
org.springframework.boot
spring-boot-maven-plugin
true
-
- true
-
-
- org.springframework.boot
- spring-boot-configuration-processor
-
-
-
com.dkanejs.maven.plugins
@@ -1506,8 +1541,7 @@
${docker-compose-maven-plugin.removeImages}
true
true
- true
-
+ true
org.apache.maven.plugins
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java
index 3229e7c6..81c7292f 100644
--- a/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectIdController.java
@@ -20,6 +20,7 @@
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy;
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService;
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime;
+import org.woehlke.java.simpleworklist.domain.meso.move.MoveTaskService;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TransformTaskIntoProjektService;
import org.woehlke.java.simpleworklist.domain.db.user.UserAccount;
@@ -42,16 +43,18 @@
public class ProjectIdController extends AbstractController {
private final ProjectControllerService projectControllerService;
+ private final MoveTaskService moveTaskService;
private final TaskService taskService;
private final TransformTaskIntoProjektService transformTaskIntoProjektService;
@Autowired
public ProjectIdController(
- ProjectControllerService projectControllerService,
- TaskService taskService,
- TransformTaskIntoProjektService transformTaskIntoProjektService
+ ProjectControllerService projectControllerService,
+ MoveTaskService moveTaskService, TaskService taskService,
+ TransformTaskIntoProjektService transformTaskIntoProjektService
) {
this.projectControllerService = projectControllerService;
+ this.moveTaskService = moveTaskService;
this.taskService = taskService;
this.transformTaskIntoProjektService = transformTaskIntoProjektService;
}
@@ -384,7 +387,7 @@ public final String moveAllCompletedToTrash(
) {
userSession.setLastProjectId(thisProject.getId());
Context context = super.getContext(userSession);
- taskService.moveAllCompletedToTrash(context);
+ moveTaskService.moveAllCompletedToTrash(context);
model.addAttribute("userSession", userSession);
model.addAttribute("taskstateType",PROJECTS.getType());
model.addAttribute("dataPage", true);
@@ -399,7 +402,7 @@ public final String emptyTrash(
) {
userSession.setLastProjectId(thisProject.getId());
Context context = super.getContext(userSession);
- taskService.emptyTrash(context);
+ moveTaskService.emptyTrash(context);
model.addAttribute("userSession", userSession);
model.addAttribute("taskstateType",PROJECTS.getType());
model.addAttribute("dataPage", true);
@@ -564,7 +567,7 @@ public final String moveTaskToAnotherProject(
@ModelAttribute("userSession") UserSessionBean userSession,
Model model
) {
- task = taskService.moveTaskToRootProject(task);
+ task = moveTaskService.moveTaskToRootProject(task);
model.addAttribute("userSession", userSession);
model.addAttribute("taskstateType",PROJECTS.getType());
model.addAttribute("dataPage", true);
@@ -579,7 +582,7 @@ public final String moveTaskToAnotherProject(
@ModelAttribute("userSession") UserSessionBean userSession,
Model model
) {
- task = taskService.moveTaskToAnotherProject(task,otherProject);
+ task = moveTaskService.moveTaskToAnotherProject(task,otherProject);
model.addAttribute("userSession", userSession);
model.addAttribute("taskstateType",PROJECTS.getType());
model.addAttribute("dataPage", true);
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java
index 6d692e75..7f4ce3a2 100644
--- a/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/ProjectRootController.java
@@ -21,6 +21,7 @@
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy;
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService;
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime;
+import org.woehlke.java.simpleworklist.domain.meso.move.MoveTaskService;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TransformTaskIntoProjektService;
import org.woehlke.java.simpleworklist.domain.db.user.UserAccount;
@@ -41,12 +42,14 @@ public class ProjectRootController extends AbstractController {
public final static String rootProjectUrl = "redirect:/project/root";
private final ProjectControllerService projectControllerService;
+ private final MoveTaskService moveTaskService;
private final TaskService taskService;
private final TransformTaskIntoProjektService transformTaskIntoProjektService;
@Autowired
- public ProjectRootController(ProjectControllerService projectControllerService, TaskService taskService, TransformTaskIntoProjektService transformTaskIntoProjektService) {
+ public ProjectRootController(ProjectControllerService projectControllerService, MoveTaskService moveTaskService, TaskService taskService, TransformTaskIntoProjektService transformTaskIntoProjektService) {
this.projectControllerService = projectControllerService;
+ this.moveTaskService = moveTaskService;
this.taskService = taskService;
this.transformTaskIntoProjektService = transformTaskIntoProjektService;
}
@@ -301,7 +304,7 @@ public final String moveTaskToProjectRoot(
@ModelAttribute("userSession") UserSessionBean userSession,
Model model
) {
- task = taskService.moveTaskToRootProject(task);
+ task = moveTaskService.moveTaskToRootProject(task);
userSession.setLastProjectId(Project.rootProjectId);
userSession.setLastTaskState(task.getTaskState());
userSession.setLastTaskId(task.getId());
@@ -318,7 +321,7 @@ public final String moveTaskToProject(
@ModelAttribute("userSession") UserSessionBean userSession,
Model model
) {
- task = taskService.moveTaskToAnotherProject(task,targetProject);
+ task = moveTaskService.moveTaskToAnotherProject(task,targetProject);
userSession.setLastProjectId(targetProject.getId());
userSession.setLastTaskState(task.getTaskState());
userSession.setLastTaskId(task.getId());
@@ -478,7 +481,7 @@ public final String moveAllCompletedToTrash(
Model model
) {
Context context = super.getContext(userSession);
- taskService.moveAllCompletedToTrash(context);
+ moveTaskService.moveAllCompletedToTrash(context);
userSession.setLastContextId(context.getId());
userSession.setLastProjectId(Project.rootProjectId);
model.addAttribute("userSession", userSession);
@@ -493,7 +496,7 @@ public final String emptyTrash(
Model model
) {
Context context = super.getContext(userSession);
- taskService.emptyTrash(context);
+ moveTaskService.emptyTrash(context);
userSession.setLastContextId(context.getId());
userSession.setLastProjectId(Project.rootProjectId);
model.addAttribute("userSession", userSession);
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java
index 37a145fd..32252cc4 100644
--- a/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskService.java
@@ -7,22 +7,15 @@
import org.woehlke.java.simpleworklist.domain.db.data.Task;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState;
-public interface TaskService {
+import java.util.List;
- Task moveTaskToInbox(Task task);
- Task moveTaskToToday(Task task);
- Task moveTaskToNext(Task task);
- Task moveTaskToWaiting(Task task);
- Task moveTaskToSomeday(Task task);
- Task moveTaskToFocus(Task task);
- Task moveTaskToCompleted(Task task);
- Task moveTaskToTrash(Task task);
+public interface TaskService {
- void moveAllCompletedToTrash(Context context);
- void emptyTrash(Context context);
+// void moveAllCompletedToTrash(Context context);
+// void emptyTrash(Context context);
- Task moveTaskToRootProject(Task task);
- Task moveTaskToAnotherProject(Task task, Project project);
+// Task moveTaskToRootProject(Task task);
+// Task moveTaskToAnotherProject(Task task, Project project);
Task addToInbox(Task task);
Task addToProject(Task task);
@@ -68,4 +61,15 @@ public interface TaskService {
void moveTasksUpByProject(Task sourceTask, Task destinationTask);
void moveTasksDownByProject(Task sourceTask, Task destinationTask);
+
+ Task saveAndFlush(Task task);
+
+ void deleteAll(List taskListDeleted);
+
+ void saveAll(List taskListChanged);
+
+ List findByTaskStateAndContextOrderByOrderIdTaskStateAsc(TaskState completed, Context context);
+
+ List findByTaskStateAndContext(TaskState trash, Context context);
+
}
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java
index de99f87a..4495691d 100644
--- a/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/db/data/task/TaskServiceImpl.java
@@ -92,12 +92,12 @@ public Task findOne(@Min(1L) long taskId) {
public Task updatedViaTaskstate(Task task) {
log.info("updatedViaTaskstate");
if(task.getProject() != null){
- Long projectId = task.getProject().getId();
+ long projectId = task.getProject().getId();
Project project = projectRepository.getReferenceById(projectId);
task.setProject(project);
}
if(task.getLastProject()!=null){
- Long projectId = task.getLastProject().getId();
+ long projectId = task.getLastProject().getId();
Project project = projectRepository.getReferenceById(projectId);
task.setLastProject(project);
}
@@ -108,8 +108,18 @@ public Task updatedViaTaskstate(Task task) {
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task updatedViaProject( @Valid Task task) {
+ public Task updatedViaProject(Task task) {
log.info("updatedViaProject");
+ if(task.getProject() != null){
+ long projectId = task.getProject().getId();
+ Project project = projectRepository.getReferenceById(projectId);
+ task.setProject(project);
+ }
+ if(task.getLastProject()!=null){
+ long projectId = task.getLastProject().getId();
+ Project project = projectRepository.getReferenceById(projectId);
+ task.setLastProject(project);
+ }
task = taskRepository.saveAndFlush(task);
log.info("persisted Task: " + task.outProject());
return task;
@@ -119,12 +129,22 @@ public Task updatedViaProject( @Valid Task task) {
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public Task updatedViaProjectRoot( @Valid Task task) {
log.info("updatedViaProject");
+ if(task.getProject() != null){
+ long projectId = task.getProject().getId();
+ Project project = projectRepository.getReferenceById(projectId);
+ task.setProject(project);
+ }
+ if(task.getLastProject()!=null){
+ long projectId = task.getLastProject().getId();
+ Project project = projectRepository.getReferenceById(projectId);
+ task.setLastProject(project);
+ }
task = taskRepository.saveAndFlush(task);
log.info("persisted Task: " + task.outProject());
return task;
}
- @Override
+ @Override
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public Task addToInbox( @Valid Task task) {
log.info("addToInbox");
@@ -174,70 +194,7 @@ public Task addToRootProject( @Valid Task task) {
return task;
}
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToRootProject( @Valid Task task) {
- task.moveTaskToRootProject();
- long maxOrderIdProject = this.getMaxOrderIdProjectRoot(task.getContext());
- task.setOrderIdProject(++maxOrderIdProject);
- return taskRepository.saveAndFlush(task);
- }
-
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToAnotherProject( @Valid Task task,@Valid Project project) {
- boolean okContext = task.hasSameContextAs(project);
- if(okContext) {
- task.moveTaskToAnotherProject(project);
- long maxOrderIdProject = this.getMaxOrderIdProject(
- task.getProject(),
- task.getContext()
- );
- task.setOrderIdProject(++maxOrderIdProject);
- taskRepository.saveAndFlush(task);
- }
- return task;
- }
-
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public void moveAllCompletedToTrash( Context context) {
- long maxOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.TRASH,
- context
- );
- long newOrderIdTaskState = maxOrderIdTaskState;
- List taskListCompleted = taskRepository.findByTaskStateAndContextOrderByOrderIdTaskStateAsc(
- TaskState.COMPLETED,
- context
- );
- for (Task task : taskListCompleted) {
- newOrderIdTaskState++;
- task.setOrderIdTaskState(newOrderIdTaskState);
- task.moveToTrash();
- }
- taskRepository.saveAll(taskListCompleted);
- }
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public void emptyTrash( Context context) {
- List taskList = taskRepository.findByTaskStateAndContext(
- TaskState.TRASH,
- context
- );
- List taskListChanged = new ArrayList<>(taskList.size());
- for(Task task: taskList){
- task.emptyTrash();
- taskListChanged.add(task);
- }
- taskRepository.saveAll(taskListChanged);
- List taskListDeleted = taskRepository.findByTaskStateAndContext(
- TaskState.DELETED,
- context
- );
- taskRepository.deleteAll(taskListDeleted);
- }
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@@ -457,116 +414,29 @@ public void moveTasksDownByProject(Task sourceTask, Task destinationTask) {
log.info("-------------------------------------------------------------------------------");
}
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToInbox(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.INBOX,
- task.getContext()
- );
- task.moveToInbox();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to inbox: " + task.outTaskstate());
- return task;
- }
+ @Override
+ public Task saveAndFlush(Task task) {
+ return taskRepository.saveAndFlush(task);
+ }
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToToday(Task task) {
- Date now = new Date();
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.TODAY,
- task.getContext()
- );
- task.moveToToday();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to today: " + task.outTaskstate());
- return task;
- }
+ @Override
+ public void deleteAll(List taskListDeleted) {
+ taskRepository.deleteAll(taskListDeleted);
+ }
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToNext(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.NEXT,
- task.getContext()
- );
- task.moveToNext();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to next: " + task.outTaskstate());
- return task;
- }
+ @Override
+ public void saveAll(List taskListChanged) {
+ taskRepository.saveAll(taskListChanged);
+ }
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToWaiting(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.WAITING,
- task.getContext()
- );
- task.moveToWaiting();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to next: " + task.outTaskstate());
- return task;
- }
+ @Override
+ public List findByTaskStateAndContextOrderByOrderIdTaskStateAsc(TaskState completed, Context context) {
+ return taskRepository.findByTaskStateAndContextOrderByOrderIdTaskStateAsc(completed, context);
+ }
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToSomeday(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.SOMEDAY,
- task.getContext()
- );
- task.moveToSomeday();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to someday: " + task.outTaskstate());
- return task;
- }
-
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToFocus(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.FOCUS,
- task.getContext()
- );
- task.moveToFocus();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to focus: " + task.outTaskstate());
- return task;
- }
+ @Override
+ public List findByTaskStateAndContext(TaskState trash, Context context) {
+ return taskRepository.findByTaskStateAndContext(trash,context);
+ }
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToCompleted(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.COMPLETED,
- task.getContext()
- );
- task.moveToCompletedTasks();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to completed: " + task.outTaskstate());
- return task;
- }
-
- @Override
- @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
- public Task moveTaskToTrash(Task task) {
- long newOrderIdTaskState = this.getMaxOrderIdTaskState(
- TaskState.TRASH,
- task.getContext()
- );
- task.moveToTrash();
- task.setOrderIdTaskState(++newOrderIdTaskState);
- task = taskRepository.saveAndFlush(task);
- log.info("moved to trash: " + task.outTaskstate());
- return task;
- }
}
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java
index aebb322a..00ec3db9 100644
--- a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/TaskStateTaskController.java
@@ -15,6 +15,7 @@
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskEnergy;
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService;
import org.woehlke.java.simpleworklist.domain.db.data.task.TaskTime;
+import org.woehlke.java.simpleworklist.domain.meso.move.MoveTaskService;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.MoveTaskToTaskInTaskstateService;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState;
import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TransformTaskIntoProjektService;
@@ -39,15 +40,17 @@
public class TaskStateTaskController extends AbstractController {
private final MoveTaskToTaskInTaskstateService moveTaskToTaskInTaskstateService;
+ private final MoveTaskService moveTaskService;
private final TaskService taskService;
private final TransformTaskIntoProjektService transformTaskIntoProjektService;
@Autowired
public TaskStateTaskController(
- MoveTaskToTaskInTaskstateService moveTaskToTaskInTaskstateService, TaskService taskService,
- TransformTaskIntoProjektService transformTaskIntoProjektService) {
+ MoveTaskToTaskInTaskstateService moveTaskToTaskInTaskstateService, MoveTaskService moveTaskService, TaskService taskService,
+ TransformTaskIntoProjektService transformTaskIntoProjektService) {
this.moveTaskToTaskInTaskstateService = moveTaskToTaskInTaskstateService;
- this.taskService = taskService;
+ this.moveTaskService = moveTaskService;
+ this.taskService = taskService;
this.transformTaskIntoProjektService = transformTaskIntoProjektService;
}
@@ -211,7 +214,7 @@ public final String moveTaskToAnotherProject(
@NotNull @ModelAttribute("userSession") UserSessionBean userSession,
Model model
) {
- task = taskService.moveTaskToAnotherProject(task,project);
+ task = moveTaskService.moveTaskToAnotherProject(task,project);
userSession.setLastProjectId(project.getId());
model.addAttribute("userSession",userSession);
model.addAttribute("dataPage", true);
@@ -224,7 +227,7 @@ public final String moveTaskToRootProject(
@NotNull @ModelAttribute("userSession") UserSessionBean userSession,
Model model
) {
- task = taskService.moveTaskToRootProject(task);
+ task = moveTaskService.moveTaskToRootProject(task);
userSession.setLastProjectId(0L);
model.addAttribute("userSession",userSession);
model.addAttribute("dataPage", true);
@@ -238,7 +241,7 @@ public final String moveTaskToInbox(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to inbox");
- task = taskService.moveTaskToInbox(task);
+ task = moveTaskService.moveTaskToInbox(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -251,7 +254,7 @@ public final String moveTaskToToday(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to today");
- task = taskService.moveTaskToToday(task);
+ task = moveTaskService.moveTaskToToday(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -264,7 +267,7 @@ public final String moveTaskToNext(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to next");
- task = taskService.moveTaskToNext(task);
+ task = moveTaskService.moveTaskToNext(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -277,7 +280,7 @@ public final String moveTaskToWaiting(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to waiting");
- task = taskService.moveTaskToWaiting(task);
+ task = moveTaskService.moveTaskToWaiting(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -290,7 +293,7 @@ public final String moveTaskToSomeday(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to someday");
- task = taskService.moveTaskToSomeday(task);
+ task = moveTaskService.moveTaskToSomeday(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -303,7 +306,7 @@ public final String moveTaskToFocus(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to focus");
- task = taskService.moveTaskToFocus(task);
+ task = moveTaskService.moveTaskToFocus(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -316,7 +319,7 @@ public final String moveTaskToCompleted(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to completed");
- task = taskService.moveTaskToCompleted(task);
+ task = moveTaskService.moveTaskToCompleted(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -329,7 +332,7 @@ public final String moveTaskToTrash(
Model model
) {
log.info("dragged and dropped "+task.getId()+" to trash");
- task = taskService.moveTaskToTrash(task);
+ task = moveTaskService.moveTaskToTrash(task);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return task.getTaskState().getUrl();
@@ -341,7 +344,7 @@ public final String moveAllCompletedToTrash(
Model model
) {
Context context = super.getContext(userSession);
- taskService.moveAllCompletedToTrash(context);
+ moveTaskService.moveAllCompletedToTrash(context);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return "redirect:/taskstate/trash";
@@ -353,7 +356,7 @@ public final String emptyTrash(
Model model
) {
Context context = super.getContext(userSession);
- taskService.emptyTrash(context);
+ moveTaskService.emptyTrash(context);
model.addAttribute("userSession", userSession);
model.addAttribute("dataPage", true);
return "redirect:/taskstate/trash";
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/move/MoveTaskService.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/move/MoveTaskService.java
new file mode 100644
index 00000000..8b710e8b
--- /dev/null
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/move/MoveTaskService.java
@@ -0,0 +1,33 @@
+package org.woehlke.java.simpleworklist.domain.meso.move;
+
+import org.woehlke.java.simpleworklist.domain.db.data.Context;
+import org.woehlke.java.simpleworklist.domain.db.data.Project;
+import org.woehlke.java.simpleworklist.domain.db.data.Task;
+
+public interface MoveTaskService {
+
+ Task moveTaskToAnotherProject(Task task, Project project);
+
+ Task moveTaskToRootProject(Task task);
+
+ Task moveTaskToInbox(Task task);
+
+ Task moveTaskToToday(Task task);
+
+ Task moveTaskToNext(Task task);
+
+ Task moveTaskToWaiting(Task task);
+
+ Task moveTaskToSomeday(Task task);
+
+ Task moveTaskToFocus(Task task);
+
+ Task moveTaskToCompleted(Task task);
+
+ Task moveTaskToTrash(Task task);
+
+ void moveAllCompletedToTrash(Context context);
+
+ void emptyTrash(Context context);
+
+}
diff --git a/src/main/java/org/woehlke/java/simpleworklist/domain/meso/move/MoveTaskServiceImpl.java b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/move/MoveTaskServiceImpl.java
new file mode 100644
index 00000000..cc658bc1
--- /dev/null
+++ b/src/main/java/org/woehlke/java/simpleworklist/domain/meso/move/MoveTaskServiceImpl.java
@@ -0,0 +1,209 @@
+package org.woehlke.java.simpleworklist.domain.meso.move;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.woehlke.java.simpleworklist.domain.db.data.Context;
+import org.woehlke.java.simpleworklist.domain.db.data.Project;
+import org.woehlke.java.simpleworklist.domain.db.data.Task;
+import org.woehlke.java.simpleworklist.domain.db.data.task.TaskService;
+import org.woehlke.java.simpleworklist.domain.meso.taskworkflow.TaskState;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Service
+public class MoveTaskServiceImpl implements MoveTaskService {
+
+ private final TaskService taskService;
+
+ @Autowired
+ public MoveTaskServiceImpl(TaskService taskService) {
+ this.taskService = taskService;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToRootProject(@Valid Task task) {
+ task.moveTaskToRootProject();
+ long maxOrderIdProject = taskService.getMaxOrderIdProjectRoot(task.getContext());
+ task.setOrderIdProject(++maxOrderIdProject);
+ return taskService.saveAndFlush(task);
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToAnotherProject( @Valid Task task,@Valid Project project) {
+ boolean okContext = task.hasSameContextAs(project);
+ if(okContext) {
+ task.moveTaskToAnotherProject(project);
+ long maxOrderIdProject = taskService.getMaxOrderIdProject(
+ task.getProject(),
+ task.getContext()
+ );
+ task.setOrderIdProject(++maxOrderIdProject);
+ taskService.saveAndFlush(task);
+ }
+ return task;
+ }
+
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToInbox(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.INBOX,
+ task.getContext()
+ );
+ task.moveToInbox();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to inbox: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToToday(Task task) {
+ Date now = new Date();
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.TODAY,
+ task.getContext()
+ );
+ task.moveToToday();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to today: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToNext(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.NEXT,
+ task.getContext()
+ );
+ task.moveToNext();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to next: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToWaiting(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.WAITING,
+ task.getContext()
+ );
+ task.moveToWaiting();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to next: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToSomeday(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.SOMEDAY,
+ task.getContext()
+ );
+ task.moveToSomeday();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to someday: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToFocus(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.FOCUS,
+ task.getContext()
+ );
+ task.moveToFocus();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to focus: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToCompleted(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.COMPLETED,
+ task.getContext()
+ );
+ task.moveToCompletedTasks();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to completed: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public Task moveTaskToTrash(Task task) {
+ long newOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.TRASH,
+ task.getContext()
+ );
+ task.moveToTrash();
+ task.setOrderIdTaskState(++newOrderIdTaskState);
+ task = taskService.saveAndFlush(task);
+ log.info("moved to trash: " + task.outTaskstate());
+ return task;
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public void moveAllCompletedToTrash( Context context) {
+ long maxOrderIdTaskState = taskService.getMaxOrderIdTaskState(
+ TaskState.TRASH,
+ context
+ );
+ long newOrderIdTaskState = maxOrderIdTaskState;
+ List taskListCompleted = taskService.findByTaskStateAndContextOrderByOrderIdTaskStateAsc(
+ TaskState.COMPLETED,
+ context
+ );
+ for (Task task : taskListCompleted) {
+ newOrderIdTaskState++;
+ task.setOrderIdTaskState(newOrderIdTaskState);
+ task.moveToTrash();
+ }
+ taskService.saveAll(taskListCompleted);
+ }
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
+ public void emptyTrash( Context context) {
+ List taskList = taskService.findByTaskStateAndContext(
+ TaskState.TRASH,
+ context
+ );
+ List taskListChanged = new ArrayList<>(taskList.size());
+ for(Task task: taskList){
+ task.emptyTrash();
+ taskListChanged.add(task);
+ }
+ taskService.saveAll(taskListChanged);
+ List taskListDeleted = taskService.findByTaskStateAndContext(
+ TaskState.DELETED,
+ context
+ );
+ taskService.deleteAll(taskListDeleted);
+ }
+}