private void loadCourseOfferings(Long sessionId) {
   for (Iterator it = CourseOffering.findAll(sessionId).iterator(); it.hasNext(); ) {
     CourseOffering offer = (CourseOffering) it.next();
     if (offer.getPermId() != null) {
       courseOfferings.put(
           offer.getCourseNbr() + offer.getSubjectArea().getUniqueId().toString(),
           offer.getPermId());
     }
     externalIdSubjectArea.put(offer.getExternalUniqueId(), offer.getSubjectArea());
     externalIdCourseNumber.put(offer.getExternalUniqueId(), offer.getCourseNbr());
     externalIdCoursePermId.put(offer.getExternalUniqueId(), offer.getPermId());
   }
 }
  public int compare(Object o1, Object o2) {
    // Check if objects are of class Instructional Offering
    if (!(o1 instanceof CourseOffering)) {
      throw new ClassCastException("o1 Class must be of type CourseOffering");
    }
    if (!(o2 instanceof CourseOffering)) {
      throw new ClassCastException("o2 Class must be of type CourseOffering");
    }

    CourseOffering co1 = (CourseOffering) o1;
    CourseOffering co2 = (CourseOffering) o2;

    // Same Course Offering
    if (co1.getUniqueId().equals(co2.getUniqueId())) {
      return 0;
    }

    // One of the offerings is a Controlling Course
    if (compareBy == COMPARE_BY_CTRL_CRS) {
      if (co1.isIsControl().booleanValue()) return -1;
      if (co2.isIsControl().booleanValue()) return 1;
    }

    // Compare by course name (also used if neither is controlling)
    if (co1.getSubjectAreaAbbv().equals(co2.getSubjectAreaAbbv())) {
      if (co1.getCourseNbr().equals(co2.getCourseNbr())) {
        if (co1.getTitle() == null && co2.getTitle() == null) {
          return (0);
        } else if (co1.getTitle() == null) {
          return (-1);
        } else if (co2.getTitle() == null) {
          return (1);
        }
        return (co1.getTitle().compareTo(co2.getTitle()));
      } else {
        return (co1.getCourseNbr().compareTo(co2.getCourseNbr()));
      }
    } else {
      return (co1.getSubjectAreaAbbv().compareTo(co2.getSubjectAreaAbbv()));
    }
  }