net.sf.sze.frontend.zeugnis.SchulamtsBemerkungController.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.sze.frontend.zeugnis.SchulamtsBemerkungController.java

Source

//BemerkungController.java
//
// Licensed under the AGPL - http://www.gnu.org/licenses/agpl-3.0.txt
// (c) SZE-Development Team
package net.sf.sze.frontend.zeugnis;

import java.util.List;

import javax.annotation.Resource;

import net.sf.sze.frontend.base.URL;
import net.sf.sze.frontend.base.URL.Common;
import net.sf.sze.model.zeugnis.SchulamtsBemerkung;
import net.sf.sze.model.zeugnis.Zeugnis;
import net.sf.sze.model.zeugnisconfig.Schulamt;
import net.sf.sze.model.zeugnisconfig.SchulamtsBemerkungsBaustein;
import net.sf.sze.service.api.zeugnis.SchulamtsBemerkungService;
import net.sf.sze.service.api.zeugnis.ZeugnisErfassungsService;
import net.sf.sze.service.api.zeugnisconfig.SchulhalbjahrService;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Controller zur Erfassung der {@link SchulamtsBemerkung}.
 *
 */
@Controller
public class SchulamtsBemerkungController {

    /**
     * View zum Editieren der Bemerkung.
     */
    private static final String EDIT_SCHULAMTS_BEMERKUNG_VIEW = "schulamtsBemerkung/editSchulamtsBemerkung";

    /**
     * The Logger for the controller.
     */
    private static final Logger LOG = LoggerFactory.getLogger(SchulamtsBemerkungController.class);

    /**
     * Der {@link SchulamtsBemerkungService}.
     */
    @Resource
    private SchulamtsBemerkungService schulamtsBemerkungService;

    /**
     * Der {@link ZeugnisErfassungsService}.
     */
    @Resource
    private ZeugnisErfassungsService zeugnisErfassungsService;

    /**
     * Der {@link SchulhalbjahrService}.
     */
    @Resource
    private SchulhalbjahrService schulhalbjahrService;

    /**
     * Der Validator.
     */
    @Resource
    private Validator validator;

    /**
     * Zeigt die Bemerkung des entsprechenden Faches der Klasse in dem Halbjahr.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @param model das Model
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CREATE, method = RequestMethod.GET)
    public String createSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId, Model model) {
        final Zeugnis zeugnis = zeugnisErfassungsService.getZeugnis(halbjahrId, schuelerId);
        final SchulamtsBemerkung schulamtsBemerkung = new SchulamtsBemerkung();
        schulamtsBemerkung.setZeugnis(zeugnis);
        fillModel(model, halbjahrId, klassenId, schuelerId, schulamtsBemerkung);
        model.addAttribute("insertUrl",
                URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CREATE, URL.Session.P_HALBJAHR_ID,
                        halbjahrId, URL.Session.P_KLASSEN_ID, klassenId, URL.Session.P_SCHUELER_ID, schuelerId));

        return EDIT_SCHULAMTS_BEMERKUNG_VIEW;
    }

    /**
     * Speichert die neu angelegte Bemerkung.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @param schulamtsBemerkung die Schulamtsbemerkung.
     * @param action die als nchstes auszufhrende Aktion.
     * @param model das Model
     * @param result das Bindingresult.
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CREATE, method = RequestMethod.POST)
    public String insertSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId,
            @ModelAttribute("schulamtsBemerkung") SchulamtsBemerkung schulamtsBemerkung, BindingResult result,
            @RequestParam(value = URL.Common.P_ACTION, required = false) String action, Model model) {
        validator.validate(schulamtsBemerkung, result);

        if (result.hasErrors()) {
            LOG.info("Fehler beim Speichern der Schulamtsbemerkung: {}", result.getAllErrors());
            model.addAttribute("insertUrl",
                    URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CREATE,
                            URL.Session.P_HALBJAHR_ID, halbjahrId, URL.Session.P_KLASSEN_ID, klassenId,
                            URL.Session.P_SCHUELER_ID, schuelerId));
            fillModel(model, halbjahrId, klassenId, schuelerId, schulamtsBemerkung);
            return EDIT_SCHULAMTS_BEMERKUNG_VIEW;
        }

        LOG.debug("Create Bemerkung: " + schulamtsBemerkung);
        schulamtsBemerkungService.save(schulamtsBemerkung);
        final String nextUrl;
        if (StringUtils.equalsIgnoreCase(action, Common.ACTION_NEXT)) {
            nextUrl = URL.redirectWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CREATE,
                    URL.Session.P_HALBJAHR_ID, halbjahrId, URL.Session.P_KLASSEN_ID, klassenId,
                    URL.Session.P_SCHUELER_ID, schuelerId);
        } else {
            nextUrl = URL.createRedirectToZeugnisUrl(halbjahrId, klassenId, schuelerId);
        }

        return nextUrl;
    }

    /**
     * Zeigt die Bemerkung des entsprechenden Faches der Klasse in dem Halbjahr.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @param schulamtsBemerkungsId die Id der Bemerkung
     * @param model das Model
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_SHOW, method = RequestMethod.GET)
    public String showSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId,
            @PathVariable(URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID) Long schulamtsBemerkungsId, Model model) {
        final SchulamtsBemerkung schulamtsBemerkung = schulamtsBemerkungService.read(schulamtsBemerkungsId);
        model.addAttribute("bemerkung", schulamtsBemerkung);
        model.addAttribute("schulhalbjahr", schulhalbjahrService.read(halbjahrId));
        model.addAttribute("cancelUrl", URL.createLinkToZeugnisUrl(halbjahrId, klassenId, schuelerId));
        model.addAttribute("editUrl",
                URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_EDIT, URL.Session.P_HALBJAHR_ID,
                        halbjahrId, URL.Session.P_KLASSEN_ID, klassenId, URL.Session.P_SCHUELER_ID, schuelerId,
                        URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID, schulamtsBemerkungsId));
        model.addAttribute("deleteUrl",
                URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_DELETE, URL.Session.P_HALBJAHR_ID,
                        halbjahrId, URL.Session.P_KLASSEN_ID, klassenId, URL.Session.P_SCHUELER_ID, schuelerId,
                        URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID, schulamtsBemerkungsId));
        return "schulamtsBemerkung/showSchulamtsBemerkung";
    }

    /**
     * Zeigt die Bemerkung des entsprechenden Faches der Klasse in dem Halbjahr.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @param schulamtsBemerkungsId die Id der Bemerkung
     * @param model das Model
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_EDIT, method = RequestMethod.GET)
    public String editSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId,
            @PathVariable(URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID) Long schulamtsBemerkungsId, Model model) {
        final SchulamtsBemerkung schulamtsBemerkung = schulamtsBemerkungService.read(schulamtsBemerkungsId);
        fillModel(model, halbjahrId, klassenId, schuelerId, schulamtsBemerkung);
        model.addAttribute("updateUrl",
                URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_EDIT, URL.Session.P_HALBJAHR_ID,
                        halbjahrId, URL.Session.P_KLASSEN_ID, klassenId, URL.Session.P_SCHUELER_ID, schuelerId,
                        URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID, schulamtsBemerkungsId));
        model.addAttribute("deleteUrl",
                URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_DELETE, URL.Session.P_HALBJAHR_ID,
                        halbjahrId, URL.Session.P_KLASSEN_ID, klassenId, URL.Session.P_SCHUELER_ID, schuelerId,
                        URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID, schulamtsBemerkungsId));
        return EDIT_SCHULAMTS_BEMERKUNG_VIEW;
    }

    /**
     * Speichert die neu angelegte Bemerkung.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @param schulamtsBemerkungsId die Id der Bemerkung
     * @param schulamtsBemerkung die SchulamtsBemerkung
     * @param result das Bindingresult.
     * @param model das Model
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_EDIT, method = RequestMethod.POST)
    public String updateSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId,
            @PathVariable(URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID) Long schulamtsBemerkungsId,
            SchulamtsBemerkung schulamtsBemerkung, BindingResult result, Model model) {
        validator.validate(schulamtsBemerkung, result);

        if (result.hasErrors()) {
            model.addAttribute("updateUrl",
                    URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_EDIT,
                            URL.Session.P_HALBJAHR_ID, halbjahrId, URL.Session.P_KLASSEN_ID, klassenId,
                            URL.Session.P_SCHUELER_ID, schuelerId, URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID,
                            schulamtsBemerkungsId));
            model.addAttribute("deleteUrl",
                    URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_DELETE,
                            URL.Session.P_HALBJAHR_ID, halbjahrId, URL.Session.P_KLASSEN_ID, klassenId,
                            URL.Session.P_SCHUELER_ID, schuelerId, URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID,
                            schulamtsBemerkungsId));
            fillModel(model, halbjahrId, klassenId, schuelerId, schulamtsBemerkung);
            return EDIT_SCHULAMTS_BEMERKUNG_VIEW;
        }

        LOG.debug("Update Bemerkung: " + schulamtsBemerkung);
        schulamtsBemerkungService.save(schulamtsBemerkung);
        return URL.createRedirectToZeugnisUrl(halbjahrId, klassenId, schuelerId);
    }

    /**
     * Brichte die Bearbeitung des SchulamtsBemerkung ab.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CANCEL, method = RequestMethod.POST)
    public String cancelEditSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId) {
        return URL.createRedirectToZeugnisUrl(halbjahrId, klassenId, schuelerId);
    }

    /**
     * Lscht die Schulamts-Bemerkung.
     * @param halbjahrId die Id des Schulhalbjahres
     * @param klassenId die Id der Klasse
     * @param schuelerId die Id des Schuelers
     * @param schulamtsBemerkungsId die Id der Bemerkung
     * @return die logische View
     */
    @RequestMapping(value = URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_DELETE, method = RequestMethod.POST)
    public String deleteSchulamtsBemerkung(@PathVariable(URL.Session.P_HALBJAHR_ID) Long halbjahrId,
            @PathVariable(URL.Session.P_KLASSEN_ID) Long klassenId,
            @PathVariable(URL.Session.P_SCHUELER_ID) Long schuelerId,
            @PathVariable(URL.ZeugnisPath.P_SCHULAMTS_BEMERKUNGS_ID) Long schulamtsBemerkungsId) {
        schulamtsBemerkungService.delete(schulamtsBemerkungsId);
        return URL.createRedirectToZeugnisUrl(halbjahrId, klassenId, schuelerId);
    }

    private void fillModel(Model model, Long halbjahrId, Long klassenId, Long schuelerId,
            SchulamtsBemerkung schulamtsBemerkung) {
        final List<SchulamtsBemerkungsBaustein> schulamtsBemerkungsBausteine = schulamtsBemerkungService
                .getAllSchulamtsBemerkungsBausteine(schulamtsBemerkung);
        final List<Schulamt> schulaemter = schulamtsBemerkungService.getAllSchulaemter(schulamtsBemerkung);
        model.addAttribute("schulamtsBemerkung", schulamtsBemerkung);
        model.addAttribute("schulhalbjahr", schulhalbjahrService.read(halbjahrId));
        model.addAttribute("cancelUrl",
                URL.filledURLWithNamedParams(URL.ZeugnisPath.SCHULAMTS_BEMERKUNG_CANCEL, URL.Session.P_HALBJAHR_ID,
                        halbjahrId, URL.Session.P_KLASSEN_ID, klassenId, URL.Session.P_SCHUELER_ID, schuelerId));
        model.addAttribute("bemerkungsBausteine", schulamtsBemerkungsBausteine);
        model.addAttribute("schulaemter", schulaemter);
    }

}