Java tutorial
/** * 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()); } } } }