/** * Luo paramatrien pohjalta uusi tai tallenna vanha arvosana tietorakenteeseen. * * @param unit Yksikkö, joka tallennetaan. * @param exam Koe, johon arvosana kuuluu. * @param gradeNum Arvosana numerona. * @param student Oppilas, joka arvosanaan liittyy. * @return True, jos tallennettiin, muute false. */ public boolean saveGrade(Grade unit, Exam exam, String gradeNum, Student student) { boolean replace = false; if (unit.getRef() != null) { if (!confirmSave()) { return false; } replace = true; } Grade edit = unit; if (replace) { edit = getEditable(edit); } try { edit.parseField(FN.GRADE_GRADE, gradeNum); edit.setField(FN.GRADE_STUDENT_REF, student.getRef()); edit.setField(FN.GRADE_EXAM_REF, exam.getRef()); } catch (ParseException e) { showParseError(e); return false; } if (replace) { manager.remove(unit); } manager.add(edit); finishSave(); return true; }
/** * Luo paramatrien pohjalta uusi tai tallenna vanha oppilas tietorakenteeseen. * * @param unit Yksikkö, joka tallennetaan. * @param first Etunimet. * @param last Sukunimi. * @param id Hetu. * @return True, jos tallennettiin, muute false. */ public boolean saveStudent(Student unit, String first, String last, String id) { boolean replace = false; if (unit.getRef() != null) { if (!confirmSave()) { return false; } replace = true; } Student edit = unit; if (replace) { edit = getEditable(edit); } try { edit.parseField(FN.STUDENT_FIRSTNAME, first); edit.parseField(FN.STUDENT_LASTNAME, last); edit.parseField(FN.STUDENT_ID, id); } catch (ParseException e) { showParseError(e); return false; } if (replace) { manager.remove(unit); } manager.add(edit); finishSave(); return true; }
/** * @param exam Haluttu koe. * @return Tulos-taulukon malli, jossa on kaikki tietorakenteen parametreja osittain vastaavat * yksiköt. */ public DataTableModel<CombinedUnit> getGradeTableModel(Exam exam) { FN[] fields = {FN.STUDENT_FIRSTNAME, FN.STUDENT_LASTNAME, FN.STUDENT_ID, FN.GRADE_GRADE}; Ref ref = exam.getRef(); List<Grade> grades = manager.getGrades(ref, FN.GRADE_EXAM_REF); List<CombinedUnit> gradesAndStudents = manager.joinRefs(grades, FN.GRADE_STUDENT_REF); String[] fieldNames = {"etunimi", "sukunimi", "henkilötunnus", "arvosana"}; return new DataTableModel<>(gradesAndStudents, fields, fieldNames); }
/** * @param selectedSubject Haluttu aine. * @param date Haluttu pvm. * @return Koe-taulukon malli, jossa on kaikki tietorakenteen parametreja osittain vastaavat * yksiköt. */ public DataTableModel<CombinedUnit> getExamTableModel(Subject selectedSubject, String date) { FN[] fields = {FN.SUBJECT_NAME, FN.EXAM_DATE}; String[] fieldNames = {"aine", "päivämäärä"}; String subjectId; if (selectedSubject == null) { subjectId = ""; } else { subjectId = String.valueOf(selectedSubject.getRef()); } String[] search = {subjectId, date}; List<Exam> exams = manager.searchExams(search, new FN[] {FN.EXAM_SUBJECT_REF, FN.EXAM_DATE}); List<CombinedUnit> data = manager.joinRefs(exams, FN.EXAM_SUBJECT_REF); DataTableModel<CombinedUnit> model = new DataTableModel<>(data, fields, fieldNames); return model; }
/** @return Aine-valitsimen malli, jossa on kaikki tietorakenteen aineet. */ public DataComboBoxModel<Subject> getSubjectModel() { List<Subject> subjects = manager.getSubjects(); Object[] arr = {"Valitse aine..."}; Object[] temp = subjects.toArray(); Object[] objects = Taulukot.combine(arr, temp); return new DataComboBoxModel<>(objects); }
/** * Poista arvosana. * * @param unit Poistettava arvosana. * @return True, jos poistettiin, muuten false. */ public boolean remove(Grade unit) { Ref ref = unit.getRef(); if (confirmRemove()) { manager.poistaTulos(ref); notifySource(); return true; } return false; }
/** * Poista oppilas. * * @param unit Poistettava oppilas. * @return True, jos poistettiin, muuten false. */ public boolean remove(Student unit) { Ref ref = unit.getRef(); if (confirmRemove()) { manager.poistaOpiskelija(ref); notifySource(); return true; } return false; }
/** * @param wholeName Haluttu kokonimi järjestyksessä etunimet-sukunimi tai sukunimi-etunimet. * @param personalId Haluttu hetu. * @return Oppilas-taulukon malli, jossa on kaikki tietorakenteen parametreja osittain vastaavat * yksiköt. */ public DataTableModel<Student> getStudentTableModel(String wholeName, String personalId) { FN[] fields = {FN.STUDENT_FIRSTNAME, FN.STUDENT_LASTNAME, FN.STUDENT_ID}; String[] fieldNames = {"etunimi", "sukunimi", "henkilötunnus"}; List<Student> studentsMatchingId = manager.searchStudents(personalId, FN.STUDENT_ID); List<Student> students = Students.filterByProperty(studentsMatchingId, wholeName, FN.STUDENT_WHOLENAME); DataTableModel<Student> model = new DataTableModel<>(students, fields, fieldNames); return model; }
/** * Luo paramatrien pohjalta uusi tai tallenna vanha koe tietorakenteeseen. * * @param unit Yksikkö, joka tallennetaan. * @param date Pvm. * @param subject Aine. * @return True, jos tallennettiin, muute false. */ public boolean saveExam(Exam unit, String date, String subject) { boolean replace = false; if (unit.getRef() != null) { if (!confirmSave()) { return false; } replace = true; } Exam edit = unit; if (replace) { edit = getEditable(edit); } try { edit.parseField(FN.EXAM_DATE, date); if (subject != null) { List<Subject> match = manager.getSubjects(subject, FN.SUBJECT_NAME); Subject s; if (match.size() < 1) { s = new Subject(); s.parseField(FN.SUBJECT_NAME, subject); manager.add(s); } else { s = match.get(0); } Ref subjectRef = s.getRef(); edit.setField(FN.EXAM_SUBJECT_REF, subjectRef); } } catch (ParseException e) { showParseError(e); return false; } if (replace) { manager.remove(unit); } manager.add(edit); finishSave(); return true; }
/** Tallenna datakansioon. Raportoi virheet dialogilla. */ public void saveToStorage() { try { manager.tallenna(); } catch (StorageException e) { JOptionPane.showMessageDialog( null, "Tallentaminen ei onnistunut!" + Constants.NL + "Virheen syy: " + e.getMessage(), "Virhe tallennettaessa", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } }
/** * Tallenna datakansio (dialogissa, jos 1. tallennus). * * @return Tallennettu kansio, null jos ei mitään. */ public File saveCurrentDir() { File current = manager.getDirectory(); if (current == null) { if (fc.showSaveDialog(null) != JFileChooser.APPROVE_OPTION) { return null; } File dir = getFileDialogSelection(); saveToStorage(dir); current = dir; } else { saveToStorage(); } return current; }
/** * Lue datakansio. Raportoi virheet dialogilla. * * @param file Luettava kansio. */ public void read(File file) { try { manager.lue(file); } catch (StorageException e) { JOptionPane.showMessageDialog( null, "Kansion lukeminen ei onnistunut! Tarkista, että olet valinnut oikean kansion." + Constants.NL + "Virheen syy: " + e.getMessage(), "Virhe luettaessa", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } }
/** * Luo uusi datakansio. Vahvistaa ei-tyhjään kansioon tallentamisen dialogilla. Raportoi virheet * dialogilla. * * @param file Luotava kansio. */ public void saveNew(File file) { if (file.isDirectory() && file.listFiles().length > 0) { int answer = JOptionPane.showConfirmDialog( null, "Kansio sisältää jo tiedostoja. Jos jatkat, niiden yli kirjoitetaan. Jatketaanko?", "Jatketaanko?", JOptionPane.YES_NO_OPTION); if (answer == JOptionPane.NO_OPTION) { return; } } try { manager.tallennaUusi(file); } catch (StorageException e) { JOptionPane.showMessageDialog( null, "Tallentaminen ei onnistunut!" + Constants.NL + "Virheen syy: " + e.getMessage(), "Virhe tallennettaessa", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } }
/** @return Kaikki tietorakenteen aineet. */ public List<Subject> getSubjects() { return manager.getSubjects(); }
/** * Selvitä viitteen kohde. * * @param ref viite * @return Yksikkö, johon viite viittaa. */ public IUnit getRefTarget(Ref ref) { return manager.getRefTarget(ref); }