package dst.ass1.jpa.dao.impl;

import dst.ass1.jpa.dao.*;

import javax.persistence.EntityManager;

public class DAOFactory implements IDAOFactory {

    /*
     * HINT: When using the org.hibernate.Session in your DAOs you can extract it from the EntityManager reference with
     * e.g., em.unwrap(org.hibernate.Session.class). Do not store this org.hibernate.Session in your DAOs, but unwrap it
     * every time you actually need it.
     */

    private EntityManager em;

    public DAOFactory(EntityManager em) {
        this.em = em;
    }

    @Override
    public IMembershipDAO createMembershipDAO() {
        return new MembershipDAO(em);
    }

    @Override
    public IParticipantDAO createParticipantDAO() {
        return new ParticipantDAO(em);
    }

    @Override
    public ILessonDAO createLessonDAO() {
        return new LessonDAO(em);
    }

    @Override
    public ILecturerDAO createLecturerDAO() {
        return new LecturerDAO(em);
    }

    @Override
    public IEnrollmentDAO createEnrollmentDAO() {
        return new EnrollmentDAO(em);
    }

    @Override
    public ICourseDAO createCourseDAO() {
        return new CourseDAO(em);
    }

    @Override
    public IMaterialDAO createMaterialDAO() {
        return new MaterialDAO(em);
    }

    @Override
    public IMaterialServerDAO createMaterialServerDAO() {
        return new MaterialServerDAO(em);
    }

    @Override
    public IMetadataDAO createMetadataDAO() {
        return new MetadataDAO(em);
    }

    @Override
    public ICoursePlatformDAO createCoursePlatformDAO() {
        return new CoursePlatformDAO(em);
    }
}
