From 993afa3ec7f467436097e3753c27f45565338df6 Mon Sep 17 00:00:00 2001
From: Chad Redman <chad_redman@unc.edu>
Date: Wed, 23 Sep 2020 09:41:40 -0400
Subject: [PATCH] Modify class terms for 201.1 to 2019..2024; modify 201.1.end
 so it matches the hands-on

---
 .../container_files/seed-data/bootstrap.gsh   | 54 +++++--------------
 .../container_files/seed-data/sisData.sql     |  9 +++-
 .../container_files/seed-data/bootstrap.gsh   | 34 +++++++-----
 3 files changed, 41 insertions(+), 56 deletions(-)

diff --git a/ex201/ex201.1.1/container_files/seed-data/bootstrap.gsh b/ex201/ex201.1.1/container_files/seed-data/bootstrap.gsh
index ca13eef..67ee0c2 100644
--- a/ex201/ex201.1.1/container_files/seed-data/bootstrap.gsh
+++ b/ex201/ex201.1.1/container_files/seed-data/bootstrap.gsh
@@ -21,52 +21,22 @@ setGroupAttr("etc:studentTermLoader", "grouperLoaderQuery", "select distinct id
 
 // Stub out class groups. These will be filled out by the studentTermLoader
 addStem("ref", "student", "student");
-class2019 = addGroup("ref:student", "class2019", "class2019");
-class2020 = addGroup("ref:student", "class2020", "class2020");
-class2021 = addGroup("ref:student", "class2021", "class2021");
-class2022 = addGroup("ref:student", "class2022", "class2022");
-class2023 = addGroup("ref:student", "class2023", "class2023");
+def classList = [:]
+(2019..2024).each { term ->
+    classList[term] = addGroup("ref:student", "class${term}", "class${term}")
+}
 
-// Set ref object type on class reference groups
-AttributeDefName typeMarker = AttributeDefNameFinder.findByName("etc:objectTypes:grouperObjectTypeMarker", true);
-AttributeAssign attributeAssign = class2019.getAttributeDelegate().hasAttribute(typeMarker) ? class2019.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : class2019.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign();
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription",
-"Class of 2019");
-
-AttributeDefName typeMarker = AttributeDefNameFinder.findByName("etc:objectTypes:grouperObjectTypeMarker", true);
-AttributeAssign attributeAssign = class2020.getAttributeDelegate().hasAttribute(typeMarker) ? class2020.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : class2020.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign();
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription",
-"Class of 2020");
-
-AttributeDefName typeMarker = AttributeDefNameFinder.findByName("etc:objectTypes:grouperObjectTypeMarker", true);
-AttributeAssign attributeAssign = class2021.getAttributeDelegate().hasAttribute(typeMarker) ? class2021.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : class2021.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign();
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription",
-"Class of 2021");
 
+// Set ref object type on class reference groups
 AttributeDefName typeMarker = AttributeDefNameFinder.findByName("etc:objectTypes:grouperObjectTypeMarker", true);
-AttributeAssign attributeAssign = class2022.getAttributeDelegate().hasAttribute(typeMarker) ? class2022.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : class2022.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign();
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription",
-"Class of 2022");
+classList.each { term, group ->
+    AttributeAssign attributeAssign = group.getAttributeDelegate().hasAttribute(typeMarker) ? group.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : group.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign()
+    attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true")
+    attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref")
+    attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar")
+    attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription", "Class of ${term}");
+}
 
-AttributeDefName typeMarker = AttributeDefNameFinder.findByName("etc:objectTypes:grouperObjectTypeMarker", true);
-AttributeAssign attributeAssign = class2023.getAttributeDelegate().hasAttribute(typeMarker) ? class2023.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : class2023.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign();
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar");
-attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription",
-"Class of 2023");
 
 // ex 201.1.2
 addStem("basis", "student", "student");
diff --git a/ex201/ex201.1.1/container_files/seed-data/sisData.sql b/ex201/ex201.1.1/container_files/seed-data/sisData.sql
index 9c90392..390a712 100644
--- a/ex201/ex201.1.1/container_files/seed-data/sisData.sql
+++ b/ex201/ex201.1.1/container_files/seed-data/sisData.sql
@@ -3738,4 +3738,11 @@ INSERT INTO HR_PEOPLE(id, surname, givenName) VALUES ('80000999','Gasper','Chris
 INSERT INTO HR_PEOPLE_ROLES(id, role) VALUES ('80000999','staff');
 INSERT INTO HR_PEOPLE_ROLES(id, role) VALUES ('80000999','community');
 INSERT INTO HR_PEOPLE(id, surname, givenName) VALUES ('80001000','Davis','Bill');
-INSERT INTO HR_PEOPLE_ROLES(id, role) VALUES ('80001000','community');
\ No newline at end of file
+INSERT INTO HR_PEOPLE_ROLES(id, role) VALUES ('80001000','community');
+
+/* make the original term ranges more relevant to the current year -- October 2020 should have 2019-2024 */
+
+ALTER TABLE SIS_STUDENT_TERMS DROP PRIMARY KEY;
+UPDATE SIS_STUDENT_TERMS SET term = CONVERT(term, UNSIGNED INTEGER) + 1;
+ALTER TABLE SIS_STUDENT_TERMS ADD PRIMARY KEY (id, term);
+
diff --git a/ex201/ex201.1.end/container_files/seed-data/bootstrap.gsh b/ex201/ex201.1.end/container_files/seed-data/bootstrap.gsh
index ed00c7b..c888b3b 100644
--- a/ex201/ex201.1.end/container_files/seed-data/bootstrap.gsh
+++ b/ex201/ex201.1.end/container_files/seed-data/bootstrap.gsh
@@ -4,7 +4,17 @@ addRootStem("201.1.end", "201.1.end")
 
 // ex201.1.1
 // addStem("ref", "student", "student")
-addGroup("ref:student", "students", "students");
+studentGroup = addGroup("ref:student", "students", "students");
+studentGroup.setDescription($/This group contains contains all students for the purpose of access control. Members automatically get access to a broad selection of student services. You can view where this group is in use by selecting "This group's memberships in other groups" under the "More" tab/$);
+studentGroup.store()
+
+AttributeDefName typeMarker = AttributeDefNameFinder.findByName("etc:objectTypes:grouperObjectTypeMarker", true);
+AttributeAssign attributeAssign = studentGroup.getAttributeDelegate().hasAttribute(typeMarker) ? studentGroup.getAttributeDelegate().retrieveAssignments(typeMarker).iterator().next() : studentGroup.getAttributeDelegate().addAttribute(typeMarker).getAttributeAssign()
+attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDirectAssignment", "true")
+attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeName", "ref")
+attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeDataOwner", "Registrar")
+attributeAssign.getAttributeValueDelegate().assignValue("etc:objectTypes:grouperObjectTypeMembersDescription", "All student subjects for the purpose of access control");
+
 
 // added by loader job. these are not needed.
 // addGroup("ref:student", "class2019", "class2019");
@@ -13,20 +23,17 @@ addGroup("ref:student", "students", "students");
 // addGroup("ref:student", "class2022", "class2022");
 // addGroup("ref:student", "class2023", "class2023");
 
-addMember("ref:student:students","ref:student:class2019");
-addMember("ref:student:students","ref:student:class2020");
-addMember("ref:student:students","ref:student:class2021");
-addMember("ref:student:students","ref:student:class2022");
-addMember("ref:student:students","ref:student:class2023");
+(2021..2024).each { term ->
+    addMember("ref:student:students","ref:student:class${term}");
+}
 
-//Set expiration out Dec 31, 2018 days
+//Set expiration out Dec 31, 2020 days
 java.util.Calendar cal = Calendar.getInstance();
-cal.set(2018, 12, 31)
+cal.set(2020, Calendar.DECEMBER, 31)
 
-addGroup("ref:student", "class2018", "class2018");
-addMember("ref:student:students","ref:student:class2018");
+addMember("ref:student:students","ref:student:class2020");
 group = GroupFinder.findByName(gs, "ref:student:students", true);
-subject = GroupFinder.findByName(gs, "ref:student:class2018", true).toSubject();
+subject = GroupFinder.findByName(gs, "ref:student:class2020", true).toSubject();
 group.addOrEditMember(subject, true, true, null, cal.getTime(), false);
 
 // ex 201.1.2
@@ -37,9 +44,10 @@ addMember("ref:student:students","basis:student:exchange_students");
 
 // ex 201.1.4
 addGroup("basis:student", "transfer_student", "transfer_student");
+addMember("basis:student:transfer_student","pmartinez921");
+addMember("basis:student:transfer_student","cthompson287");
 addMember("basis:student:transfer_student","agrady901");
-addMember("basis:student:transfer_student","alee467");
-addMember("basis:student:transfer_student","ascott776");
+
 
 java.util.Calendar cal2 = Calendar.getInstance();
 cal2.add(Calendar.DATE, 60);