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();
}
}