1010import org .springframework .validation .ObjectError ;
1111import org .springframework .web .bind .annotation .*;
1212import org .woehlke .simpleworklist .common .AbstractController ;
13- import org .woehlke .simpleworklist .taskstate .TaskMoveService ;
1413import org .woehlke .simpleworklist .context .Context ;
1514import org .woehlke .simpleworklist .task .Task ;
1615import org .woehlke .simpleworklist .user .account .UserAccount ;
1716import org .woehlke .simpleworklist .breadcrumb .Breadcrumb ;
1817import org .woehlke .simpleworklist .user .UserSessionBean ;
19- import org .woehlke .simpleworklist .task .TaskService ;
2018
2119import org .springframework .beans .factory .annotation .Autowired ;
2220import javax .validation .Valid ;
3129@ RequestMapping (path = "/project" )
3230public class ProjectController extends AbstractController {
3331
34- private final TaskService taskService ;
35- private final TaskMoveService taskMoveService ;
36- private final ProjectService projectService ;
37-
38- private static final long rootProjectId = 0L ;
32+ private final ProjectControllerService projectControllerService ;
3933
4034 @ Autowired
41- public ProjectController (TaskService taskService , TaskMoveService taskMoveService , ProjectService projectService ) {
42- this .taskService = taskService ;
43- this .taskMoveService = taskMoveService ;
44- this .projectService = projectService ;
45- }
46-
47- @ RequestMapping (path = "/root" , method = RequestMethod .GET )
48- public final String showRootProject (
49- @ PageableDefault (sort = "orderIdProject" ) Pageable pageable ,
50- @ RequestParam (required = false ) String message ,
51- @ RequestParam (required = false ) boolean isDeleted ,
52- @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
53- Locale locale , Model model ) {
54- log .info ("/project/root" );
55- Context context = super .getContext (userSession );
56- userSession .setLastProjectId (0L );
57- model .addAttribute ("userSession" ,userSession );
58- Page <Task > taskPage = taskService .findByRootProject (context ,pageable );
59- Breadcrumb breadcrumb = breadcrumbService .getBreadcrumbForShowRootProject (locale );
60- model .addAttribute ("breadcrumb" , breadcrumb );
61- model .addAttribute ("taskPage" , taskPage );
62- if (message != null ){
63- model .addAttribute ("message" ,message );
64- model .addAttribute ("isDeleted" ,isDeleted );
65- model .addAttribute ("myTaskState" ,"PROJECT" );
66- }
67- return "project/root" ;
35+ public ProjectController (ProjectControllerService projectControllerService ) {
36+ this .projectControllerService = projectControllerService ;
6837 }
6938
7039 @ RequestMapping (path = "/{projectId}" , method = RequestMethod .GET )
@@ -102,37 +71,15 @@ public final String showProject(
10271 return "project/show" ;
10372 }
10473
105- @ RequestMapping (path = "/add/new/project" , method = RequestMethod .GET )
106- public final String addNewTopLevelProjectForm (
107- @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
108- Locale locale , Model model
109- ){
110- log .info ("/project/add/new/project (GET)" );
111- addNewProject (rootProjectId , userSession , locale , model );
112- return "project/addToplevel" ;
113- }
114-
115-
116- @ RequestMapping (path = "/add/new/project" , method = {RequestMethod .POST , RequestMethod .PUT })
117- public final String addNewTopLevelProjectSave (
118- @ Valid Project project ,
119- @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
120- BindingResult result ,
121- Locale locale , Model model
122- ){
123- log .info ("/project/add/new/project (POST)" );
124- return addNewProjectPersist ( rootProjectId , userSession , project ,
125- result , locale , model , "project/addToplevel" );
126- }
127-
12874 @ RequestMapping (path = "/{projectId}/add/new/project" , method = RequestMethod .GET )
12975 public final String addNewSubProjectGet (
13076 @ PathVariable long projectId ,
13177 @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
13278 Locale locale , Model model
13379 ) {
13480 log .info ("private addNewProjectGet (GET) projectId=" +projectId );
135- addNewProject (projectId , userSession , locale , model );
81+ Context context = super .getContext (userSession );
82+ projectControllerService .addNewProject (projectId , userSession , context , locale , model );
13683 return "project/add" ;
13784 }
13885
@@ -144,7 +91,8 @@ public final String addNewSubProjectPost(
14491 BindingResult result ,
14592 Locale locale , Model model ) {
14693 log .info ("private addNewProjectPost (POST) projectId=" +projectId +" " +project .toString ());
147- return addNewProjectPersist ( projectId , userSession , project ,
94+ Context context = super .getContext (userSession );
95+ return projectControllerService .addNewProjectPersist ( projectId , userSession , project , context ,
14896 result , locale , model ,"project/add" );
14997 }
15098
@@ -268,118 +216,4 @@ public final String deleteProject(
268216 return "redirect:/project/" + newProjectId ;
269217 }
270218
271-
272- private final void addNewProject (
273- long projectId ,
274- UserSessionBean userSession ,
275- Locale locale ,
276- Model model
277- ) {
278- log .info ("private addNewProject projectId=" +projectId );
279- Context context = super .getContext (userSession );
280- UserAccount userAccount = context .getUserAccount ();
281- userSession .setLastProjectId (projectId );
282- model .addAttribute ("userSession" ,userSession );
283- Project thisProject = null ;
284- Project project = null ;
285- if (projectId == 0 ) {
286- thisProject = new Project ();
287- thisProject .setId (0L );
288- project = Project .newRootProjectFactory (userAccount );
289- if (userSession .getContextId () == 0L ){
290- model .addAttribute ("mustChooseArea" , true );
291- project .setContext (userAccount .getDefaultContext ());
292- } else {
293- project .setContext (context );
294- }
295- } else {
296- thisProject = projectService .findByProjectId (projectId );
297- project = Project .newProjectFactory (thisProject );
298- }
299- Breadcrumb breadcrumb = breadcrumbService .getBreadcrumbForShowOneProject (thisProject ,locale );
300- model .addAttribute ("breadcrumb" , breadcrumb );
301- model .addAttribute ("thisProject" , thisProject );
302- model .addAttribute ("project" , project );
303- }
304-
305- private String addNewProjectPersist (
306- long projectId ,
307- UserSessionBean userSession ,
308- Project project ,
309- BindingResult result ,
310- Locale locale , Model model ,
311- String template
312- ){
313- log .info ("private addNewProjectPersist projectId=" +projectId +" " +project .toString ());
314- Context context = super .getContext (userSession );
315- UserAccount userAccount = context .getUserAccount ();
316- userSession .setLastProjectId (projectId );
317- model .addAttribute ("userSession" ,userSession );
318- if (result .hasErrors ()){
319- Project thisProject = null ;
320- if (projectId == 0 ) {
321- thisProject = new Project ();
322- thisProject .setId (0L );
323- } else {
324- thisProject = projectService .findByProjectId (projectId );
325- }
326- Breadcrumb breadcrumb = breadcrumbService .getBreadcrumbForShowOneProject (thisProject ,locale );
327- model .addAttribute ("breadcrumb" , breadcrumb );
328- model .addAttribute ("thisProject" , thisProject );
329- model .addAttribute ("project" , project );
330- return template ;
331- } else {
332- if (projectId == 0 ) {
333- if (userSession .getContextId ()>0 ) {
334- project .setContext (context );
335- }
336- project = projectService .saveAndFlush (project );
337- projectId = project .getId ();
338- } else {
339- Project thisProject = projectService .findByProjectId (projectId );
340- List <Project > children = thisProject .getChildren ();
341- children .add (project );
342- thisProject .setChildren (children );
343- project .setParent (thisProject );
344- project = projectService .saveAndFlush (project );
345- projectId = project .getId ();
346- log .info ("project: " + project .toString ());
347- log .info ("thisProject: " + thisProject .toString ());
348- }
349- return "redirect:/project/" + projectId ;
350- }
351- }
352-
353- @ RequestMapping (path = "/task/{sourceTaskId}/changeorderto/{destinationTaskId}" , method = RequestMethod .GET )
354- public String changeTaskOrderIdWithinAProject (
355- @ PathVariable ("sourceTaskId" ) Task sourceTask ,
356- @ PathVariable ("destinationTaskId" ) Task destinationTask ,
357- @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
358- Locale locale , Model model
359- ){
360- Context context = super .getContext (userSession );
361- if (!sourceTask .isInRootProject ()){
362- userSession .setLastProjectId (sourceTask .getProject ().getId ());
363- }
364- model .addAttribute ("userSession" ,userSession );
365- log .info ("-------------------------------------------------" );
366- log .info (" changeTaskOrderIdWithinAProject" );
367- log .info ("-------------------------------------------------" );
368- log .info (" source Task: " +sourceTask .toString ());
369- log .info ("-------------------------------------------------" );
370- log .info (" destination Task: " +destinationTask .toString ());
371- log .info ("-------------------------------------------------" );
372- String returnUrl = "redirect:/taskstate/inbox" ;
373- boolean rootProject = sourceTask .isInRootProject ();
374- returnUrl = "redirect:/project/0" ;
375- if (rootProject ){
376- taskMoveService .moveOrderIdRootProject (sourceTask , destinationTask );
377- } else {
378- taskMoveService .moveOrderIdProject (sourceTask , destinationTask );
379- log .info (" DONE: taskMoveService.moveOrderIdProject (2)" );
380- returnUrl = "redirect:/project/" + sourceTask .getProject ().getId ();
381- }
382- log .info ("-------------------------------------------------" );
383- return returnUrl ;
384- }
385219}
0 commit comments