Package de.nak.notendb.action

Source Code of de.nak.notendb.action.ZeigeManipelNotenAction$ErfassungsZeile

package de.nak.notendb.action;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

import de.nak.notendb.model.Dozent;
import de.nak.notendb.model.Manipel;
import de.nak.notendb.model.Pruefungsfach;
import de.nak.notendb.model.Pruefungsleistung;
import de.nak.notendb.model.Student;
import de.nak.notendb.service.DozentService;
import de.nak.notendb.service.ManipelService;
import de.nak.notendb.service.PruefungsfachService;
import de.nak.notendb.service.PruefungsleistungService;
import de.nak.notendb.service.StudentService;

/**
* @author Nils Foßhag
*
*         Action Klasse, welche die benötigten Daten für die Anzeige Der Noten
*         zu einem Manipel und Auswahlinhalte für die Erzeugung einer Prüfung
*         bereitstellt.
*/
@SuppressWarnings("serial")
public class ZeigeManipelNotenAction extends ActionSupport implements SessionAware {
  // Services
  private DozentService dozentService;
  private PruefungsleistungService pruefungsleistungService;
  private PruefungsfachService pruefungsfachService;
  private StudentService studentService;
  private ManipelService manipelService;

  // Value-Initialisierung fürs View:
  private Date datum;
  private String uhrzeit;

  // Vom View erwartete Attribute
  private Long selektierteManipelId;
  private Long selektiertePruefungsfachId;

  private Map<String, Object> session;

  /**
   * Die Dozentenliste wird geladen und die View-Eingabeparameter werden
   * initialisiert. Die Tabelle zur Pflege der Noten wird in Form einer Liste
   * von "Erfassungszeilen" in der Session bereitgestellt, um bei Fehleingaben
   * die Werte weiterhin anzeigen zu können.
   */
  @Override
  public String execute() throws Exception {
    List<ErfassungsZeile> erfassungsTabelle = new ArrayList<ErfassungsZeile>();
    List<Dozent> dozenten = dozentService.ladeAlle();
    Pruefungsfach pruefungsfach = pruefungsfachService.ladeFach(selektiertePruefungsfachId);
    Manipel manipel = manipelService.ladeManipel(selektierteManipelId);
    List<Student> studenten = studentService.ladeStudentenZuManipel(selektierteManipelId);
    Collections.sort(studenten);
    for (Student s : studenten) {
      Pruefungsleistung pruefungsleistung = pruefungsleistungService.ladeAktuellGueltigeLeistungZuStudentUndFach(
          s.getId(), pruefungsfach.getId());
      if (pruefungsleistung == null) {
        pruefungsleistung = new Pruefungsleistung();
        pruefungsleistung.setStudent(s);
        erfassungsTabelle.add(new ErfassungsZeile(pruefungsleistung, true));
      } else {
        erfassungsTabelle.add(new ErfassungsZeile(pruefungsleistung, pruefungsleistungService
            .isWeitererVersuchErlaubt(pruefungsleistung)));
      }
    }

    // Initialwerte für das Folgeview setzen:
    datum = new Date();
    uhrzeit = "12:00";

    session.put("dozenten", dozenten);
    session.put("manipel", manipel);
    session.put("pruefungsfach", pruefungsfach);
    session.put("erfassungsTabelle", erfassungsTabelle);
    return SUCCESS;

  }

  public PruefungsleistungService getPruefungsleistungService() {
    return pruefungsleistungService;
  }

  public void setPruefungsleistungService(PruefungsleistungService pruefungsleistungService) {
    this.pruefungsleistungService = pruefungsleistungService;
  }

  public DozentService getDozentService() {
    return dozentService;
  }

  public void setDozentService(DozentService dozentService) {
    this.dozentService = dozentService;
  }

  public PruefungsfachService getPruefungsfachService() {
    return pruefungsfachService;
  }

  public void setPruefungsfachService(PruefungsfachService pruefungsfachService) {
    this.pruefungsfachService = pruefungsfachService;
  }

  public StudentService getStudentService() {
    return studentService;
  }

  public void setStudentService(StudentService studentService) {
    this.studentService = studentService;
  }

  public ManipelService getManipelService() {
    return manipelService;
  }

  public void setManipelService(ManipelService manipelService) {
    this.manipelService = manipelService;
  }

  public Long getSelektierteManipelId() {
    return selektierteManipelId;
  }

  public void setSelektierteManipelId(Long selektierteManipelId) {
    this.selektierteManipelId = selektierteManipelId;
  }

  public Long getSelektiertePruefungsfachId() {
    return selektiertePruefungsfachId;
  }

  public void setSelektiertePruefungsfachId(Long selektiertePruefungsfachId) {
    this.selektiertePruefungsfachId = selektiertePruefungsfachId;
  }

  @Override
  public void setSession(Map<String, Object> session) {
    this.session = session;
  }

  /**
   * @author Nils Foßhag
   *
   *         Hilfsklasse, die eine Zeile der Tabelle für das View darstellt.
   *         Um sie in der Session halten zu können muss sie Serializable
   *         sein. Zusätzlich muss sie hierfür statisch deklariert sein, um
   *         sie von der umgebenden Action zu entkoppeln.
   */
  public static class ErfassungsZeile implements Serializable {
    Pruefungsleistung pruefungsleistung;
    Boolean erfassungMoeglich;

    public ErfassungsZeile(Pruefungsleistung pruefungsleistung, Boolean erfassungMoeglich) {
      this.pruefungsleistung = pruefungsleistung;
      this.erfassungMoeglich = erfassungMoeglich;
    }

    public Pruefungsleistung getPruefungsleistung() {
      return pruefungsleistung;
    }

    public void setPruefungsleistung(Pruefungsleistung pruefungsleistung) {
      this.pruefungsleistung = pruefungsleistung;
    }

    public Boolean getErfassungMoeglich() {
      return erfassungMoeglich;
    }

    public void setErfassungMoeglich(Boolean erfassungMoeglich) {
      this.erfassungMoeglich = erfassungMoeglich;
    }

  }

  public Date getDatum() {
    return datum;
  }

  public void setDatum(Date datum) {
    this.datum = datum;
  }

  public String getUhrzeit() {
    return uhrzeit;
  }

  public void setUhrzeit(String uhrzeit) {
    this.uhrzeit = uhrzeit;
  }
}
TOP

Related Classes of de.nak.notendb.action.ZeigeManipelNotenAction$ErfassungsZeile

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.