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
* in the precise way that course numbers are formatted in UCSB's GOLD system.
*
* 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.
*
* Examples: (the <code>1234567812312</code> line is there to show the spacing.)
*
* <pre>
* 1234567812312
* CMPSC 130A
* CMPSC 5JA
* CMPSC 24
* </pre>
*
* @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();
}
}