CourseUtilities.java
- package edu.ucsb.cs156.courses.utilities;
- /** static utility methods for dealing with courses */
- public class CourseUtilities {
- // Utility class; this allows jacoco to be satisified that constructors are covered.
- private CourseUtilities() {}
- /**
- * Given a subject area and course number, return a course id that is formatted similarly to the
- * precise way that course numbers are formatted in UCSB's GOLD system.
- *
- * <p>That format has the subject area left justified in an 8 character field, followed by the
- * course number right justified in a 3 character field, followed by the suffix (if any) left
- * justified in a 2 character field.
- *
- * <p>However, we use this function to query rtora's CSV files with grade data, at
- * https://github.com/rtora/UCSB_Grades/ in which this course id is trimmed, such that there are
- * never ending spaces.
- *
- * <p>Therefore, we intentionally also trim the result course id in this function to properly
- * query the CSV files. For example, CMPSC 130A would typically be written:
- *
- * <p>"CMPSC 130A "
- *
- * <p>but we return "CMPSC 130A" to query the CSV file.
- *
- * @param subjectArea subject area, such as CMPSC
- * @param courseNumber course number, such as 130A
- * @return formatted course number
- */
- public static String makeFormattedCourseId(String subjectArea, String courseNumber) {
- String[] nums = courseNumber.split("[a-zA-Z]+");
- String[] suffs = courseNumber.split("[0-9]+");
- String result = "";
- if (suffs.length < 2) { // no suffix
- result =
- String.format("%-8s", subjectArea) // 'CMPSC '
- + String.format("%3s", nums[0]) // ' 8'
- ;
- } else {
- result =
- String.format("%-8s", subjectArea) // 'CMPSC '
- + String.format("%3s", nums[0]) // ' 8'
- + String.format("%-2s", suffs[1]) // 'A '
- ;
- }
- return result.trim();
- }
- }