// Path: src/main/java/com/cloudcoders/gestaca/logic/IEnrollmentDAO.java
// public interface IEnrollmentDAO {
// 
//   Enrollment get(int id);
// 
//   List<Enrollment> getAll();
// 
//   void add(Enrollment enrollment) throws InvalidPersonException, InvalidTaughtCourse;
// 
//   Enrollment remove(Enrollment enrollment);
// 
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/IStudentDAO.java
// public interface IStudentDAO {
// 
//   Student get(String id);
// 
//   void add(Student student);
// 
//   Student remove(Student student);
// 
//   List<Student> getAll();
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/ITaughtCourseDAO.java
// public interface ITaughtCourseDAO {
// 
//   void add(TaughtCourse taughtCourse);
// 
//   TaughtCourse remove(TaughtCourse taughtCourse);
// 
//   TaughtCourse get(int id);
// 
//   List<TaughtCourse> getAll();
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/exceptions/InvalidPersonException.java
// public class InvalidPersonException extends Exception {
//   public InvalidPersonException(String message) {
//     super(message);
//   }
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/exceptions/InvalidTaughtCourse.java
// public class InvalidTaughtCourse extends Exception {
//   public InvalidTaughtCourse(String message) {
//     super(message);
//   }
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/model/Enrollment.java
// public class Enrollment {
//   private Date cancellationDate;
//   private Date enrollemntDate;
//   private boolean uniquePayment;
//   private List<Absence> absences;
//   private TaughtCourse taughtCourse;
//   private int id;
//   private Student student;
// 
//   public Enrollment(Date cancellationDate,
//                     Date enrollemntDate,
//                     boolean uniquePayment,
//                     int id,
//                     TaughtCourse taughtCourse,
//                     Student student) {
//     this.cancellationDate = cancellationDate;
//     this.enrollemntDate = enrollemntDate;
//     this.uniquePayment = uniquePayment;
//     this.id = id;
//     this.taughtCourse = taughtCourse;
//     this.student = student;
//     this.absences = new ArrayList<Absence>();
//   }
// 
//   public Enrollment(Date cancellationDate,
//                     Date enrollemntDate,
//                     boolean uniquePayment,
//                     int id, List<Absence> absences,
//                     TaughtCourse taughtCourse,
//                     Student student) {
//     this.cancellationDate = cancellationDate;
//     this.enrollemntDate = enrollemntDate;
//     this.uniquePayment = uniquePayment;
//     this.id = id;
//     this.absences = absences;
//     this.taughtCourse = taughtCourse;
//     this.student = student;
//   }
// 
//   public void addAbsences(Absence absence) {
//     this.absences.add(absence);
//   }
// 
//   public void removeAbsences(Absence absence) {
//     this.absences.remove(absence);
//   }
// 
//   public Student getStudent() {
//     return student;
//   }
// 
//   public Date getCancellationDate() {
//     return cancellationDate;
//   }
// 
//   public Date getEnrollemntDate() {
//     return enrollemntDate;
//   }
// 
//   public boolean isUniquePayment() {
//     return uniquePayment;
//   }
// 
//   public int getId() {
//     return id;
//   }
// 
//   public List<Absence> getAbsences() {
//     return absences;
//   }
// 
//   public TaughtCourse getTaughtCourse() {
//     return taughtCourse;
//   }
// 
// }


import com.cloudcoders.gestaca.logic.IEnrollmentDAO;
import com.cloudcoders.gestaca.logic.IStudentDAO;
import com.cloudcoders.gestaca.logic.ITaughtCourseDAO;
import com.cloudcoders.gestaca.logic.exceptions.InvalidPersonException;
import com.cloudcoders.gestaca.logic.exceptions.InvalidTaughtCourse;
import com.cloudcoders.gestaca.model.Enrollment;
package com.cloudcoders.gestaca.logic.enrollment;


public class AddEnrollment  {

  IEnrollmentDAO iEnrollmentDAO;
  ITaughtCourseDAO iTaughtCourseDAO;
  IStudentDAO iStudentDAO;

// Path: src/main/java/com/cloudcoders/gestaca/logic/IEnrollmentDAO.java
// public interface IEnrollmentDAO {
// 
//   Enrollment get(int id);
// 
//   List<Enrollment> getAll();
// 
//   void add(Enrollment enrollment) throws InvalidPersonException, InvalidTaughtCourse;
// 
//   Enrollment remove(Enrollment enrollment);
// 
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/IStudentDAO.java
// public interface IStudentDAO {
// 
//   Student get(String id);
// 
//   void add(Student student);
// 
//   Student remove(Student student);
// 
//   List<Student> getAll();
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/ITaughtCourseDAO.java
// public interface ITaughtCourseDAO {
// 
//   void add(TaughtCourse taughtCourse);
// 
//   TaughtCourse remove(TaughtCourse taughtCourse);
// 
//   TaughtCourse get(int id);
// 
//   List<TaughtCourse> getAll();
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/exceptions/InvalidPersonException.java
// public class InvalidPersonException extends Exception {
//   public InvalidPersonException(String message) {
//     super(message);
//   }
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/logic/exceptions/InvalidTaughtCourse.java
// public class InvalidTaughtCourse extends Exception {
//   public InvalidTaughtCourse(String message) {
//     super(message);
//   }
// }
// 
// Path: src/main/java/com/cloudcoders/gestaca/model/Enrollment.java
// public class Enrollment {
//   private Date cancellationDate;
//   private Date enrollemntDate;
//   private boolean uniquePayment;
//   private List<Absence> absences;
//   private TaughtCourse taughtCourse;
//   private int id;
//   private Student student;
// 
//   public Enrollment(Date cancellationDate,
//                     Date enrollemntDate,
//                     boolean uniquePayment,
//                     int id,
//                     TaughtCourse taughtCourse,
//                     Student student) {
//     this.cancellationDate = cancellationDate;
//     this.enrollemntDate = enrollemntDate;
//     this.uniquePayment = uniquePayment;
//     this.id = id;
//     this.taughtCourse = taughtCourse;
//     this.student = student;
//     this.absences = new ArrayList<Absence>();
//   }
// 
//   public Enrollment(Date cancellationDate,
//                     Date enrollemntDate,
//                     boolean uniquePayment,
//                     int id, List<Absence> absences,
//                     TaughtCourse taughtCourse,
//                     Student student) {
//     this.cancellationDate = cancellationDate;
//     this.enrollemntDate = enrollemntDate;
//     this.uniquePayment = uniquePayment;
//     this.id = id;
//     this.absences = absences;
//     this.taughtCourse = taughtCourse;
//     this.student = student;
//   }
// 
//   public void addAbsences(Absence absence) {
//     this.absences.add(absence);
//   }
// 
//   public void removeAbsences(Absence absence) {
//     this.absences.remove(absence);
//   }
// 
//   public Student getStudent() {
//     return student;
//   }
// 
//   public Date getCancellationDate() {
//     return cancellationDate;
//   }
// 
//   public Date getEnrollemntDate() {
//     return enrollemntDate;
//   }
// 
//   public boolean isUniquePayment() {
//     return uniquePayment;
//   }
// 
//   public int getId() {
//     return id;
//   }
// 
//   public List<Absence> getAbsences() {
//     return absences;
//   }
// 
//   public TaughtCourse getTaughtCourse() {
//     return taughtCourse;
//   }
// 
// }


// Path: src/main/java/com/cloudcoders/gestaca/logic/enrollment/AddEnrollment.java
import com.cloudcoders.gestaca.logic.IEnrollmentDAO;
import com.cloudcoders.gestaca.logic.IStudentDAO;
import com.cloudcoders.gestaca.logic.ITaughtCourseDAO;
import com.cloudcoders.gestaca.logic.exceptions.InvalidPersonException;
import com.cloudcoders.gestaca.logic.exceptions.InvalidTaughtCourse;
import com.cloudcoders.gestaca.model.Enrollment;

package com.cloudcoders.gestaca.logic.enrollment;


public class AddEnrollment  {

  IEnrollmentDAO iEnrollmentDAO;
  ITaughtCourseDAO iTaughtCourseDAO;
  IStudentDAO iStudentDAO;

  public AddEnrollment(IEnrollmentDAO iEnrollmentDAO, ITaughtCourseDAO iTaughtCourseDAO, IStudentDAO iStudentDAO) {