Skip to content

Commit e087af0

Browse files
committed
work in progress
1 parent d06521c commit e087af0

File tree

3 files changed

+55
-10
lines changed

3 files changed

+55
-10
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,13 @@ List<Task> getTasksByOrderIdProjectBetweenLowerTaskAndHigherTask(
5454
@Param("context") Context context
5555
);
5656

57+
@Query("select t from Task t"
58+
+ " where t.orderIdProject > :lowerOrderIdProject and t.orderIdProject < :higherOrderIdProject"
59+
+ " and t.project is null and t.context = :context ")
60+
List<Task> getTasksByOrderIdProjectRootBetweenLowerTaskAndHigherTask(
61+
@Param("lowerOrderIdProject") long lowerOrderIdProject,
62+
@Param("higherOrderIdProject") long higherOrderIdProject,
63+
@Param("context") Context context
64+
);
65+
5766
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ public interface TaskService {
3333
void moveAllCompletedToTrash(Context context);
3434
void emptyTrash(Context context);
3535

36-
3736
void moveTaskToTaskAndChangeTaskOrderInTaskstate(Task sourceTask, Task destinationTask);
3837
void moveTaskToTaskAndChangeTaskOrderInProject(Task sourceTask, Task destinationTask);
3938
void moveTaskToTaskAndChangeTaskOrderInProjectRoot(Task sourceTask, Task destinationTask);

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

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -315,11 +315,9 @@ public void moveTaskToTaskAndChangeTaskOrderInTaskstate(@NotNull Task sourceTask
315315
boolean notEquals = ! sourceTask.equalsByUniqueConstraint(destinationTask);
316316
boolean sameContext = sourceTask.hasSameContextAs(destinationTask);
317317
boolean sameTaskType = sourceTask.hasSameTaskTypetAs(destinationTask);
318-
boolean srcIsBelowDestinationTask = sourceTask.isBelowByTaskState(destinationTask);
319-
if (
320-
notEqualsId && notEquals &&
321-
sameContext && sameTaskType
322-
) {
318+
boolean go = notEqualsId && notEquals && sameContext && sameTaskType;
319+
if ( go ) {
320+
boolean srcIsBelowDestinationTask = sourceTask.isBelowByTaskState(destinationTask);
323321
if (srcIsBelowDestinationTask) {
324322
this.moveTasksDownByTaskState( sourceTask, destinationTask );
325323
} else {
@@ -335,12 +333,13 @@ public void moveTaskToTaskAndChangeTaskOrderInProjectRoot(@NotNull Task sourceTa
335333
boolean destinationTaskRoot = destinationTask.isInRootProject();
336334
boolean sameContext = sourceTask.hasSameContextAs(destinationTask);
337335
boolean sameProject = sourceTask.hasSameProjectAs(destinationTask);
338-
boolean srcIsBelowDestinationTask = sourceTask.isBelowByProject(destinationTask);
339-
if (sameContext && sameProject && sourceTaskRoot && destinationTaskRoot) {
336+
boolean go = sameContext && sameProject && sourceTaskRoot && destinationTaskRoot;
337+
if ( go ) {
338+
boolean srcIsBelowDestinationTask = sourceTask.isBelowByProject(destinationTask);
340339
if (srcIsBelowDestinationTask) {
341-
this.moveTasksDownByProject(sourceTask, destinationTask);
340+
this.moveTasksDownByProjectRoot(sourceTask, destinationTask);
342341
} else {
343-
this.moveTasksUpByProject(sourceTask, destinationTask);
342+
this.moveTasksUpByProjectRoot(sourceTask, destinationTask);
344343
}
345344
}
346345
}
@@ -437,6 +436,44 @@ private void moveTasksDownByTaskState(@NotNull Task sourceTask, @NotNull Task de
437436
taskRepository.saveAll(tasks);
438437
}
439438

439+
private void moveTasksUpByProjectRoot(@NotNull Task sourceTask, @NotNull Task destinationTask ) {
440+
Context context = sourceTask.getContext();
441+
long lowerOrderIdProject = destinationTask.getOrderIdProject();
442+
long higherOrderIdProject = sourceTask.getOrderIdProject();
443+
List<Task> tasks = taskRepository.getTasksByOrderIdProjectRootBetweenLowerTaskAndHigherTask(
444+
lowerOrderIdProject,
445+
higherOrderIdProject,
446+
context
447+
);
448+
for(Task task:tasks){
449+
task.moveUpByProject();
450+
}
451+
sourceTask.setOrderIdProject(destinationTask.getOrderIdProject());
452+
destinationTask.moveUpByProject();
453+
tasks.add(sourceTask);
454+
tasks.add(destinationTask);
455+
taskRepository.saveAll(tasks);
456+
}
457+
458+
private void moveTasksDownByProjectRoot(@NotNull Task sourceTask, @NotNull Task destinationTask) {
459+
Context context = sourceTask.getContext();
460+
long lowerOrderIdProject = sourceTask.getOrderIdProject();
461+
long higherOrderIdProject = destinationTask.getOrderIdProject();
462+
List<Task> tasks = taskRepository.getTasksByOrderIdProjectRootBetweenLowerTaskAndHigherTask(
463+
lowerOrderIdProject,
464+
higherOrderIdProject,
465+
context
466+
);
467+
for(Task task:tasks){
468+
task.moveDownByProject();
469+
}
470+
sourceTask.setOrderIdProject(destinationTask.getOrderIdProject());
471+
destinationTask.moveDownByProject();
472+
tasks.add(sourceTask);
473+
tasks.add(destinationTask);
474+
taskRepository.saveAll(tasks);
475+
}
476+
440477
private void moveTasksUpByProject(@NotNull Task sourceTask, @NotNull Task destinationTask ) {
441478
Context context = sourceTask.getContext();
442479
Project project = sourceTask.getProject();

0 commit comments

Comments
 (0)