Package de.nak.notendb.action

Source Code of de.nak.notendb.action.ZeigeNotenUebersichtAction

package de.nak.notendb.action;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

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.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 noch
*         offenen der Notenübersicht bereitstellt.
*
*         Hierfür wird eine verschachtelte HashMap verwendet die pro Student,
*         pro Prüfungsfach die aktuelle Note enthält.
*/
@SuppressWarnings("serial")
public class ZeigeNotenUebersichtAction extends ActionSupport {
  // Services
  private PruefungsleistungService pruefungsleistungService;
  private StudentService studentService;
  private PruefungsfachService pruefungsfachService;
  private ManipelService manipelService;

  // Beans
  private Manipel manipel;

  // Lists
  private List<Pruefungsfach> pruefungsfaecher;

  // Vom View erwartete Attribute
  private Long selektierteManipelId;

  // Map für die Darstellung der Übersicht
  private HashMap<Student, HashMap<Pruefungsfach, Pruefungsleistung>> uebersichtsMap;

  @Override
  public String execute() throws Exception {
    manipel = manipelService.ladeManipel(selektierteManipelId);
    List<Student> studenten = new ArrayList<Student>();
    uebersichtsMap = new LinkedHashMap<Student, HashMap<Pruefungsfach, Pruefungsleistung>>();
    pruefungsfaecher = pruefungsfachService.ladeFaecherZuManipel(selektierteManipelId);
    studenten = studentService.ladeStudentenZuManipel(selektierteManipelId);
    Collections.sort(pruefungsfaecher);
    Collections.sort(studenten);
    for (Student student : studenten) {
      HashMap<Pruefungsfach, Pruefungsleistung> noteZuFachMap = new LinkedHashMap<Pruefungsfach, Pruefungsleistung>();
      for (Pruefungsfach fach : pruefungsfaecher) {
        Pruefungsleistung leistung = pruefungsleistungService.ladeAktuellGueltigeLeistungZuStudentUndFach(
            student.getId(), fach.getId());
        if (leistung == null) {
          // Für das View wird eine leere Prüfungsleistung erzeugt
          leistung = new Pruefungsleistung();
        }
        noteZuFachMap.put(fach, leistung);
      }
      uebersichtsMap.put(student, noteZuFachMap);
    }
    return SUCCESS;
  }

  public HashMap<Student, HashMap<Pruefungsfach, Pruefungsleistung>> getUebersichtsMap() {
    return uebersichtsMap;
  }

  public void setUebersichtsMap(HashMap<Student, HashMap<Pruefungsfach, Pruefungsleistung>> uebersichtsMap) {
    this.uebersichtsMap = uebersichtsMap;
  }

  public Long getSelektierteManipelId() {
    return selektierteManipelId;
  }

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

  public PruefungsleistungService getPruefungsleistungService() {
    return pruefungsleistungService;
  }

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

  public StudentService getStudentService() {
    return studentService;
  }

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

  public PruefungsfachService getPruefungsfachService() {
    return pruefungsfachService;
  }

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

  public List<Pruefungsfach> getPruefungsfaecher() {
    return pruefungsfaecher;
  }

  public void setPruefungsfaecher(List<Pruefungsfach> pruefungsfaecher) {
    this.pruefungsfaecher = pruefungsfaecher;
  }

  public Manipel getManipel() {
    return manipel;
  }

  public void setManipel(Manipel manipel) {
    this.manipel = manipel;
  }

  public ManipelService getManipelService() {
    return manipelService;
  }

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

Related Classes of de.nak.notendb.action.ZeigeNotenUebersichtAction

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.