Skip to content

Ebz30/PodcastSchedulerProject-JavaFx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Podcast Episode Scheduler & Publisher

A JavaFX desktop application for managing and scheduling podcast episodes.

Project Structure

src/
├── app/
│   ├── Main.java                 (Entry point)
│   └── PodcastSchedulerApp.java  (JavaFX GUI Application)
├── model/
│   ├── Episode.java              (Abstract base class)
│   ├── RegularEpisode.java       (Concrete implementation)
│   ├── BonusEpisode.java         (Concrete implementation)
│   ├── EpisodeStatus.java        (Enum: DRAFT, SCHEDULED, PUBLISHED)
│   ├── Publishable.java          (Interface for scheduling/publishing)
│   ├── ScheduleConflictException.java
│   ├── EpisodePersistenceException.java
│   └── EpisodeRepository.java    (Data management & persistence)
├── module-info.java              (Java 9+ module configuration)
└── [episodes.txt]                (Generated at runtime)

Features

  • Create Episodes: Add regular or bonus episodes with title and duration
  • Schedule Episodes: Assign future release dates and times
  • Conflict Detection: Prevents scheduling two episodes at the same time
  • Publish Episodes: Mark episodes as published when their time arrives
  • Persistence: Save/load episodes from episodes.txt file
  • JavaFX GUI: User-friendly interface with input validation

Building & Running in IntelliJ IDEA

  1. Open the project in IntelliJ IDEA
  2. Configure JavaFX SDK:
    • Go to File → Project Structure → Libraries
    • Click + and add the JavaFX SDK (download from Gluon)
  3. Set Module Path (if using modular system):
    • Go to Run → Edit Configurations
    • Add VM option: --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml
  4. Run: Right-click Main.java and select Run 'Main.main()'

Testing Checklist

  • ✓ Create multiple episodes (Regular & Bonus)
  • ✓ Schedule episodes at different dates/times
  • ✓ Attempt scheduling at same time (should show conflict error)
  • ✓ Publish past/current episodes
  • ✓ Save episodes to file
  • ✓ Restart app and verify data loads correctly

OOP & Design Patterns Applied

  • Inheritance: Episode (abstract) → RegularEpisode, BonusEpisode
  • Interface: Publishable for scheduling/publishing contract
  • Polymorphism: Different episode types handled uniformly via List<Episode>
  • Custom Exceptions: Domain-specific error handling
  • Repository Pattern: Centralized data management
  • MVC Separation: Model (model/) and View-Controller (app/)

Known Limitations

  • Scheduling conflict detection checks exact time match, not duration overlap
  • No past date validation on episode creation
  • Simple text-based persistence (not database)
  • Single-threaded execution

Extra Features

  • UUID-based unique episode IDs
  • Auto-refresh ListView after create/publish actions
  • Formatted episode display in ListView
  • Input validation with user-friendly error messages

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages