Java tutorial
/* * 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(); } }