11package org .woehlke .simpleworklist .project ;
22
3- import org .slf4j .Logger ;
4- import org .slf4j .LoggerFactory ;
3+ import lombok .extern .slf4j .Slf4j ;
54import org .springframework .data .domain .Page ;
65import org .springframework .data .domain .Pageable ;
76import org .springframework .data .web .PageableDefault ;
2726/**
2827 * Created by tw on 14.02.16.
2928 */
29+ @ Slf4j
3030@ Controller
3131@ RequestMapping (value = "/project" )
3232public class ProjectController extends AbstractController {
3333
34- private static final Logger LOGGER = LoggerFactory .getLogger (ProjectController .class );
35-
3634 private final TaskService taskService ;
37-
3835 private final TaskMoveService taskMoveService ;
36+ private final ProjectService projectService ;
37+
38+ private static final long rootProjectId = 0L ;
3939
4040 @ Autowired
41- public ProjectController (TaskService taskService , TaskMoveService taskMoveService ) {
41+ public ProjectController (TaskService taskService , TaskMoveService taskMoveService , ProjectService projectService ) {
4242 this .taskService = taskService ;
4343 this .taskMoveService = taskMoveService ;
44+ this .projectService = projectService ;
4445 }
4546
4647 @ RequestMapping (value = "/root" , method = RequestMethod .GET )
@@ -100,11 +101,22 @@ public final String showProject(
100101 }
101102
102103 @ RequestMapping (value = "/add/new/project" , method = RequestMethod .GET )
103- public final String addNewProjectForm (
104+ public final String addNewTopLevelProjectForm (
104105 @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
105106 Locale locale , Model model
106107 ){
107- return addNewProjectGet (0L , userSession ,locale , model );
108+ return addNewProjectGet (rootProjectId , userSession ,locale , model );
109+ }
110+
111+
112+ @ RequestMapping (value = "/add/new/project" , method = RequestMethod .POST )
113+ public final String addNewTopLevelProjectSave (
114+ @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
115+ @ Valid Project project ,
116+ BindingResult result ,
117+ Locale locale , Model model
118+ ){
119+ return addNewProjectPost (rootProjectId , userSession , project , result , locale , model );
108120 }
109121
110122 @ RequestMapping (value = "/{thisProjectId}/move/to/{targetProjectId}" , method = RequestMethod .GET )
@@ -155,7 +167,7 @@ public final String editProjectPost(
155167 model .addAttribute ("userSession" ,userSession );
156168 if (result .hasErrors ()) {
157169 for (ObjectError e : result .getAllErrors ()) {
158- LOGGER .info (e .toString ());
170+ log .info (e .toString ());
159171 }
160172 Project thisProject = projectService .findByProjectId (projectId );
161173 Breadcrumb breadcrumb = breadcrumbService .getBreadcrumbForShowOneProject (thisProject ,locale );
@@ -204,13 +216,13 @@ public final String deleteProject(
204216 model .addAttribute ("isDeleted" ,true );
205217 } else {
206218 StringBuilder s = new StringBuilder ("Deletion rejected for this Project, because " );
207- LOGGER .info ("Deletion rejected for Project " + project .getId ());
219+ log .info ("Deletion rejected for Project " + project .getId ());
208220 if (!hasNoData ) {
209- LOGGER .warn ("Project " + project .getId () + " has actionItem" );
221+ log .warn ("Project " + project .getId () + " has actionItem" );
210222 s .append ("Project has actionItems." );
211223 }
212224 if (!hasNoChildren ) {
213- LOGGER .info ("Project " + project .getId () + " has children" );
225+ log .info ("Project " + project .getId () + " has children" );
214226 s .append ("Project has child categories." );
215227 }
216228 model .addAttribute ("message" ,s .toString ());
@@ -300,8 +312,8 @@ public final String addNewProjectPost(
300312 project .setParent (thisProject );
301313 project = projectService .saveAndFlush (project );
302314 projectId = project .getId ();
303- LOGGER .info ("project: " + project .toString ());
304- LOGGER .info ("thisProject: " + thisProject .toString ());
315+ log .info ("project: " + project .toString ());
316+ log .info ("thisProject: " + thisProject .toString ());
305317 }
306318 return "redirect:/project/" + projectId ;
307319 }
@@ -319,24 +331,24 @@ public String changeTaskOrderIdWithinAProject(
319331 userSession .setLastProjectId (sourceTask .getProject ().getId ());
320332 }
321333 model .addAttribute ("userSession" ,userSession );
322- LOGGER .info ("-------------------------------------------------" );
323- LOGGER .info (" changeTaskOrderIdWithinAProject" );
324- LOGGER .info ("-------------------------------------------------" );
325- LOGGER .info (" source Task: " +sourceTask .toString ());
326- LOGGER .info ("-------------------------------------------------" );
327- LOGGER .info (" destination Task: " +destinationTask .toString ());
328- LOGGER .info ("-------------------------------------------------" );
334+ log .info ("-------------------------------------------------" );
335+ log .info (" changeTaskOrderIdWithinAProject" );
336+ log .info ("-------------------------------------------------" );
337+ log .info (" source Task: " +sourceTask .toString ());
338+ log .info ("-------------------------------------------------" );
339+ log .info (" destination Task: " +destinationTask .toString ());
340+ log .info ("-------------------------------------------------" );
329341 String returnUrl = "redirect:/taskstate/inbox" ;
330342 boolean rootProject = sourceTask .isInRootProject ();
331343 returnUrl = "redirect:/project/0" ;
332344 if (rootProject ){
333345 taskMoveService .moveOrderIdRootProject (sourceTask , destinationTask );
334346 } else {
335347 taskMoveService .moveOrderIdProject (sourceTask , destinationTask );
336- LOGGER .info (" DONE: taskMoveService.moveOrderIdProject (2)" );
348+ log .info (" DONE: taskMoveService.moveOrderIdProject (2)" );
337349 returnUrl = "redirect:/project/" + sourceTask .getProject ().getId ();
338350 }
339- LOGGER .info ("-------------------------------------------------" );
351+ log .info ("-------------------------------------------------" );
340352 return returnUrl ;
341353 }
342354}
0 commit comments