Skip to content

Java project for Advanced OOP course. Implemented an app that works like a social cataloging platform for books, emulating Goodreads' functionalities.

Notifications You must be signed in to change notification settings

urluconceptual/social-cataloging-platform

Repository files navigation

Social Cataloging Platform 📕

Social cataloging platform application running in CLI, implemented using Java 19, with similar functionality to Goodreads: a place for people to review books and connect with other readers and authors.

Table of Contents 📑

Stage 1️⃣

Defining and Implementing the System 📖

Creating a list of 10 actions possible in the system and at least 8 kinds of objects. The application features:

  • Simple classes featuring private/protected fields with accessor methods (getters/setters);
  • Collections capable of managing the aforementioned object, with at least one such collection being sorted;
  • Use of inheritance for creating additional classes and for use inside the Collections
  • Service classes to expose the system's functionality
  • Service calls from the Menu classes, representing the application's interface for the user.

Class Hierarchy 📊

1. Abstract Classes:

  • AbstractEntity
  • Shelf
  • User

2. Regular Classes:

  • Author - derived from User
  • Librarian - derived from User
  • Reader - derived from User
  • Book
  • Connection
  • Message
  • PersonalShelf - derived from Shelf
  • SharedShelf - derived from Shelf
  • Review
  • ReadingChallenge

3. Records:

  • Message

4. Enums:

  • BookGenre
  • ShelfType
  • UserType

Functionality

0. General Functionality ❕

You can log in or register as a new user in the command-line interface. Afterwards, you'll be prompted by an interactive menu with the options at your disposal.

1. Reader Functionality 📃

As a reader, you can:

  • Connect with others users: readers or authors;
  • Add or remove books from one of your shelves;
  • Shelves are either personal or shared, between you and multiple other readers (there's no limit on how many users can share a shelf, there's always room for more!);
  • Set reading challenges;
  • Check top books, ranked by own rating.

2. Author Functionality ✒️

As an author, you can:

  • Use the platform to promote your books;
  • Completely remove your book from the platform;
  • Check your current followers;
  • Check your average rating, determined as the mean of the ratings that your books have gotten.

3. Librarian Functionality ✒️

As a librarian, you can:

  • Use the platform to recommend books;
  • Check your current followers;
  • Add posts on your personal book club, to share your book knowledge with the readers.

Stage 2️⃣

Extending the System 📖

The application now features:

  • A template for the menus, using the template method pattern;

  • A database connection, using JDBC;

  • CRUD operations on the database, using the repository pattern;

  • Singleton generics for these operations;

  • A listener functionality, to store the actions performed in a log file;

  • A logger functionality, that notifies the user that their actions have been logged;

Screenshots 📷

To do! Add screenshots.

About

Java project for Advanced OOP course. Implemented an app that works like a social cataloging platform for books, emulating Goodreads' functionalities.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages