Skip to content

Latest commit

 

History

History
151 lines (99 loc) · 4.48 KB

File metadata and controls

151 lines (99 loc) · 4.48 KB

Development Pipeline - BookStore

Schedule: 1 month (until 08/05/2025) Goal: Complete bookstore system with microkernel architecture and plugins

Overview

The project uses a weekly delivery-focused approach, prioritizing robust configuration in the first week to accelerate development in the following weeks. Using Hibernate as ORM significantly reduces the complexity of data access.


Week 1 (until 07/13): Configuration and Foundation

Goal: 100% functional environment and base project compiling

Essential Tasks

  1. Environment Setup

    • Install SDKMAN and Java 24
    • Install Docker and start MariaDB with docker-compose up -d
    • Test database connection (DBeaver or CLI client)
    • Configure Java 24 in project (sdk use ...)
  2. Project Configuration

    • Run mvn install in root directory (microkernel/)
    • Create first empty plugin (user-plugin)
    • Add plugin to main POM
    • Verify that mvn install still works
  3. Hibernate Configuration ⚠️ CRITICAL

    • Add dependencies (hibernate-core, mariadb-java-client) to plugin POMs
    • Create persistence.xml file with database configuration
    • Implement utility class JPAUtil to manage EntityManagerFactory
    • Configure hibernate.hbm2ddl.auto=update

⚠️ Note: This is the most critical week - highest time and study investment, but essential for project success.

Week 2 (until 07/20): User Plugin (Complete CRUD)

Goal: Complete user management functionality as model for other plugins

Development Tasks

  1. Data Model

    • Create User.java class with JPA annotations (@Entity, @Table, @Id, @Column)
    • Define attributes: name, email, registrationDate
  2. Persistence Layer

    • Implement UserDAO.java using EntityManager
    • Methods: save(), update(), delete(), findById(), findAll()
    • Manage transactions properly
  3. Graphical Interface

    • Create JavaFX screen for user listing
    • Registration and editing forms
    • Connect UI with DAO
  4. Microkernel Integration

    • Integrate plugin to main system
    • Create menu/button to access user management
  5. Functional Tests (Recommended)

    • Create UserDAOTest.java
    • Test each CRUD operation
    • Validate business rules

Week 3 (until 07/27): Pattern Replication

Goal: Implement Books and Loans plugins

Books Plugin

  1. Base Structure

    • Use user-plugin as template for book-plugin
    • Create Book.java with attributes: title, author, isbn, publicationYear, availableCopies
    • Implement BookDAO.java (adapted copy of UserDAO)
  2. Interface and Integration

    • UI for book management
    • Integration with microkernel

Loans Plugin

  1. Complex Model

    • Create Loan.java with JPA relationships (@ManyToOne)
    • Map relationships with User and Book
    • Attributes: id, user, book, loanDate, returnDate
  2. Business Logic

    • Implement LoanDAO.java with transactions
    • Method createLoan(): create loan + decrease stock
    • Method registerReturn(): finalize loan + increase stock
    • Availability validations
  3. Advanced Interface

    • Form with ComboBox for users and books
    • Available copies validation
    • Active loans listing
  4. Functional Tests

    • BookDAOTest.java
    • LoanDAOTest.java (especially important to validate business rules)

Week 4 (until 08/05): Finalization and Delivery

Goal: Reports, refinement and final delivery

Reports Plugin

  1. Implementation
    • Create report-plugin
    • Implement ReportDAO.java with JPQL queries
    • UI for report display

Refinement and Quality

  1. General Review

    • Evaluate UI/UX - is the system easy to use?
    • Test all main use cases
    • Verify integration between plugins
  2. Documentation

    • Write final README.md with:
      • Compilation instructions (mvn install)
      • Execution instructions (mvn exec:java -pl app)
      • System usage guide
  3. Delivery Preparation

    • Run mvn clean to clean temporary files
    • Compress source code (.zip or .tar.gz)
    • Test compilation and execution in clean environment

Final Delivery

  • Email with exact subject: INF008 T2 Andrey Gomes da Silva Nascimento
  • Attach compressed project file
  • Include execution instructions