/** * Licensed to Apereo under one or more contributor license * agreements. See the NOTICE file distributed with this work * for additional information regarding copyright ownership. * Apereo licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a * copy of the License at the following location: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.jasig.portlet.degreeprogress.mvc.portlet; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.portlet.PortletPreferences; import javax.portlet.PortletRequest; import org.apache.commons.lang.StringUtils; import org.jasig.portlet.courses.dao.ICoursesDao; import org.jasig.portlet.degreeprogress.dao.IDegreeProgramDao; import org.jasig.portlet.degreeprogress.dao.IDegreeProgressDao; import org.jasig.portlet.degreeprogress.dao.WhatIfRequest; import org.jasig.portlet.degreeprogress.model.DegreeProgramSummary; import org.jasig.portlet.degreeprogress.model.ProgramComponent; import org.jasig.portlet.degreeprogress.model.xml.DegreeProgressReport; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.UncategorizedSQLException; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.portlet.ModelAndView; @Controller @RequestMapping("VIEW") public class DegreeProgressController { public static final String PREFERENCE_INFORMATION_LINK = "DegreeProgress.INFORMATION_LINK"; public static final String PREFERENCE_INFORMATION_LINK_DEFAULT = "#;"; private IDegreeProgressDao degreeProgressDao; @Autowired(required = true) public void setDegreeProgressDao(IDegreeProgressDao degreeProgressDao) { this.degreeProgressDao = degreeProgressDao; } private IDegreeProgramDao degreeProgramDao; @Autowired(required = true) public void setDegreeProgramDao(IDegreeProgramDao degreeProgramDao) { this.degreeProgramDao = degreeProgramDao; } private ICoursesDao coursesDao; @Autowired(required = true) public void setCoursesDao(ICoursesDao coursesDao) { this.coursesDao = coursesDao; } @RequestMapping public ModelAndView getMainView(PortletRequest request) { Map<String, Object> model = new HashMap<String, Object>(); PortletPreferences preferences = request.getPreferences(); model.put("terms", degreeProgramDao.getEntryTerms()); model.put("infoLink",preferences.getValue(PREFERENCE_INFORMATION_LINK,PREFERENCE_INFORMATION_LINK_DEFAULT)); return new ModelAndView("selectReport",model); /* Boolean webEnabled = degreeProgressDao.getWebEnabled(request); if (webEnabled == null) { return new ModelAndView("error", model); } if (webEnabled) { return new ModelAndView("selectReport", model); } else { return new ModelAndView("selectWhatIf", model); } */ } @RequestMapping(params = "action=getScenario") public String showDegreeProgressForm(Model model, PortletRequest request) { try { String currentTerm = coursesDao.getTermList(request).getCurrentTerm().getCode(); if (!model.containsAttribute("whatIfForm")) { WhatIfRequest whatIfRequest = degreeProgressDao.createWhatIfRequest(request); whatIfRequest.setCampus("1"); whatIfRequest.setCurrentTerm(currentTerm); model.addAttribute("whatIfForm", whatIfRequest); } model.addAttribute("campuses", degreeProgramDao.getCampuses()); model.addAttribute("colleges", degreeProgramDao.getColleges()); model.addAttribute("concentrations", degreeProgramDao.getConcentrations()); model.addAttribute("degrees", degreeProgramDao.getDegrees()); model.addAttribute("departments", degreeProgramDao.getDepartments()); model.addAttribute("entryTerms", degreeProgramDao.getEntryTerms()); model.addAttribute("evaluationTerms", degreeProgramDao.getEvaluationTerms()); model.addAttribute("levels", degreeProgramDao.getLevels()); model.addAttribute("minors", degreeProgramDao.getMinors()); model.addAttribute("programs", degreeProgramDao.getPrograms(currentTerm)); return "whatIf"; } catch (Exception e) { System.out.println(e); return "error"; } } @RequestMapping(params="action=showWhatIf") public ModelAndView showWhatIfProgress(PortletRequest request, @ModelAttribute("whatIfForm") WhatIfRequest whatIfRequest) { Map<String, Object> model = new HashMap<String, Object>(); String err; try{ DegreeProgressReport report = degreeProgressDao .getWhatIfReport(whatIfRequest); model.put("report", report); DegreeProgramSummary summary = new DegreeProgramSummary(); List<ProgramComponent> programs = degreeProgramDao .getPrograms(whatIfRequest.getEntryTerm()); for (ProgramComponent program : programs) { if (program.getKey().equals(whatIfRequest.getProgram())) { summary.setProgram(program.getName()); break; } } List<ProgramComponent> majors = degreeProgramDao .getMajors(whatIfRequest.getProgram()); for (ProgramComponent major : majors) { if (major.getKey().equals(whatIfRequest.getMajor())) { summary.getMajors().add(major); break; } } if (StringUtils.isNotBlank(whatIfRequest.getMajor2())) { for (ProgramComponent major : majors) { if (major.getKey().equals(whatIfRequest.getMajor2())) { summary.getMajors().add(major); break; } } } List<ProgramComponent> minors = degreeProgramDao.getMinors(); if (StringUtils.isNotBlank(whatIfRequest.getMinor())) { for (ProgramComponent minor : minors) { if (minor.getKey().equals(whatIfRequest.getMinor())) { summary.getMinors().add(minor); break; } } } if (StringUtils.isNotBlank(whatIfRequest.getMinor2())) { for (ProgramComponent minor : minors) { if (minor.getKey().equals(whatIfRequest.getMinor2())) { summary.getMinors().add(minor); break; } } } List<ProgramComponent> concentrations = degreeProgramDao .getConcentrations(); if (StringUtils.isNotBlank(whatIfRequest.getConcentration())) { for (ProgramComponent concentration : concentrations) { if (concentration.getKey().equals( whatIfRequest.getConcentration())) { summary.getConcentrations().add(concentration); break; } } } if (StringUtils.isNotBlank(whatIfRequest.getConcentration2())) { for (ProgramComponent concentration : concentrations) { if (concentration.getKey().equals( whatIfRequest.getConcentration2())) { summary.getConcentrations().add(concentration); break; } } } model.put("program", summary); return new ModelAndView("degreeProgress", model); } catch (EmptyResultDataAccessException e){ //No goremal record found System.out.print(e); err = "Your Banner record is not complete at this time please try again later."; model.put("err", err); return new ModelAndView("error", model); } catch (UncategorizedSQLException e){ //This is for sgastdn no record found System.out.print(e); err = "You are not a student and cannot run this portlet."; model.put("err", err); return new ModelAndView("error", model); } catch (Exception e){ System.out.print(e); e.printStackTrace(); err = "General Error\nPlease check the log."; model.put("err", err); return new ModelAndView("error", model); } } @RequestMapping(params="action=showProgress") public ModelAndView showDegreeProgress(PortletRequest request) { Map<String, Object> model = new HashMap<String, Object>(); String err; try{ DegreeProgressReport report = degreeProgressDao.getProgressReport(request); model.put("report", report); DegreeProgramSummary summary = degreeProgramDao.getProgramSummary(request); model.put("program", summary); return new ModelAndView("degreeProgress", model); } catch (EmptyResultDataAccessException e){ //No goremal record found System.out.print(e); err = "Your Banner record is not complete at this time please try again later."; model.put("err", err); return new ModelAndView("error", model); } catch (UncategorizedSQLException e){ //This is for sgastdn no record found System.out.print(e); err = "You are not a student and cannot run this portlet."; model.put("err", err); return new ModelAndView("error", model); } catch (Exception e){ System.out.print(e); err = "General Error\nPlease check the log."; model.put("err", err); return new ModelAndView("error", model); } } }