package arraylistclasses;
import java.util.*;

public class ClassList {
  private String discipline;
  private int courseNumber;
  private ArrayList students;

  public ClassList(String disc, int courseNum) {
    discipline = disc;
    courseNumber = courseNum;
    students = new ArrayList();
  }

  public String toString() {
    String result = "Discipline = " + discipline;
    result += "\nCourse Number = " + courseNumber;
    result += "\nStudents:";
    for (int i = 0; i < students.size(); i++) {
      // old statement was
      // StudentGrade student = students[i];
      StudentGrade student =
          (StudentGrade) students.get(i);
      result += "\n" + student.toString();
    }
    return result;
  }

// add a student to the class
  public void add(StudentGrade s) {
    students.add(s);
  }

// return the position of the StudentGrade
// object with the id, or -1 if not found.
  private int find(String id) {
    for (int i = 0; i < students.size(); i++) {
      // StudentGrade s = students[i];
      StudentGrade s =
          (StudentGrade) students.get(i);
      String sid = s.getStudentID();
      if (id.equals(sid)) {
        return i;
      }
    }
    return -1;
  }

  public boolean changeGrade(String id, double g) {
    int pos = find(id);
    if (pos == -1) {
      return false;
    }
    // StudentGrade s = students[pos];
    StudentGrade s =
          (StudentGrade) students.get(pos);
    s.setGrade(g);
    return true;
  }

  // returns true if student was removed
  // returns false if id is not in the ArrayList
  public boolean remove(String id) {
    int pos = find(id);
    if (pos == -1) {
      return false;
    } else {
      students.remove(pos);
      return true;
    }
  }

  //returns the course average
  public double getAverageGrade() {
    double sum = 0;
    for (int i = 0; i < students.size(); i++) {
      // StudentGrade s = students[i];
      StudentGrade s =
          (StudentGrade) students.get(i);
      sum += s.getGrade();
    }
    if (students.size() == 0) {
      return 0;
    } else {
      return sum / students.size();
    }
  }
}
