org.jasig.portlet.degreeprogress.mvc.portlet.DegreeProgressController.java Source code

Java tutorial

Introduction

Here is the source code for org.jasig.portlet.degreeprogress.mvc.portlet.DegreeProgressController.java

Source

/**
 * 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);

        }
    }

}