be.thomasmore.service.FileUploadServiceImp1.java Source code

Java tutorial

Introduction

Here is the source code for be.thomasmore.service.FileUploadServiceImp1.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package be.thomasmore.service;

import be.thomasmore.model.Klas;
import be.thomasmore.model.Score;
import be.thomasmore.model.Student;
import be.thomasmore.model.Test;
import be.thomasmore.model.Vak;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.primefaces.event.FileUploadEvent;

/**
 *
 * @author Maarten
 */
@Stateless
public class FileUploadServiceImp1 implements FileUploadService {

    @PersistenceContext(name = "ScorePU")
    private EntityManager em;

    List<Student> studenten = new ArrayList<Student>();
    List<Score> scores = new ArrayList<Score>();
    Test test;
    Klas klas;
    Vak vak;
    String message;

    public void clearVars() {
        studenten.clear();
        scores.clear();
        test = new Test();
        klas = new Klas();
        vak = new Vak();
        message = new String();
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public void handleFileUpload(FileUploadEvent event) {
        clearVars();
        InputStream file;
        XSSFWorkbook workbook = null;
        try {
            //geupload excel bestand inlezen
            file = event.getFile().getInputstream();
            workbook = new XSSFWorkbook(file);
            XSSFSheet sheet = workbook.getSheetAt(0);

            //de excell overlopen en de gegevens eruit halen
            //klas ophalen
            int i = 0;
            XSSFRow row = sheet.getRow(i++);
            klas.setNaam(row.getCell(1).getStringCellValue());// =>naam klas (bv 5a)
            //vak ophalen
            row = sheet.getRow(i++);
            vak.setNaam(row.getCell(1).getStringCellValue());// => naam vak (bv java)
            //test ophalen
            row = sheet.getRow(i++);
            test.setNaam(row.getCell(1).getStringCellValue()); // => naam test
            row = sheet.getRow(i++);
            test.setTotaal((int) row.getCell(1).getNumericCellValue());// => totaal test
            //vak.setTesten(new ArrayList<Test>(test));
            //test.setVak(vak);
            i += 2;
            //studenten +scores ophalen
            while (i <= sheet.getLastRowNum()) {
                row = sheet.getRow(i++);
                Student student = new Student();
                student.setStudentennummer(String.valueOf((int) row.getCell(0).getNumericCellValue()));
                student.setNaam(row.getCell(1).getStringCellValue());
                Score score = new Score();
                score.setKlas(klas);
                score.setStudent(student);
                score.setTest(test);
                score.setScore((int) row.getCell(2).getNumericCellValue());
                scores.add(score);
            }
            test.setScores(scores);
            klas.setScores(scores);

            // klas.setStudenten(studenten);
        } catch (IOException e) {
            // facesContext
            //   .addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error reading file" + e, null));
            e.printStackTrace();
        }
    }

    @Override
    public List<Student> getStudentenUpload() {
        return studenten;
    }

    @Override
    public List<Score> getscoresUpload() {
        return scores;
    }

    @Override
    public Test getTestUpload() {
        return test;
    }

    @Override
    public Klas getKlasUpload() {
        return klas;
    }

    @Override
    public Vak getVakUpload() {
        return vak;
    }

    @Override
    public void submitToDb() {

        //klas opvragen
        if (getKlasDb(klas.getNaam()) == null) {
            message = "klas " + klas.getNaam() + " is niet gevondren";
        } else {
            klas = getKlasDb(klas.getNaam());
        }

        if (message.equals("")) {
            //        //vak opvragen
            if (getVakDb(vak.getNaam()) == null) {
                message = "vak " + vak.getNaam() + "is niet gevonden";
            } else {
                vak = getVakDb(vak.getNaam());
            }

            if (message.equals("")) {
                //        //test aan de database toevoegen
                Test submitTest = new Test();
                submitTest.setKlas(klas);
                submitTest.setNaam(test.getNaam());
                submitTest.setTotaal(test.getTotaal());
                submitTest.setVak(vak);
                submitTest.setJaar(klas.getJaar());
                em.persist(submitTest);

                for (Score score : scores) {
                    Student student = new Student();
                    if (getStudent(score.getStudent().getStudentennummer()) == null) {
                        message = "De student met studentennummer " + score.getStudent().getStudentennummer()
                                + "is niet gevonden" + ". De score van die student kan niet worden toegevoegd.";
                    } else {
                        student = getStudent(score.getStudent().getStudentennummer());
                        score.setStudent(student);
                        score.setKlas(klas);
                        score.setTest(submitTest);
                        em.persist(score);
                    }

                }
                if (message.equals("")) {
                    message = "De scores zijn toegevoegd.";
                }
            }
        }
    }

    @Override
    public Klas getKlasDb(String klasNaam) {
        Query q = em.createQuery("SELECT k FROM Klas k where k.naam='" + klasNaam + "'");
        if (q.getResultList().isEmpty()) {
            return null;
        } else {
            return (Klas) q.getResultList().get(0);
        }
    }

    @Override
    public Vak getVakDb(String vakNaam) {
        Query q = em.createQuery("SELECT v FROM Vak v where v.naam='" + vakNaam + "'");
        if (q.getResultList().isEmpty()) {
            return null;
        } else {
            return (Vak) q.getResultList().get(0);
        }
    }

    @Override
    public Student getStudent(String studentnr) {
        Query q = em.createQuery("SELECT s FROM Student s where s.studentennummer='" + studentnr + "'");
        if (q.getResultList().isEmpty()) {
            return null;
        } else {
            return (Student) q.getResultList().get(0);
        }
    }

    @Override
    public Test getTestDb(Test test) {
        //---------------------------
        //todo: nog controleren op klas, vak en totaal
        //--------------------------------
        Query q = em.createQuery("SELECT t FROM Test t where t.naam='" + test.getNaam() + "'");
        return (Test) q.getSingleResult();
    }

}