Skip to content

Conversation

@MohanedAtef238
Copy link
Contributor

What problem does this PR solve?

this PR relates to issue #2664, it contains an example for the Monolithic Architecture using MVC file structure, it also builds upon the previously abandoned code and uses a couple of time saving utilities such as Spring Data JPA and Mockito.

Mohaned Atef added 9 commits December 3, 2024 10:45
…ructure, and added basic model files using H2 database since its light and efficient
…ructure, and added basic model files using H2 database since its light and efficient
# Conflicts:
#	Monolithic-Ecommerce/src/main/java/com/iluwatar/monolithic/model/Orders.java
#	Monolithic-Ecommerce/src/main/java/com/iluwatar/monolithic/model/Products.java
#	Monolithic-Ecommerce/src/main/java/com/iluwatar/monolithic/model/User.java
…asses and used the CLI main class from the previous submission and enhanced upon it
Added Detailed Readme File in the md format
@MohanedAtef238
Copy link
Contributor Author

I am aware of the 40% coverage i'll be adding more test cases and submitting another PR

Mohaned Atef and others added 3 commits December 20, 2024 11:39
Renamed the main module/directory. Added more content to the readme.md file. fixed the orElseThrow statements

Fixes

Renamed the main module/directory. Added more content to the readme.md file. fixed the orElseThrow statements
@sonarqubecloud
Copy link

@github-actions
Copy link

github-actions bot commented Jan 26, 2025

PR Summary

This PR implements a Monolithic Ecommerce application using an MVC structure, Spring Data JPA, and Mockito. It includes models for User, Product, and Order, controllers for managing each, and repositories for database interaction. The application uses an H2 database and provides a command-line interface for user registration, product addition, and order placement. Comprehensive testing and documentation are also included.

Changes

File Summary
monolithic-architecture/README.md This file provides a comprehensive guide to the Monolithic Ecommerce application. It details the application's structure, design intent, benefits, limitations, real-world applications, and usage instructions. It also includes references to relevant technologies and resources.
monolithic-architecture/etc/Monolithic-Ecommerce.urm.puml This UML diagram visually represents the classes and relationships within the Monolithic Ecommerce application, including the User, Product, Order, and their respective controllers and repositories.
monolithic-architecture/etc/monolithic-architecture.urm.puml This UML diagram visually represents the classes and relationships within the Monolithic Ecommerce application, including the User, Product, Order, and their respective controllers and repositories.
monolithic-architecture/pom.xml This file configures the project dependencies, including Spring Boot, Spring Data JPA, H2 database, JUnit, and Mockito. It also sets up the Maven assembly plugin for packaging the application.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/EcommerceApp.java This is the main application class. It uses Spring Boot to initialize the application and provides a command-line interface for user interaction with the system. It also initializes the controllers for user, product, and order management.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/OrderController.java This controller class handles order placement, including user and product validation, stock updates, and order creation. It uses the OrderRepository, UserRepository, and ProductRepository to interact with the database.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/ProductController.java This controller class manages product operations, including adding new products and retrieving all products. It interacts with the database using the ProductRepository.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/UserController.java This controller class handles user registration. It uses the UserRepository to interact with the database and save new users.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/InsufficientStockException.java A custom exception class indicating insufficient stock for a product.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/NonExistentProductException.java A custom exception class indicating that a product does not exist.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/NonExistentUserException.java A custom exception class indicating that a user does not exist.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/Order.java This model class represents an order, containing information such as the user, product, quantity, and total price. It uses JPA annotations for database persistence.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/Product.java This model class represents a product, containing information such as name, description, price, and stock. It uses JPA annotations for database persistence.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/User.java This model class represents a user, containing information such as name and email. It uses JPA annotations for database persistence.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/OrderRepository.java This repository interface extends JpaRepository to provide database operations for the Order entity.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/ProductRepository.java This repository interface extends JpaRepository to provide database operations for the Product entity.
monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/UserRepository.java This repository interface extends JpaRepository to provide database operations for the User entity, including a custom method to find users by email.
monolithic-architecture/src/main/resources/application.properties This file configures the application's database connection settings, including the driver class name, URL, username, password, and other properties.
monolithic-architecture/src/test/java/com/iluwatar/monolithic/MonolithicAppTest.java This file contains unit tests for the EcommerceApp, including tests for user registration, product addition, order placement, and exception handling. It uses Mockito for mocking dependencies.
pom.xml The monolithic-architecture module was added to the root pom.xml's modules section.

autogenerated by presubmit.ai

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (18)
  • 798e8dc: fixed naming and readme file
  • be82b9c: Merge branch 'master' into master
  • 21b083f: Merge branch 'Monolithic-Ecommerce'
  • 5b03784: Fixes

Renamed the main module/directory. Added more content to the readme.md file. fixed the orElseThrow statements

Fixes

Renamed the main module/directory. Added more content to the readme.md file. fixed the orElseThrow statements

  • 784d45e: added more test cases
  • db565da: Merge branch 'Monolithic-Ecommerce'
  • ef03a2c: another attempted fix
  • c56393f: dropped change
  • dc2c6a5: attempting to fix some debugging issues

added more test cases, and tried to fix pom.xml

Added Detailed Readme File in the md format

  • b5b6c02: automatically generated puml
  • e926e60: fixed testing class
  • 31222a1: fixed checkstyle comments
  • 2649ee8: added application.properties file for springboot, added controller classes and used the CLI main class from the previous submission and enhanced upon it
  • 1c6c98b: Merge remote-tracking branch 'origin/master'

Conflicts:

Monolithic-Ecommerce/src/main/java/com/iluwatar/monolithic/model/Orders.java

Monolithic-Ecommerce/src/main/java/com/iluwatar/monolithic/model/Products.java

Monolithic-Ecommerce/src/main/java/com/iluwatar/monolithic/model/User.java

  • d83632d: Added "controllers" and repository classes to communicate with database to maintain code cleanliness
  • 916d683: added a pom.xml file for the monolithic structure, set up MVC file structure, and added basic model files using H2 database since its light and efficient
  • 18be6b4: added a pom.xml file for the monolithic structure, set up MVC file structure, and added basic model files using H2 database since its light and efficient
Files Processed (20)
  • monolithic-architecture/README.md (1 hunk)
  • monolithic-architecture/etc/Monolithic-Ecommerce.urm.puml (1 hunk)
  • monolithic-architecture/etc/monolithic-architecture.urm.puml (1 hunk)
  • monolithic-architecture/pom.xml (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/EcommerceApp.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/OrderController.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/ProductController.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/UserController.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/InsufficientStockException.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/NonExistentProductException.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/NonExistentUserException.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/Order.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/Product.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/User.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/OrderRepository.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/ProductRepository.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/UserRepository.java (1 hunk)
  • monolithic-architecture/src/main/resources/application.properties (1 hunk)
  • monolithic-architecture/src/test/java/com/iluwatar/monolithic/MonolithicAppTest.java (1 hunk)
  • pom.xml (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 Pull request needs attention.

Review Summary

Commits Considered (1)
  • dfbfc1e: Merge branch 'master' into master
Files Processed (20)
  • monolithic-architecture/README.md (1 hunk)
  • monolithic-architecture/etc/Monolithic-Ecommerce.urm.puml (1 hunk)
  • monolithic-architecture/etc/monolithic-architecture.urm.puml (1 hunk)
  • monolithic-architecture/pom.xml (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/EcommerceApp.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/OrderController.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/ProductController.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/controller/UserController.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/InsufficientStockException.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/NonExistentProductException.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/exceptions/NonExistentUserException.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/Order.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/Product.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/model/User.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/OrderRepository.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/ProductRepository.java (1 hunk)
  • monolithic-architecture/src/main/java/com/iluwatar/monolithic/repository/UserRepository.java (1 hunk)
  • monolithic-architecture/src/main/resources/application.properties (1 hunk)
  • monolithic-architecture/src/test/java/com/iluwatar/monolithic/MonolithicAppTest.java (1 hunk)
  • pom.xml (1 hunk)
Actionable Comments (1)
  • monolithic-architecture/README.md [1-150]

    best practice: "README.md formatting issues"

Skipped Comments (0)

@sonarqubecloud
Copy link

@iluwatar iluwatar merged commit a25b6a0 into iluwatar:master Feb 15, 2025
2 checks passed
@iluwatar
Copy link
Owner

Looks good! Thank you for the contribution 🎉

@all-contributors please add @MohanedAtef238 for code

@allcontributors
Copy link
Contributor

@iluwatar

I've put up a pull request to add @MohanedAtef238! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants