Skip to content

Commit 8fa6c35

Browse files
committed
pull UbcCampuses out of FacultyTreeRootCampus file to its own new file
1 parent 5b3aa23 commit 8fa6c35

File tree

11 files changed

+119
-117
lines changed

11 files changed

+119
-117
lines changed

ucst-core/src/main/java/com/dvf/ucst/core/CoreMain.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.dvf.ucst.core.coursedata.CourseDataLocator;
44
import com.dvf.ucst.core.faculties.FacultyTreeNode;
5-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
5+
import com.dvf.ucst.core.faculties.UbcCampuses;
66

77
import java.nio.file.Files;
88

@@ -35,7 +35,7 @@ public static void main(String[] args) {
3535
}
3636
System.out.println(CourseDataLocator.StagedDataPath.PRE_DEPLOYMENT.path);
3737
System.out.println(CourseDataLocator.StagedDataPath.POST_DEPLOYMENT.path);
38-
System.out.println(FacultyTreeNode.getSubTreeString(FacultyTreeRootCampus.UbcCampuses.VANCOUVER));
38+
System.out.println(FacultyTreeNode.getSubTreeString(UbcCampuses.VANCOUVER));
3939
}
4040

4141
}

ucst-core/src/main/java/com/dvf/ucst/core/HyperlinkBookIf.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.dvf.ucst.core.courseutils.Course;
44
import com.dvf.ucst.core.faculties.FacultyTreeNode;
5-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
5+
import com.dvf.ucst.core.faculties.UbcCampuses;
66

77
/**
88
* https://courses.students.ubc.ca/cs/courseschedule
@@ -57,7 +57,7 @@ String getTnameQuery() {
5757
return tnameQuery;
5858
}
5959

60-
public static String getCampusUrl(final FacultyTreeRootCampus campus) {
60+
public static String getCampusUrl(final UbcCampuses campus) {
6161
return PNames.BROWSE_COURSES.getRegistrationSiteUrl()
6262
+ CAMPUS.getTnameQuery()
6363
+ CAMPUS.makeQueryToken(campus.getAbbreviation());

ucst-core/src/main/java/com/dvf/ucst/core/Student.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
package com.dvf.ucst.core;
22

33
import com.dvf.ucst.core.faculties.FacultyCourseNotFoundException;
4+
import com.dvf.ucst.core.faculties.UbcCampuses;
45
import com.dvf.ucst.core.programs.ProgramSpecialization;
56
import com.dvf.ucst.utils.xml.MalformedXmlDataException;
67
import com.dvf.ucst.utils.xml.XmlUtils;
78
import com.dvf.ucst.core.courseutils.Course;
89
import com.dvf.ucst.core.courseutils.CourseUtils.Semester;
910
import com.dvf.ucst.core.courseutils.CourseUtils.YearOfStudy;
1011
import com.dvf.ucst.core.faculties.CampusNotFoundException;
11-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
1212
import com.dvf.ucst.core.schedule.WorklistGroup;
13-
import org.w3c.dom.Document;
1413
import org.w3c.dom.Element;
1514

1615
import java.util.*;
@@ -162,7 +161,7 @@ private CompletedCourse(final Element completedElement) throws MalformedXmlDataE
162161
completedElement, CompletedCourseXml.COURSE_ID_ATTR
163162
).getValue().split("\\s+");
164163
try {
165-
this.completedCourse = FacultyTreeRootCampus.UbcCampuses
164+
this.completedCourse = UbcCampuses
166165
.getCampusByIdToken(courseIdTokens[0])
167166
.getSquashedFacultyAbbrMap().get(courseIdTokens[1])
168167
.getCourseByCodeString(courseIdTokens[2]);

ucst-core/src/main/java/com/dvf/ucst/core/StudentCoreQualities.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.dvf.ucst.core;
22

33
import com.dvf.ucst.core.courseutils.CourseUtils.YearOfStudy;
4-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
4+
import com.dvf.ucst.core.faculties.UbcCampuses;
55
import com.dvf.ucst.core.programs.ProgramOfStudy;
66
import com.dvf.ucst.core.programs.ProgramSpecialization;
77
import com.dvf.ucst.utils.xml.MalformedXmlDataException;
@@ -39,7 +39,7 @@ public final class StudentCoreQualities implements XmlUtils.UserDataXml {
3939
this.programSpecialization = null; // TODO: how to get this?
4040
}
4141

42-
public final FacultyTreeRootCampus.UbcCampuses getCampus() {
42+
public final UbcCampuses getCampus() {
4343
return getProgramOfStudy().getCampusContext();
4444
}
4545

ucst-core/src/main/java/com/dvf/ucst/core/courseutils/Course.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.dvf.ucst.core.Student;
66
import com.dvf.ucst.core.faculties.CampusNotFoundException;
77
import com.dvf.ucst.core.faculties.FacultyTreeNode;
8-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
8+
import com.dvf.ucst.core.faculties.UbcCampuses;
99
import com.dvf.ucst.core.schedule.Schedule;
1010
import com.dvf.ucst.core.spider.CourseWip;
1111
import com.dvf.ucst.utils.general.WorkInProgress;
@@ -48,7 +48,7 @@ public final class Course implements CreditValued, HyperlinkBookIf, SectionIdStr
4848

4949
public Course(final Element courseElement) throws MalformedXmlDataException {
5050
try { // get faculty node:
51-
this.facultyTreeNode = FacultyTreeRootCampus.UbcCampuses.getCampusByIdToken(
51+
this.facultyTreeNode = UbcCampuses.getCampusByIdToken(
5252
XmlUtils.getMandatoryAttr(courseElement, Xml.COURSE_CAMPUS_ATTR).getValue()
5353
).getSquashedFacultyAbbrMap().get(
5454
XmlUtils.getMandatoryAttr(courseElement, Xml.COURSE_FACULTY_ATTR).getValue()

ucst-core/src/main/java/com/dvf/ucst/core/courseutils/CourseSectionRef.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.dvf.ucst.core.courseutils;
22

3-
import com.dvf.ucst.core.faculties.FacultyCourseNotFoundException;
3+
import com.dvf.ucst.core.faculties.*;
44
import com.dvf.ucst.core.courseutils.Course.CourseSection;
5-
import com.dvf.ucst.core.faculties.CampusNotFoundException;
6-
import com.dvf.ucst.core.faculties.FacultyTreeNode;
7-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
85
import com.dvf.ucst.utils.xml.MalformedXmlDataException;
96
import com.dvf.ucst.utils.xml.XmlUtils;
107
import org.w3c.dom.Element;
@@ -68,8 +65,7 @@ private CourseSectionRefUnloaded(final Element refElement) throws MalformedXmlDa
6865

6966
public CourseSectionRefUnloaded(String refString) throws CampusNotFoundException {
7067
final String[] tokens = refString.split("\\s+");
71-
final FacultyTreeRootCampus campusToken = FacultyTreeRootCampus
72-
.UbcCampuses.getCampusByIdToken(tokens[0]);
68+
final UbcCampuses campusToken = UbcCampuses.getCampusByIdToken(tokens[0]);
7369
this.facultyToken = campusToken.getSquashedFacultyAbbrMap().get(tokens[1]);
7470
this.courseToken = tokens[2];
7571
this.sectionToken = tokens[3];
Lines changed: 2 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.dvf.ucst.core.faculties;
22

33
import com.dvf.ucst.core.courseutils.Course;
4-
import com.dvf.ucst.core.faculties.vancouver.VancouverFaculties;
54

65
import java.nio.file.Path;
76
import java.nio.file.Paths;
87
import java.util.Collections;
9-
import java.util.HashMap;
108
import java.util.Map;
119

1210
/**
@@ -48,14 +46,12 @@ default FacultyTreeNode getParentNode() {
4846
}
4947

5048
@Override
51-
default Path getRootAnchoredPathToInfo(SubDirectories subDir) {
49+
default Path getRootAnchoredPathToInfo(final SubDirectories subDir) {
5250
return Paths.get(getAbbreviation().toLowerCase()).resolve(subDir.getSubDirectory());
5351
}
5452

5553
@Override
56-
default String getRegistrationSiteUrl() {
57-
return RegistrationSubjAreaQuery.getCampusUrl(this);
58-
}
54+
String getRegistrationSiteUrl();
5955

6056
/**
6157
* @return An unmodifiable [Map] from faculty names under [this] campus to the
@@ -72,90 +68,4 @@ default Map<String, Course> getCourseIdTokenToCourseMap() {
7268
}
7369

7470

75-
76-
/**
77-
*
78-
*/
79-
enum UbcCampuses implements FacultyTreeRootCampus {
80-
VANCOUVER ("Vancouver", VancouverFaculties.class, "UBC"),
81-
//OKANAGAN ("Okanagan", OkanaganFaculties.class, "UBCO"),
82-
;
83-
private final String name;
84-
private final Class<? extends FacultyTreeNode> childrenClass;
85-
private final String campusIdToken;
86-
private final Map<String, FacultyTreeNode> squashedFacultyAbbrMap; // unmodifiable
87-
88-
<T extends Enum<?> & FacultyTreeNode> UbcCampuses
89-
(final String name, final Class<T> childrenClass, final String campusIdToken) {
90-
this.name = name;
91-
this.childrenClass = childrenClass;
92-
this.campusIdToken = campusIdToken;
93-
94-
final Map<String, FacultyTreeNode> squashedFacultyAbbrMap = new HashMap<>();
95-
recursiveInitSquashedFacultyAbbrMap(squashedFacultyAbbrMap, this);
96-
this.squashedFacultyAbbrMap = Collections.unmodifiableMap(squashedFacultyAbbrMap);
97-
}
98-
99-
private void recursiveInitSquashedFacultyAbbrMap(final Map<String, FacultyTreeNode> abbrMap, final FacultyTreeNode scrub) {
100-
for (final FacultyTreeNode childNode : scrub.getChildren()) {
101-
// assert childNode.getParentNode() == scrub : String.format(
102-
// "The [%s] \"%s\" does not correctly point back to the parent it is under,"
103-
// + " \"%s\", as its parent. Please fix.",
104-
// FacultyTreeNode.class.getName(), scrub.getAbbreviation(),
105-
// childNode.getAbbreviation()
106-
// );
107-
final String childAbbr = childNode.getAbbreviation();
108-
assert !abbrMap.containsKey(childAbbr) : String.format(
109-
"Found two [%s]s going by the abbreviation \"%s\" - one"
110-
+ " under the node \"%s\", and the other under the node \"%s\"."
111-
+ " Requires fix before project deployment. Please investigate.",
112-
FacultyTreeNode.class.getName(), childAbbr,
113-
abbrMap.get(childAbbr).getAbbreviation(),
114-
childNode.getAbbreviation()
115-
);
116-
abbrMap.put(childAbbr, childNode);
117-
recursiveInitSquashedFacultyAbbrMap(abbrMap, childNode);
118-
}
119-
}
120-
121-
@Override
122-
public String getNameNoTitle() {
123-
return name;
124-
}
125-
126-
@Override
127-
public String getAbbreviation() {
128-
return campusIdToken;
129-
}
130-
131-
@Override
132-
public FacultyTreeNode[] getChildren() {
133-
return childrenClass.getEnumConstants();
134-
}
135-
136-
@Override
137-
public Map<String, FacultyTreeNode> getSquashedFacultyAbbrMap() {
138-
return squashedFacultyAbbrMap;
139-
}
140-
141-
/**
142-
* @param campusIdSearchToken Ex. "VAN" or "OKA". A String that would be
143-
* returned from an existing [FacultyTreeRootCampus]' [::getAbbreviation]
144-
* method.
145-
* @return The [UbcCampuses] instance by the token ID [campusIdSearchToken]
146-
* if it exists.
147-
* @throws CampusNotFoundException If no [UbcCampuses] by the token ID
148-
* [campusIdSearchToken] exists.
149-
*/
150-
public static UbcCampuses getCampusByIdToken(final String campusIdSearchToken) throws CampusNotFoundException {
151-
for (final UbcCampuses campus : UbcCampuses.values()) {
152-
// [::getAbbreviation] is used here to match with [::getXmlConstantValue]
153-
if (campus.getAbbreviation().equals(campusIdSearchToken)) {
154-
return campus;
155-
}
156-
}
157-
throw new CampusNotFoundException(campusIdSearchToken);
158-
}
159-
}
160-
16171
}
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.dvf.ucst.core.faculties;
2+
3+
import com.dvf.ucst.core.faculties.vancouver.VancouverFaculties;
4+
5+
import java.util.Collections;
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
/**
10+
*
11+
*/
12+
public enum UbcCampuses implements FacultyTreeRootCampus {
13+
VANCOUVER ("Vancouver", VancouverFaculties.class, "UBC"),
14+
//OKANAGAN ("Okanagan", OkanaganFaculties.class, "UBCO"),
15+
;
16+
private final String name;
17+
private final Class<? extends FacultyTreeNode> childrenClass;
18+
private final String campusIdToken;
19+
private final Map<String, FacultyTreeNode> squashedFacultyAbbrMap; // unmodifiable
20+
21+
<T extends Enum<?> & FacultyTreeNode> UbcCampuses
22+
(final String name, final Class<T> childrenClass, final String campusIdToken) {
23+
this.name = name;
24+
this.childrenClass = childrenClass;
25+
this.campusIdToken = campusIdToken;
26+
27+
final Map<String, FacultyTreeNode> squashedFacultyAbbrMap = new HashMap<>();
28+
recursiveInitSquashedFacultyAbbrMap(squashedFacultyAbbrMap, this);
29+
this.squashedFacultyAbbrMap = Collections.unmodifiableMap(squashedFacultyAbbrMap);
30+
}
31+
32+
private void recursiveInitSquashedFacultyAbbrMap(final Map<String, FacultyTreeNode> abbrMap, final FacultyTreeNode scrub) {
33+
for (final FacultyTreeNode childNode : scrub.getChildren()) {
34+
// assert childNode.getParentNode() == scrub : String.format(
35+
// "The [%s] \"%s\" does not correctly point back to the parent it is under,"
36+
// + " \"%s\", as its parent. Please fix.",
37+
// FacultyTreeNode.class.getName(), scrub.getAbbreviation(),
38+
// childNode.getAbbreviation()
39+
// );
40+
final String childAbbr = childNode.getAbbreviation();
41+
assert !abbrMap.containsKey(childAbbr) : String.format(
42+
"Found two [%s]s going by the abbreviation \"%s\" - one"
43+
+ " under the node \"%s\", and the other under the node \"%s\"."
44+
+ " Requires fix before project deployment. Please investigate.",
45+
FacultyTreeNode.class, childAbbr,
46+
abbrMap.get(childAbbr).getAbbreviation(),
47+
childNode.getAbbreviation()
48+
);
49+
abbrMap.put(childAbbr, childNode);
50+
recursiveInitSquashedFacultyAbbrMap(abbrMap, childNode);
51+
}
52+
}
53+
54+
@Override
55+
public String getNameNoTitle() {
56+
return name;
57+
}
58+
59+
@Override
60+
public String getAbbreviation() {
61+
return campusIdToken;
62+
}
63+
64+
@Override
65+
public FacultyTreeNode[] getChildren() {
66+
return childrenClass.getEnumConstants();
67+
}
68+
69+
@Override
70+
public String getRegistrationSiteUrl(){
71+
return RegistrationSubjAreaQuery.getCampusUrl(this);
72+
}
73+
74+
@Override
75+
public Map<String, FacultyTreeNode> getSquashedFacultyAbbrMap() {
76+
return squashedFacultyAbbrMap;
77+
}
78+
79+
/**
80+
* @param campusIdSearchToken Ex. "VAN" or "OKA". A String that would be
81+
* returned from an existing [FacultyTreeRootCampus]' [::getAbbreviation]
82+
* method.
83+
* @return The [UbcCampuses] instance by the token ID [campusIdSearchToken]
84+
* if it exists.
85+
* @throws CampusNotFoundException If no [UbcCampuses] by the token ID
86+
* [campusIdSearchToken] exists.
87+
*/
88+
public static com.dvf.ucst.core.faculties.UbcCampuses getCampusByIdToken(final String campusIdSearchToken) throws CampusNotFoundException {
89+
for (final com.dvf.ucst.core.faculties.UbcCampuses campus : com.dvf.ucst.core.faculties.UbcCampuses.values()) {
90+
// [::getAbbreviation] is used here to match with [::getXmlConstantValue]
91+
if (campus.getAbbreviation().equals(campusIdSearchToken)) {
92+
return campus;
93+
}
94+
}
95+
throw new CampusNotFoundException(campusIdSearchToken);
96+
}
97+
}

ucst-core/src/main/java/com/dvf/ucst/core/faculties/vancouver/VancouverFaculties.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.dvf.ucst.core.courseutils.Course;
44
import com.dvf.ucst.core.faculties.FacultyTreeNode;
5-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
5+
import com.dvf.ucst.core.faculties.UbcCampuses;
66

77
import java.util.HashMap;
88
import java.util.Map;
@@ -51,8 +51,8 @@ public FacultyTreeNodeType getFacultyType() {
5151
}
5252

5353
@Override
54-
public FacultyTreeRootCampus getParentNode() {
55-
return FacultyTreeRootCampus.UbcCampuses.VANCOUVER;
54+
public UbcCampuses getParentNode() {
55+
return UbcCampuses.VANCOUVER;
5656
}
5757

5858
@Override

ucst-core/src/main/java/com/dvf/ucst/core/programs/ProgramOfStudy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.dvf.ucst.core.programs;
22

33
import com.dvf.ucst.core.faculties.FacultyTreeNode;
4-
import com.dvf.ucst.core.faculties.FacultyTreeRootCampus;
4+
import com.dvf.ucst.core.faculties.UbcCampuses;
55

66
import java.util.Map;
77
import java.util.Set;
@@ -19,7 +19,7 @@ public interface ProgramOfStudy {
1919

2020
ProgramOfStudyType getType();
2121

22-
FacultyTreeRootCampus.UbcCampuses getCampusContext();
22+
UbcCampuses getCampusContext();
2323

2424
/*
2525
TODO [investigate]: It seems like StudentCoreQualityReqs don't care about the

0 commit comments

Comments
 (0)