public boolean preloadStudent() { // this.student = analyticsService.getStudenById(39); this.student = analyticsController.getStudent(); this.oLSubjects = new ListDataModel(analyticsService.getOLSubjects(student)); this.oLSubjectsEleven = new ListDataModel(analyticsService.getOLSubjectsEleven(student)); List<OLSubjectPrediction> olSubjectPredictions = new ArrayList<>(); double termMark = 0.0; Iterator<ClassroomSubject> olsubjectIterator = oLSubjects.iterator(); Iterator<ClassroomSubject> olsubjectElevenIterator = oLSubjectsEleven.iterator(); OLSubjectPrediction olSubjectPrediction = null; while (true) { List<Double> termMarks = new ArrayList<Double>(); ClassroomSubject olSubject = null; ClassroomSubject olsubjectEleven = null; if (olsubjectIterator.hasNext() && olsubjectElevenIterator.hasNext()) { olSubject = olsubjectIterator.next(); olsubjectEleven = olsubjectElevenIterator.next(); } else { break; } ArrayList<Integer> previousTermMarks = new ArrayList<>(); ArrayList<Integer> predictedTermMarksLower = new ArrayList<>(); ArrayList<Integer> predictedTermMarksUpper = new ArrayList<>(); ArrayList<Integer> range = new ArrayList<>(); olSubjectPrediction = new OLSubjectPrediction(); boolean check = true; for (int term = 1; term <= 3; term++) { termMark = analyticsService.getTermMarksForOLSub(this.student, olSubject, term); if (termMark >= 0 && termMark <= 100) { termMarks.add(termMark); int mark = (int) termMark; if (check) { previousTermMarks.add(mark); try { // range = predictNextTerm(null, 2008, 10, term, // olSubject.getSubjectIdsubject().getName(), student.getId(), previousTermMarks); if (term < 3) { range = predictNextTerm( null, 2008, 10, term + 1, olSubject.getSubjectIdsubject().getName(), student.getId(), previousTermMarks); } if (term == 3) { range = predictNextTerm( null, 2009, 11, 1, olSubject.getSubjectIdsubject().getName(), student.getId(), previousTermMarks); } } catch (Exception e) { } } } // else if (termMark == -1) { // termMarks.add(-0.1); // } else if (termMark == -2) { // termMarks.add(-0.2); // } else if (termMark == -3) { // termMarks.add(-0.3); // } else { check = false; termMark = -1.0; termMarks.add(termMark); range.add(-1); range.add(-1); olSubjectPrediction.setCheck(true); // break; } predictedTermMarksLower.add(range.get(0)); predictedTermMarksUpper.add(range.get(1)); } for (int term = 1; term <= 3; term++) { termMark = analyticsService.getTermMarksForOLSub(this.student, olsubjectEleven, term); if (termMark >= 0 && termMark <= 100) { termMarks.add(termMark); olSubjectPrediction.setCheckTermMarks(false); int mark = (int) termMark; if (check) { previousTermMarks.add(mark); try { if (term < 3) { range = predictNextTerm( null, 2008, 11, term + 1, olSubject.getSubjectIdsubject().getName(), student.getId(), previousTermMarks); } if (term == 3) { // range = predictNextTerm(null, 2008, 11, 1, // olSubject.getSubjectIdsubject().getName(), student.getId(), previousTermMarks); } } catch (Exception e) { } } } // else if (termMark == -1) { // termMarks.add(-0.1); // } else if (termMark == -2) { // termMarks.add(-0.2); // } else if (termMark == -3) { // termMarks.add(-0.3); // } else { check = false; termMark = -1.0; termMarks.add(termMark); range.add(-1); range.add(-1); olSubjectPrediction.setCheck(true); // break; } if (term < 3) { predictedTermMarksLower.add(range.get(0)); predictedTermMarksUpper.add(range.get(1)); } } olSubjectPrediction.setOlSubject(olSubject); olSubjectPrediction.setTermMarks(termMarks); olSubjectPrediction.setTermMarksUpper(predictedTermMarksUpper); olSubjectPrediction.setTermMarksLower(predictedTermMarksLower); // createLinearModelTermMarks(olSubjectPrediction); // olSubjectPrediction.setLinearModelTermMarks(linearModelTermMarks); olSubjectPredictions.add(olSubjectPrediction); } this.olSubjectPredictions = new ListDataModel<OLSubjectPrediction>(olSubjectPredictions); Iterator<OLSubjectPrediction> iterator = olSubjectPredictions.iterator(); while (iterator.hasNext()) { OLSubjectPrediction olSubjectPrediction_tmp = iterator.next(); olSubjectPrediction_tmp.setLinearModelTermMarks( createLinearModelTermMarksForOlSub(olSubjectPrediction_tmp)); } Iterator<OLSubjectPrediction> iterator1 = olSubjectPredictions.iterator(); while (iterator1.hasNext()) { OLSubjectPrediction olSubjectPrediction_tmp = iterator1.next(); // List<String> msgs = new ArrayList<>(); // String msg = olSubjectPrediction_tmp.getMsg(); if (olSubjectPrediction_tmp.isCheck()) { olSubjectPrediction_tmp.setMsg(null); olSubjectPrediction_tmp.setMsgWarning(null); olSubjectPrediction_tmp.setMsgValidation(null); continue; } // int index = 0; // while (index < olSubjectPrediction_tmp.getTermMarksLower().size()-1) { // msgs = new ArrayList<>(); int recentIndex = olSubjectPrediction_tmp.getTermMarks().size() - 1; double termMarks1; termMarks1 = olSubjectPrediction_tmp.getTermMarks().get(recentIndex - 1); double lower = olSubjectPrediction_tmp.getTermMarksLower().get(recentIndex - 2); double upper = olSubjectPrediction_tmp.getTermMarksUpper().get(recentIndex - 2); double upper_prediction = olSubjectPrediction_tmp.getTermMarksUpper().get(recentIndex - 1); double lower_prediction = olSubjectPrediction_tmp.getTermMarksUpper().get(recentIndex - 1); if (upper < upper_prediction) { olSubjectPrediction_tmp.setPrediction_msgValidation(MessageStudentHome.future_positive); olSubjectPrediction_tmp.setPrediction_msgValidation_available(true); } else if (lower > lower_prediction) { olSubjectPrediction_tmp.setPrediction_msgWarning(MessageStudentHome.future_negative); olSubjectPrediction_tmp.setPrediction_msgWarning_available(true); } else if (lower <= lower_prediction || upper_prediction <= upper) { olSubjectPrediction_tmp.setPrediction_msg(MessageStudentHome.future_information); olSubjectPrediction_tmp.setPrediction_msg_available(true); } if (upper >= termMarks1 && termMarks1 >= lower) { // index++; olSubjectPrediction_tmp.setMsg(MessageStudentHome.info_consis); olSubjectPrediction_tmp.setMsg_available(true); continue; } if (upper < termMarks1) { // msgs.add(MessageStudentHome.appreciation); olSubjectPrediction_tmp.setMsgValidation(MessageStudentHome.appreciation); olSubjectPrediction_tmp.setMsgValidation_available(true); olSubjectPrediction_tmp.setMsg(null); olSubjectPrediction_tmp.setMsgWarning(null); continue; } if (lower > termMarks1) { olSubjectPrediction_tmp.setMsgWarning(MessageStudentHome.warning); olSubjectPrediction_tmp.setMsgWarning_available(true); olSubjectPrediction_tmp.setMsg(null); olSubjectPrediction_tmp.setMsgValidation(null); continue; } else { olSubjectPrediction_tmp.setMsg_available(true); } // index++; } // olSubjectPrediction_tmp.setMsgs(msg); // } return true; }
private CartesianChartModel createLinearModelTermMarksForOlSub( OLSubjectPrediction olSubjectPrediction) { CartesianChartModel model = new CartesianChartModel(); LineChartSeries termMarks = new LineChartSeries(); LineChartSeries lowerBound = null; termMarks.setLabel("Term Marks"); if (olSubjectPrediction.getTermMarks().get(0) >= 0) { termMarks.set(1, olSubjectPrediction.getTermMarks().get(0)); } if (olSubjectPrediction.getTermMarks().get(1) >= 0) { termMarks.set(2, olSubjectPrediction.getTermMarks().get(1)); } if (olSubjectPrediction.getTermMarks().get(2) >= 0) { termMarks.set(3, olSubjectPrediction.getTermMarks().get(2)); } if (olSubjectPrediction.getTermMarks().get(3) >= 0) { termMarks.set(4, olSubjectPrediction.getTermMarks().get(3)); } if (olSubjectPrediction.getTermMarks().get(4) >= 0) { termMarks.set(5, olSubjectPrediction.getTermMarks().get(4)); } // if (olSubjectPrediction.getTermMarks().get(5) >= 0) { // termMarks.set(6, olSubjectPrediction.getTermMarks().get(5)); // } if (!olSubjectPrediction.isCheck()) { LineChartSeries upperBound = new LineChartSeries(); upperBound.setLabel("Upper Bound"); upperBound.set(2, olSubjectPrediction.getTermMarksUpper().get(0)); upperBound.set(3, olSubjectPrediction.getTermMarksUpper().get(1)); upperBound.set(4, olSubjectPrediction.getTermMarksUpper().get(2)); upperBound.set(5, olSubjectPrediction.getTermMarksUpper().get(3)); upperBound.set(6, olSubjectPrediction.getTermMarksUpper().get(4)); lowerBound = new LineChartSeries(); lowerBound.setLabel("Lower Bound"); lowerBound.set(2, olSubjectPrediction.getTermMarksLower().get(0)); lowerBound.set(3, olSubjectPrediction.getTermMarksLower().get(1)); lowerBound.set(4, olSubjectPrediction.getTermMarksLower().get(2)); lowerBound.set(5, olSubjectPrediction.getTermMarksLower().get(3)); lowerBound.set(6, olSubjectPrediction.getTermMarksLower().get(4)); model.addSeries(upperBound); } // upperBound.setMarkerStyle(); model.addSeries(termMarks); if (!olSubjectPrediction.isCheck()) { model.addSeries(lowerBound); } return model; }