org.jasig.portlet.courses.mvc.wrapper.CourseSectionMeetingWrapper.java Source code

Java tutorial

Introduction

Here is the source code for org.jasig.portlet.courses.mvc.wrapper.CourseSectionMeetingWrapper.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.courses.mvc.wrapper;

import org.apache.commons.lang.StringUtils;
import org.jasig.portlet.courses.model.xml.CourseMeeting;
import org.jasig.portlet.courses.model.xml.CourseSection;
import org.jasig.portlet.courses.service.IURLService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.portlet.PortletPreferences;
import java.util.*;

/**
 * User: Sengupta5
 * Date: 8/26/13
 * Time: 11:41 AM
 * This Wrapper gets All the Course Meeting from the Course Section and group by Location.
 */
public class CourseSectionMeetingWrapper {
    protected final Logger logger = LoggerFactory.getLogger(getClass());

    // Matches meeting location displayName of each meeting type without a location
    private static String[] meetingTypesWithNoLocation = new String[] { "TBD", "PENDING", "ONLINE", "OFF CAMPUS" };

    private static final String ENROLLEDCLASSESGRADESFNAME_PREF = "enrolledClassesFname";
    private static final String ENROLLEDCLASSESWINDOWSTATE_PREF = "enrolledClassesWindowState";
    private static final String ENROLLEDCLASSESFIXEDPARAM_PREF = "enrolledClassesWindowFixedParameterString";
    private static final String ENROLLEDCLASSESNATIVEMAPBASESURL_PREF = "enrolledClassesNativeMapBaseURL";
    private static final String ENROLLEDCLASSESNATIVEMAPZOOMINDEX_PREF = "enrolledClassesNativeMapZIndex";

    private CourseSection courseSection;
    private PortletPreferences portletPreferences;
    private boolean mobile;
    private String termCode;
    private IURLService urlService;

    public String getTermCode() {
        return termCode;
    }

    public void setTermCode(String termCode) {
        this.termCode = termCode;
    }

    public boolean isMobile() {
        return mobile;
    }

    public void setMobile(boolean mobile) {
        this.mobile = mobile;
    }

    public PortletPreferences getPortletPreferences() {
        return portletPreferences;
    }

    public void setPortletPreferences(PortletPreferences portletPreferences) {
        this.portletPreferences = portletPreferences;
    }

    public IURLService getUrlService() {
        return urlService;
    }

    public void setUrlService(IURLService urlService) {
        this.urlService = urlService;
    }

    private Map<LocationWrapper, List<CourseMeeting>> locationClassMeetingMap;
    private Map<LocationWrapper, List<CourseMeeting>> locationExamMeetingMap;

    public Map<LocationWrapper, List<CourseMeeting>> getLocationExamMeetingMap() {
        return locationExamMeetingMap;
    }

    public void setLocationExamMeetingMap(Map<LocationWrapper, List<CourseMeeting>> locationExamMeetingMap) {
        this.locationExamMeetingMap = locationExamMeetingMap;
    }

    public void setLocationClassMeetingMap(Map<LocationWrapper, List<CourseMeeting>> locationClassMeetingMap) {
        this.locationClassMeetingMap = locationClassMeetingMap;
    }

    public CourseSection getCourseSection() {
        return courseSection;
    }

    public void setCourseSection(CourseSection courseSection) {
        this.courseSection = courseSection;
    }

    public Map getLocationClassMeetingMap() {
        return locationClassMeetingMap;
    }

    public CourseSectionMeetingWrapper() {
    };

    public CourseSectionMeetingWrapper(CourseSection courseSection, PortletPreferences portletPreferences,
            boolean mobile, String termCode, IURLService urlService) {
        this.setUrlService(urlService);
        this.setCourseSection(courseSection);
        this.setPortletPreferences(portletPreferences);
        this.setMobile(mobile);
        this.setTermCode(termCode);
        this.setLocationClassMeetingMap(setClassMeetingMap(courseSection));
        this.setLocationExamMeetingMap(setExamMeetingMap(courseSection));
    }

    private Map<LocationWrapper, List<CourseMeeting>> setClassMeetingMap(CourseSection courseSection) {
        String displayName = "";
        String roomNo = "";
        String streetAddress = "";
        List<CourseMeeting> courseMeetings = null;
        logger.debug("Setting ClassMeeting Map......");
        Map<LocationWrapper, List<CourseMeeting>> locationMeetMap = new HashMap<LocationWrapper, List<CourseMeeting>>();
        for (CourseMeeting courseMeetingObj : courseSection.getCourseMeetings()) {
            logger.debug("CourseMeeting Type........" + courseMeetingObj.getType());
            if (courseMeetingObj.getType().toUpperCase().equals("CLASS")) {
                if (logger.isDebugEnabled()) {
                    logger.debug("courseMeetingObj.getLocation().getDisplayName()........"
                            + courseMeetingObj.getLocation().getDisplayName());
                    logger.debug("courseMeetingObj.getLocation().getStreetAddress()........"
                            + courseMeetingObj.getLocation().getStreetAddress());
                    logger.debug("courseMeetingObj.getLocation().getRoom()........"
                            + courseMeetingObj.getLocation().getRoom());
                    logger.debug("courseMeetingObj.getLocation().getIdentifier()........"
                            + courseMeetingObj.getLocation().getIdentifier());
                    logger.debug("courseMeetingObj.getLocation().getLatitude()........"
                            + courseMeetingObj.getLocation().getLatitude());
                    logger.debug("courseMeetingObj.getLocation().getLongitude()........"
                            + courseMeetingObj.getLocation().getLongitude());
                    logger.debug("TermCode........" + getTermCode());
                    logger.debug("isMobile........" + isMobile());
                }
                if ((!courseMeetingObj.getLocation().getDisplayName().equals(displayName))
                        || (!courseMeetingObj.getLocation().getStreetAddress().equals(streetAddress))
                        || (!courseMeetingObj.getLocation().getRoom().equals(roomNo))) {
                    logger.debug("Class Location Not Matching......");
                    LocationWrapper locationWrapper = null;
                    if (StringUtils.indexOfAny(courseMeetingObj.getLocation().getDisplayName(),
                            meetingTypesWithNoLocation) == 0) {
                        logger.debug("Location DisplayName is " + courseMeetingObj.getLocation().getDisplayName());
                        locationWrapper = new LocationWrapper(courseMeetingObj.getLocation().getDisplayName(), "",
                                "", 0, 0, "", "");
                    } else {
                        String locationUrl = "";
                        if (!isMobile()) {
                            Map<String, String> params = new HashMap<String, String>();
                            params.put("pP_term", getTermCode());
                            params.put("pP_buildingName", courseMeetingObj.getLocation().getDisplayName());
                            locationUrl = this.getUrlService().getOtherPortletURL(getPortletPreferences(),
                                    ENROLLEDCLASSESGRADESFNAME_PREF, ENROLLEDCLASSESWINDOWSTATE_PREF,
                                    ENROLLEDCLASSESFIXEDPARAM_PREF, params);
                        } else {
                            locationUrl = this.getUrlService().getNativeMapUrl(getPortletPreferences(),
                                    ENROLLEDCLASSESNATIVEMAPBASESURL_PREF, courseMeetingObj.getLocation().getRoom(),
                                    courseMeetingObj.getLocation().getDisplayName(),
                                    courseMeetingObj.getLocation().getStreetAddress(),
                                    new Double(courseMeetingObj.getLocation().getLongitude()).toString(),
                                    new Double(courseMeetingObj.getLocation().getLatitude()).toString(),
                                    ENROLLEDCLASSESNATIVEMAPZOOMINDEX_PREF);
                        }
                        logger.debug("Location URL.....in CLASS" + locationUrl);
                        locationWrapper = new LocationWrapper(courseMeetingObj.getLocation().getDisplayName(),
                                courseMeetingObj.getLocation().getIdentifier(),
                                courseMeetingObj.getLocation().getStreetAddress(),
                                courseMeetingObj.getLocation().getLatitude(),
                                courseMeetingObj.getLocation().getLongitude(),
                                courseMeetingObj.getLocation().getRoom(), locationUrl);
                    }
                    courseMeetings = new ArrayList<CourseMeeting>();
                    locationMeetMap.put(locationWrapper, courseMeetings);
                    displayName = courseMeetingObj.getLocation().getDisplayName();
                    streetAddress = courseMeetingObj.getLocation().getStreetAddress();
                    roomNo = courseMeetingObj.getLocation().getRoom();
                    courseMeetings.add(courseMeetingObj);
                    logger.debug("Class Location Not Matching......Done");
                } else {
                    logger.debug("Class Location Matching......");
                    courseMeetings.add(courseMeetingObj);
                }
            }
        }
        if (locationMeetMap.isEmpty())
            logger.debug("CLASS MAP IS EMPTY !!!!!");

        return locationMeetMap;
    }

    private Map<LocationWrapper, List<CourseMeeting>> setExamMeetingMap(CourseSection courseSection) {
        String displayName = null;
        String roomNo = null;
        String streetAddress = null;
        List<CourseMeeting> courseMeetings = null;
        courseMeetings = new ArrayList<CourseMeeting>();
        logger.debug("Setting ExamMeeting Map......");
        Map<LocationWrapper, List<CourseMeeting>> locationMeetMap = new HashMap<LocationWrapper, List<CourseMeeting>>();
        for (CourseMeeting courseMeetingObj : courseSection.getCourseMeetings()) {
            logger.debug("CourseMeeting Type........" + courseMeetingObj.getType());

            if (courseMeetingObj.getType().toUpperCase().equals("EXAM")) {
                logger.debug("courseMeetingObj.getLocation().getDisplayName()........"
                        + courseMeetingObj.getLocation().getDisplayName());
                logger.debug("courseMeetingObj.getLocation().getStreetAddress()........"
                        + courseMeetingObj.getLocation().getStreetAddress());
                logger.debug("courseMeetingObj.getLocation().getRoom()........"
                        + courseMeetingObj.getLocation().getRoom());
                logger.debug("courseMeetingObj.getLocation().getIdentifier()........"
                        + courseMeetingObj.getLocation().getIdentifier());
                logger.debug("courseMeetingObj.getLocation().getLatitude()........"
                        + courseMeetingObj.getLocation().getLatitude());
                logger.debug("courseMeetingObj.getLocation().getLongitude()........"
                        + courseMeetingObj.getLocation().getLongitude());
                logger.debug("isMobile........" + isMobile());

                if ((courseMeetingObj.getLocation() != null)
                        && (courseMeetingObj.getLocation().getStreetAddress() != null)
                        && (courseMeetingObj.getLocation().getRoom() != null)
                        && (!courseMeetingObj.getLocation().getDisplayName().equals(displayName))
                        && (!courseMeetingObj.getLocation().getStreetAddress().equals(streetAddress))
                        && (!courseMeetingObj.getLocation().getRoom().equals(roomNo))) {
                    logger.debug("Exam Location Not Matching......");
                    LocationWrapper locationWrapper = null;
                    if (StringUtils.indexOfAny(courseMeetingObj.getLocation().getDisplayName(),
                            meetingTypesWithNoLocation) == 0) {
                        logger.debug("Location DisplayName is " + courseMeetingObj.getLocation().getDisplayName());
                        locationWrapper = new LocationWrapper(courseMeetingObj.getLocation().getDisplayName(), "",
                                "", 0, 0, "", "");
                    } else {
                        String locationUrl = "";
                        locationUrl = this.getUrlService().getNativeMapUrl(getPortletPreferences(),
                                ENROLLEDCLASSESNATIVEMAPBASESURL_PREF, courseMeetingObj.getLocation().getRoom(),
                                courseMeetingObj.getLocation().getDisplayName(),
                                courseMeetingObj.getLocation().getStreetAddress(),
                                new Double(courseMeetingObj.getLocation().getLongitude()).toString(),
                                new Double(courseMeetingObj.getLocation().getLatitude()).toString(),
                                ENROLLEDCLASSESNATIVEMAPZOOMINDEX_PREF);
                        logger.debug("Location URL.....in EXAM" + locationUrl);
                        locationWrapper = new LocationWrapper(courseMeetingObj.getLocation().getDisplayName(),
                                courseMeetingObj.getLocation().getIdentifier(),
                                courseMeetingObj.getLocation().getStreetAddress(),
                                courseMeetingObj.getLocation().getLatitude(),
                                courseMeetingObj.getLocation().getLongitude(),
                                courseMeetingObj.getLocation().getRoom(), locationUrl);
                    }
                    courseMeetings = new ArrayList<CourseMeeting>();
                    locationMeetMap.put(locationWrapper, courseMeetings);
                    displayName = courseMeetingObj.getLocation().getDisplayName();
                    streetAddress = courseMeetingObj.getLocation().getStreetAddress();
                    roomNo = courseMeetingObj.getLocation().getRoom();
                    logger.debug("Exam Location Not Matching......Done");
                    courseMeetings.add(courseMeetingObj);
                } else {
                    logger.debug("Exam Location Matching......");
                    courseMeetings.add(courseMeetingObj);
                }
            }
        }
        if (locationMeetMap.isEmpty())
            logger.debug("EXAM MAP IS EMPTY !!!!!");
        return locationMeetMap;
    }

    public void printCourseSectionWrapperList(List<CourseSectionMeetingWrapper> courseSectionMeetingWrapperList) {
        for (CourseSectionMeetingWrapper courseSectionMeetingWrapper : courseSectionMeetingWrapperList) {
            logger.debug("COURSE SECTION>>>>>>>>>>>>>>>");
            logger.debug(courseSectionMeetingWrapper.getCourseSection().getType() + " "
                    + courseSectionMeetingWrapper.getCourseSection().getCode());
            Map<LocationWrapper, List<CourseMeeting>> classMeetingMap = courseSectionMeetingWrapper
                    .getLocationClassMeetingMap();
            Map<LocationWrapper, List<CourseMeeting>> examMeetingMap = courseSectionMeetingWrapper
                    .getLocationExamMeetingMap();

            Set<LocationWrapper> locationWrapperSet = classMeetingMap.keySet();
            logger.debug("DUMPING ALL CLASSES>>>>>>>>>>>>>>>");
            for (LocationWrapper locationWrapper : locationWrapperSet) {
                List<CourseMeeting> courseMeetings = classMeetingMap.get(locationWrapper);
                {
                    for (CourseMeeting courseMeeting : courseMeetings) {
                        logger.debug(courseMeeting.getType());
                        logger.debug(
                                courseMeeting.getFormattedMeetingTime() + "......" + courseMeeting.getDayIds());
                    }
                }
                logger.debug(locationWrapper.getDisplayName() + "....." + locationWrapper.getRoom() + "....."
                        + locationWrapper.getStreetAddress());
            }
            logger.debug("DUMPING ALL EXAMS>>>>>>>>>>>>>>>");
            locationWrapperSet = examMeetingMap.keySet();
            for (LocationWrapper locationWrapper : locationWrapperSet) {
                List<CourseMeeting> courseMeetings = examMeetingMap.get(locationWrapper);
                {
                    for (CourseMeeting courseMeeting : courseMeetings) {
                        logger.debug(courseMeeting.getType());
                        logger.debug(
                                courseMeeting.getFormattedMeetingTime() + "......" + courseMeeting.getDayIds());
                    }
                }
                logger.debug(locationWrapper.getDisplayName() + "....." + locationWrapper.getRoom() + "....."
                        + locationWrapper.getStreetAddress());
            }

        }
    }
}