Large diffs are not rendered by default.

@@ -21,62 +21,68 @@ public static void main(String[] args)
grads.loadUsers("C:/Users/New Hotness/git/GRADS/src/edu/sc/csce740/GRADS_Materials/data/users.txt");
grads.loadCourses("C:/Users/New Hotness/git/GRADS/src/edu/sc/csce740/GRADS_Materials/data/courses.txt");
grads.loadRecords("C:/Users/New Hotness/git/GRADS/src/edu/sc/csce740/GRADS_Materials/data/students.txt");

//grads.loadUsers("C:/Users//Documents/Csce740/GRADS_Materials/GRADS_Materials/data/users.txt");
//grads.loadCourses("C:/Users/Hero/Documents/Csce740/GRADS_Materials/GRADS_Materials/data/courses.txt");
//grads.loadRecords("C:/Users/Hero/Documents/Csce740/GRADS_Materials/GRADS_Materials/data/students.txt");

}
catch (Exception e)
{
System.err.println("Caught IOEception: " + e.getMessage());
}


//TESTING SETUSER FUNCTION
try
{
grads.setUser("mhunt");
}
catch (Exception e)
{
System.err.println("Caught IOEception: " + e.getMessage());
}

//TESTING CLEARSESSION FUNCTION
try
{
//grads.setUser("mmatthews");

//GET STUDENT IDS FUNCTION TEST
//System.out.println(grads.getStudentIDs());

//ADD NOTE FUNCTION TEST
//grads.addNote("mhunt", "shouldnt see in records class", false); //should work
grads.addNote("mhunt", "peep gonna fail again", true); // should work

//grads.addNote("rbob", "gonna fail", false); // should fail - not csce
//grads.addNote("adfa", "gonna fail", false); // should fail - no student record

//grads.setUser("mhunt");
//grads.addNote("mhunt", "notes are gay", false); //should fail, not gpc

//UPDATE TRANSCRIPT FUNCTION TEST
//grads.setUser("mhunt");
//StudentRecord temp = grads.getRecords().get(0);
//temp.getDegreeSought().setName("UGH SCREW THIS");
//grads.updateTranscript("mhunt", temp, false); //should work

//temp.getStudent().setId("pika");
//grads.updateTranscript("mhunt", temp, false); //shouldnlt work

//temp.getStudent().setFirstName("pikachu!");
//grads.updateTranscript("mhunt", temp, true); //should work

//temp.getStudent().setFirstName("pikachu!");
//grads.updateTranscript("mhunt", temp, true); //should work

//grads.setUser("mmatthews");
//temp.getStudent().setFirstName("Michelle");
//grads.updateTranscript("mhunt", temp, true); //should work



//CLEAR SESSION FUNCTION TEST
//System.out.println(grads.getactiveUser_().toString());
//grads.clearSession();
//System.out.println(grads.getactiveUser_().toString());
}
catch (Exception e)
{
System.err.println("Caught IOEception: " + e.getMessage());
}

//TESTING GETTRANSCRIPT FUNCTION
try
{
//StudentRecord test = grads.getTranscript("mhunt");
//GET TRANSCRIPT FUNCTION TEST
StudentRecord test = grads.getTranscript("mhunt");
System.out.println(test.toString());

//GENERATE PROGRESS SUMMARY FUNCTION TEST
//ProgressSummary test = grads.generateProgressSummary("mhunt");
//System.out.println(test.toString());
}
catch (Exception e)
{
System.err.println("Caught IOEception: " + e.getMessage());
}

//TESTING GENERATEPROGRESSSUMMARY FUNCTION
try
{
ProgressSummary test = grads.generateProgressSummary("mhunt");
System.out.println(test.toString());
//grads.loadUsers("C:/Users//Documents/Csce740/GRADS_Materials/GRADS_Materials/data/users.txt");
//grads.loadCourses("C:/Users/Hero/Documents/Csce740/GRADS_Materials/GRADS_Materials/data/courses.txt");
//grads.loadRecords("C:/Users/Hero/Documents/Csce740/GRADS_Materials/GRADS_Materials/data/students.txt");
}
catch (Exception e)
{
System.err.println("Caught IOEception: " + e.getMessage());
}

}

}
@@ -15,7 +15,8 @@
"graduation": {
"semester": "SPRING",
"year": 2018
},
}
},
"advisors": [
{
"department": "COMPUTER_SCIENCE",
@@ -113,7 +114,7 @@
"name":"ADDITIONAL_CREDITS_PHD",
"passed":false,
"details":{
notes: [
"notes": [
"Must pass 20 more hours of CSCE courses numbered above 700 that are not core courses."
]
}
@@ -208,7 +209,7 @@
"grade": "A"
}
],
notes: [
"notes": [
"Must pass 25 more hours of graduate courses.",
"Must pass 11 more hours of CSCE courses numbered above 700."
]
@@ -242,13 +243,13 @@
"year": 2015
},
"grade": "P"
},
}
]
}
},
{
"name":"TIME_LIMIT_PHD",
"passed":true,
"passed":true
},
{
"name":"GPA",
@@ -264,17 +265,18 @@
"milestones": [
{
"milestone": "DISSERTATION_ADVISOR_SELECTED",
"term": {
"term": {
"semester": "FALL",
"year": 2014
}
},
{
},
{
"milestone": "DISSERTATION_COMMITTEE_FORMED",
"term": {
"semester": "FALL",
"year": 2014
}
}
],
"notes": [
"Missing milestone PROGRAM_OF_STUDY_SUBMITTED",
@@ -286,7 +288,7 @@
"Missing milestone DISSERTATION_DEFENSE_PASSED"
]
}
},
}
]
}
]
@@ -7,24 +7,24 @@
},
"department": "COMPUTER_SCIENCE",
"termBegan": {
"semester": "FALL",
"semester": "SUMMER",
"year": 2013
},
"degreeSought": {
"name": "PHD",
"graduation": {
"semester": "SPRING",
"year": 2018
}
},
}
},
"previousDegrees": [
{
{
"name": "BS",
"graduation": {
"semester": "SPRING",
"year": 2008
}
}
}
}
],
"advisors": [
{
@@ -51,7 +51,7 @@
}
],
"coursesTaken": [
{
{
"course": {
"name": "Naptime",
"id": "nap734",
@@ -89,9 +89,9 @@
},
{
"course": {
"name": "Compiler Construction",
"id": "csce531",
"numCredits": "3"
"name": "Compiler Construction",
"id": "csce531",
"numCredits": "3"
},
"term": {
"semester": "SPRING",
@@ -101,9 +101,9 @@
},
{
"course": {
"name": "Theory of Computation",
"id": "csce551",
"numCredits": "3"
"name": "Theory of Computation",
"id": "csce551",
"numCredits": "3"
},
"term": {
"semester": "FALL",
@@ -113,9 +113,9 @@
},
{
"course": {
"name": "Analysis of Algorithms",
"id": "csce750",
"numCredits": "3"
"name": "Analysis of Algorithms",
"id": "csce750",
"numCredits": "3"
},
"term": {
"semester": "SPRING",
@@ -135,7 +135,7 @@
},
"grade": "A"
},
{
{
"course": {
"name": "Dissertation Preparation",
"id": "csce899",
@@ -147,7 +147,7 @@
},
"grade": "P"
},
{
{
"course": {
"name": "Dissertation Preparation",
"id": "csce899",
@@ -186,11 +186,14 @@
"semester": "FALL",
"year": 2014
}
}
}
],
"notes": [
"Great student. A++ Would recommend.",
"Owes me 20 bucks."
"Owes me 20 bucks.",
"peep gonna fail again",
"peep gonna fail again",
"peep gonna fail again"
]
},
{
@@ -212,4 +215,4 @@
"note3"
]
}
]
]
@@ -0,0 +1,366 @@
package edu.sc.csce740;

import java.math.BigDecimal;
import java.math.MathContext;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

public class PHD {

//Class Variables
private List<RequirementCheckResults> pHD = new ArrayList<RequirementCheckResults>();

//General Constructors
public PHD(List<RequirementCheckResults> pHD, List<CourseTaken> coursePHD) {
super();
this.pHD = pHD;
}
public PHD(){

}

//Getters and Setters
public List<RequirementCheckResults> getpHD() {
return pHD;
}
public void setpHD(List<RequirementCheckResults> pHD) {
this.pHD = pHD;
}

/*THIS KINDA WORKS
public void create_PHD(StudentRecord studRec){
double gpa = 0;
List<Courses> coursePHD = null;
List<String> notes = new ArrayList<String>();
notes.add("test");
for(int index=0; index<studRec.getCoursesTaken().size(); index++){
studRec.getCoursesTaken().get(index);
}
for(int index=0; index<studRec.getMilestonesSet().size(); index++){
studRec.getMilestonesSet().get(index);
}
Details core_details = new Details(gpa, coursePHD, null, notes);
RequirementCheckResults core_courses = new RequirementCheckResults("CORE_COURSES_PHD", false, core_details);
this.pHD.add(core_courses);
}*/

public void create_PHD(StudentRecord studRec){
core_courses_phd(studRec.getCoursesTaken());
additonal_credits_phd(studRec.getCoursesTaken());
degree_based_credits(studRec);
thesis_credits_phd(studRec.getCoursesTaken());
time_limit_phd(studRec.getTermBegan().getYear());
gpa(studRec.getCoursesTaken());
milestones_phd(studRec.getMilestonesSet());
}


public void core_courses_phd(List<CourseTaken> courses){
//Function Variables
List<CourseTaken> core_course_list = new ArrayList<CourseTaken>();
List<String> core_course_notes = new ArrayList<String>();
int year = Calendar.getInstance().get(Calendar.YEAR);
boolean passed = false;
int passedVal = 0;
boolean [] coursePassed = new boolean[5];
Arrays.fill(coursePassed, Boolean.FALSE);

String [] courseNames = new String[5];
courseNames[0] = "csce513";
courseNames[1] = "csce531";
courseNames[2] = "csce551";
courseNames[3] = "csce750";
courseNames[4] = "csce791";

//Uses Course Taken Object to compute CORE_COURSES_PHD rule
for(int index=0; index<courses.size(); index++){
for(int i=0; i<courseNames.length; i++){
if(courses.get(index).getCourse().getId().equals(courseNames[i])){
if(courses.get(index).getGrade() == 'A' || courses.get(index).getGrade() == 'B'){
if(year - courses.get(index).getTerm().getYear() < 6){
core_course_list.add(courses.get(index));
passedVal++;
coursePassed[i] = true;
}
}
}

}
}

for(int i=0; i<courseNames.length; i++){
if(!coursePassed[i]){
core_course_notes.add("You have not passed " + courseNames[i]);
}
}

if(passedVal == 5){
passed = true;
}


Details core_details = new Details(null, core_course_list, null, core_course_notes);
RequirementCheckResults core_courses = new RequirementCheckResults("CORE_COURSES_PHD", passed, core_details);
this.pHD.add(core_courses);
}

public void additonal_credits_phd(List<CourseTaken> courses){
List<CourseTaken> core_course_list = new ArrayList<CourseTaken>();
List<String> core_course_notes = new ArrayList<String>();
int passedVal = 0;
boolean passed = false;
int year = Calendar.getInstance().get(Calendar.YEAR);


for(int index=0; index<courses.size(); index++){
if(courses.get(index).getCourse().getId().contains("csce")){
if(courses.get(index).getCourse().getId().equals("csce513") ||
courses.get(index).getCourse().getId().equals("csce531") ||
courses.get(index).getCourse().getId().equals("csce551") ||
courses.get(index).getCourse().getId().equals("csce750") ||
courses.get(index).getCourse().getId().equals("csce791") ||
courses.get(index).getCourse().getId().equals("csce799") ||
courses.get(index).getCourse().getId().equals("csce899") ){
} else {
if(courses.get(index).getGrade() == 'A' || courses.get(index).getGrade() == 'B'){
if(year - courses.get(index).getTerm().getYear() < 6){
core_course_list.add(courses.get(index));
String credStr = courses.get(index).getCourse().getNumCredits();
int credVal = Integer.valueOf(credStr);
passedVal = passedVal + credVal;
}
}
}
}
}

if(passedVal >= 20){
passed = true;
}

if(passedVal < 20){
String failed = "You must pass 20 hours of CSCE couses numbered above 700 courses that are not courses.";
core_course_notes.add(failed);
}

Details core_details = new Details(null, core_course_list, null, core_course_notes);
RequirementCheckResults core_courses = new RequirementCheckResults("ADDITIONAL_CREDITS_PHD", passed, core_details);
this.pHD.add(core_courses);

}

public void degree_based_credits(StudentRecord studRec){
List<CourseTaken> core_course_list = new ArrayList<CourseTaken>();
List<String> core_course_notes = new ArrayList<String>();
int passedVal = 0;
boolean passed = false;
int year = Calendar.getInstance().get(Calendar.YEAR);



Details core_details = new Details(null, core_course_list, null, core_course_notes);
RequirementCheckResults core_courses = new RequirementCheckResults("CORE_COURSES_PHD", passed, core_details);
this.pHD.add(core_courses);
}

public void thesis_credits_phd(List<CourseTaken> courses){
List<CourseTaken> core_course_list = new ArrayList<CourseTaken>();
List<String> core_course_notes = new ArrayList<String>();
int passedVal = 0;
boolean passed = false;
int year = Calendar.getInstance().get(Calendar.YEAR);

for(int index=0; index<courses.size(); index++){
if(courses.get(index).getCourse().getId().contains("csce899")){
if(courses.get(index).getGrade() == 'P'){
if(year - courses.get(index).getTerm().getYear() < 6)
core_course_list.add(courses.get(index));
passedVal++;
}
}
}

if(passedVal == 2){
passed = true;
}
if(passedVal == 1){
String failed = "You must pass 6 more hours of CSCE899";
core_course_notes.add(failed);
}
if(passedVal == 0){
String failed = "You must pass 12 more hours of CSCE899";
core_course_notes.add(failed);
}

Details core_details = new Details(null, core_course_list, null, core_course_notes);
RequirementCheckResults core_courses = new RequirementCheckResults("THESIS_CREDITS_PHD", passed, core_details);
this.pHD.add(core_courses);
}

public void time_limit_phd(int year){
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
boolean passed = false;
if(currentYear - year < 9){
passed = true;
}
RequirementCheckResults core_courses = new RequirementCheckResults("TIME_LIMIT_PHD", passed, null);
this.pHD.add(core_courses);
}

public void gpa(List<CourseTaken> courses){
int year = Calendar.getInstance().get(Calendar.YEAR);
List<Integer> grades = new ArrayList<Integer>();
int hoursTotal = 0;
int classGrade = 0;
double totalGPA = 0;
String totalGPAString = "";
boolean passed = false;

for(int index=0; index<courses.size(); index++){
if(year - courses.get(index).getTerm().getYear() < 6){
if(courses.get(index).getGrade() != 'P'){
if(courses.get(index).getGrade() != '_'){
classGrade = gpa(courses.get(index).getGrade(),courses.get(index).getCourse().getNumCredits());
grades.add(classGrade);
int hoursVal = Integer.valueOf(courses.get(index).getCourse().getNumCredits());
hoursTotal = hoursTotal + hoursVal;
}
}
}
}

for(int i=0; i<grades.size(); i++){
totalGPA = totalGPA + grades.get(i);
}

totalGPA = totalGPA / (double) hoursTotal;
BigDecimal bd = new BigDecimal(totalGPA);
bd = bd.round(new MathContext(3));
double rounded = bd.doubleValue();
totalGPAString = Double.toString(rounded);

if(rounded >= 3.00){
passed = true;
}

Details core_details = new Details(totalGPAString, null, null, null);
RequirementCheckResults core_courses = new RequirementCheckResults("GPA", passed, core_details);
this.pHD.add(core_courses);
}


public int gpa(char iGrade, String iHours){
int gpa = 0;
int hours = Integer.valueOf(iHours);

char[] grade = new char[5];
grade[0] = 'F';
grade[1] = 'D';
grade[2] = 'C';
grade[3] = 'B';
grade[4] = 'A';

for(int i=4; i>0; i--){
if(iGrade == grade[i]){
gpa = i*hours;
}
}


return gpa;
}


public void milestones_phd(List<Milestone> milestones){
List<Milestone> core_miles_list = new ArrayList<Milestone>();
List<String> core_miles_notes = new ArrayList<String>();
int passedVal = 0;
boolean passed = false;
boolean [] milesPassed = new boolean[9];
Arrays.fill(milesPassed, Boolean.FALSE);

String [] milesNames = new String[9];
milesNames[0] = "DISSERTATION_ADVISOR_SELECTED";
milesNames[1] = "PROGRAM_OF_STUDY_SUBMITTED";
milesNames[2] = "DISSERTATION_COMMITTEE_FORMED";
milesNames[3] = "QUALIFYING_EXAM_PASSED";
milesNames[4] = "DISSERTATION_PROPOSAL_SCHEDULED";
milesNames[5] = "COMPREHENSIVE_EXAM_PASSED";
milesNames[6] = "DISSERTATION_SUBMITTED";
milesNames[7] = "DISSERTATION_DEFENSE_SCHEDULED";
milesNames[8] = "DISSERTATION_DEFENSE_PASSED";

for(int index=0; index<milestones.size(); index++){
for(int i=0; i<milesNames.length; i++){
if(milestones.get(index).getMilestone().equals(milesNames[i])){
core_miles_list.add(milestones.get(index));
passedVal++;
milesPassed[i] = true;
}
}
}

for(int i=0; i<milesNames.length; i++){
if(!milesPassed[i]){
core_miles_notes.add("Missing milestone " + milesNames[i]);
}
}

if(passedVal == 9){
passed = true;
}

Details core_details = new Details(null, null, core_miles_list, core_miles_notes);
RequirementCheckResults core_courses = new RequirementCheckResults("MILESTONES_PHD", passed, core_details);
this.pHD.add(core_courses);



}







































}
@@ -82,6 +82,29 @@ public List<RequirementCheckResults> getRequirementCheckResults() {
public void setRequirementCheckResults(List<RequirementCheckResults> requirementCheckResults) {
this.requirementCheckResults = requirementCheckResults;
}
public void setRequirementCheckResults(StudentRecord activeStud){

if(activeStud.getDegreeSought().getName().equals("PHD")){
System.out.println(activeStud.getStudent().getId() + " is a PHD student!");
PHD activeDeg = new PHD();
activeDeg.create_PHD(activeStud);
this.requirementCheckResults = activeDeg.getpHD();
}
if(activeStud.getDegreeSought().getName().equals("MSCSE")){
System.out.println(activeStud.getStudent().getId() + " is a MSCSE student!");
}
if(activeStud.getDegreeSought().getName().equals("MECSE")){
System.out.println(activeStud.getStudent().getId() + " is a MECSE student!");
}
if(activeStud.getDegreeSought().getName().equals("MSE")){
System.out.println(activeStud.getStudent().getId() + " is a MSE student!");
}
if(activeStud.getDegreeSought().getName().equals("CGSIAS")){
System.out.println(activeStud.getStudent().getId() + " is a CGSIAS student!");
}


}


//General ToString Method
@@ -39,11 +39,6 @@ public void setDetails(Details details) {
@Override
public String toString() {
return "RequirementCheckResults [name=" + name + ", passed=" + passed + ", details=" + details + "]";
}





}

}
@@ -153,6 +153,13 @@ public void setNotes(List<String> notes) {
this.notes = notes;
}


public void addNote(String note) {
this.notes.add(note);
}



@Override
public String toString() {
return "StudentRecord [student=" + student + ", department="