Skip to content

Create Exam entity model and Data Access Object #17

@aolguin89

Description

@aolguin89

User Story

As a developer
I want to implement the Exam entity and DAO layer
So that the application can perform database operations on exams

Description

Implement Exam POJO matching the database schema and create DAO layer for exam-related database operations.

Tasks

Exam Model (POJO)

  • Create Exam.java in model/ package
  • Add all fields matching exams table schema
  • Implement constructors (empty + full)
  • Implement getters and setters
  • Add method isAvailable() - checks if exam is currently available
  • Override toString() for debugging
  • Add Javadoc documentation

Exam DAO Interface

  • Create ExamDAO.java interface in dao/ package
  • Define method signatures for CRUD operations
  • Define findByCourse(int courseId) method
  • Define findAvailableByStudent(int studentId) method
  • Add Javadoc documentation

Exam DAO Implementation

  • Create ExamDAOImpl.java in dao/ package
  • Implement findById(int id)
  • Implement findAll()
  • Implement findByCourse(int courseId) - all exams for a course
  • Implement findAvailableByStudent(int studentId) - available exams for enrolled courses
  • Implement create(Exam exam)
  • Implement update(Exam exam)
  • Implement delete(int id)
  • Handle SQL exceptions properly
  • Close resources correctly

Testing

  • Test findByCourse() returns course exams
  • Test findAvailableByStudent() filters correctly
  • Test isAvailable() method with different dates
  • Test findById() retrieves correct exam

Acceptance Criteria

  • Exam.java includes all fields from database schema
  • ExamDAO interface defines all required operations
  • ExamDAOImpl successfully performs queries
  • findAvailableByStudent() checks enrollment and date range
  • isAvailable() validates current time correctly
  • No SQL injection vulnerabilities
  • Resources closed properly
  • All methods include error handling
  • Code includes comprehensive Javadoc

Metadata

Metadata

Assignees

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions