i need help making the java files(Please provide a lengthy code w/ getters and setters):
This is the project i am trying to built:
I. Project Description
The project, named WealthGuardian, is a comprehensive personal financial management
application designed to help individuals monitor and manage their daily economic activities.
WealthGuardian was chosen as the name because it emphasizes the app’s role in guarding and
optimizing users’ wealth through insightful financial monitoring and guidance. The core functionalities of
WealthGuardian include budget tracking, which allows users to set monthly spending limits and track
day-to-day expenses to ensure they stay on budget. The investment tracker enables users to monitor
their portfolio performance, providing insights on stocks, bonds, and other investments (although this
part may be an overreach on the dev’s part).
Additionally, WealthGuardian offers a savings goal tracker that motivates and assists users in
achieving their short and long-term saving objectives by setting incremental landmarks. Finally, the
application integrates a debt management plan that offers tailored advice on reducing liabilities and
improving financial health. Overall, the aim of WealthGuardian is to offer an intuitive and accessible
interface that empowers users to enhance their financial literacy and achieve greater economic security.
Using the MoSCoW method, application of prioritization to WealthGuardian:
Essentials (MUST have)
- User authentication and management.
- Basic transaction tracking.
- Basic budget creation and tracking.
Important (SHOULD have)
- A detailed dashboard for a quick overview of financial health.
- Alerts or notifications for budget limits.
Nice to Have (COULD have)
- Investment tracking (simplified version).
- Use of interactive charts for financial data visualization.
Non-Essential (WON’T have this time)
- Comprehensive debt management tools.
- Advanced investment analysis features.
- In-depth financial health reports.
II. Model and Table Structure
List of Models:
1. User - Manages user information and authentication details.
2. Transaction - Records individual financial transactions to monitor spending and investments.
3. Account - Represents various financial accounts, such as checking, savings, or investment accounts.
4. Budget - Helps in setting and tracking monthly spending limits and financial goals.
List of Tables:
1. Table Name: Users
- Primary Key: user_id
- Model Related: User
2. Table Name: Transactions
- Primary Key: transaction_id
3- Foreign Key: account_id (links to Accounts table)
- Model Related: Transaction
3. Table Name: Accounts
- Primary Key: account_id
- Foreign Key: user_id (links to Users table)
- Model Related: Account
4. Table Name: Budgets
- Primary Key: budget_id
- Foreign Key: user_id (links to Users table)
- Model Related: Budget
III.List of Web Pages:
1. Dashboard - Provides an overview of all financial metrics including recent transactions, budget
summary, and savings goals.
2. Transaction History - Displays a detailed log of all financial transactions allowing users to review past
expenses and deposits.
3. Budget Management - Enables users to create, edit, and monitor their monthly budgets, visualizing
data to aid in financial decision-making.
4. Investments Tracker - Offers a comprehensive view of investment portfolios with performance
metrics and individual asset reviews.
5. Savings Goals - Allows setting and tracking of various saving objectives, offering motivational insights
and progress reports.
6. Debt Overview - Shows all liabilities and provides plans and suggestions for efficient debt
management.5. Savings Goals - Allows setting and tracking of various saving objectives, offering motivational insights
and progress reports.
6. Debt Overview - Shows all liabilities and provides plans and suggestions for efficient debt
a structured plan to align WealthGuardian project . Follow these guidelines:

### I. Project Structure, Standardization, and Conventions (12%)

1. Project Package Structure (2%)
- Create packages for models, repositories, services, controllers, exceptions, etc.
- Example structure:

org.yourname.wealthguardian
├── controller
├── service
├── model
├── repository
├── exception
└── util


2. Class Comments (2%)
- Add class-level Javadoc. Example:

/**
* Represents a user in the WealthGuardian application.
* Manages user information and authentication details.
*/
public class User {}


3. GitHub Hosting (5%)
- Push your code to GitHub early. Include a README.md with an overview of your project.
- Example README:

# WealthGuardian
WealthGuardian is a comprehensive personal financial management application designed to help individuals monitor and manage their daily economic activities.


4. Standard Java Naming Conventions (3%)
- Follow PascalCase for class names, camelCase for variables, methods, and URLs, snake_case for file names, and lowercase with dots for packages.
- Example:

package org.yourname.wealthguardian.controller;


### II. Core Java and Models (16%)

1. Constants in Java Classes (2%)
- Use constants for unchanging variables. Example:

public class AppConstants {
public static final String USER_TABLE = “Users”;
}


2. Models and Tables (12%)
- Ensure you have four models: User, Transaction, Account, Budget.
- Create corresponding tables in your database. Ensure correct implementations and optimize the schema.

3. Exception Handling (2%)
- Implement global exception handling using @ControllerAdvice.

@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}


### III. Database, ORM, and Hibernate (18%)

1. MySQL DBMS (2%)
- Ensure MySQL is used as your DBMS.

2. Schema Diagram and SQL (2%)
- Include a schema diagram and SQL creation scripts in your documentation.

3. Spring Initializr Configuration (2%)
- Configure application.properties correctly.

spring.datasource.url=jdbc:mysql://localhost:3306/wealthguardian
spring.datasource.username=root
spring.datasource.password=password


4. Custom Queries (3%)
- Implement at least three custom queries in your repositories.

5. Use Hibernate/JPA (3%)
- Use Spring Data JPA for data access.

6. CRUD Operations (6%)
- Ensure you perform Create, Read, Update, and Delete operations in your application.

### IV. Front-end Development (16%)

1. Styling with CSS (3%)
- Use external CSS and possibly Bootstrap for minimal styling.

2. Six Views/Pages (4%)
- Ensure you have six distinct views: Dashboard, Transaction History, Budget Management, Investments Tracker, Savings Goals, Debt Overview.

3. HTML and Thymeleaf (3%)
- Use Thymeleaf for dynamic web pages.

4. JavaScript External Scripts (3%)
- Include at least one external JavaScript file.

5. Navigation (3%)
- Include a reusable navigation bar across your pages.

### V. Spring Framework (25%)

1. Spring Boot (2%)
- Develop your project using Spring Boot.

2. Data Binding and Validation (3%)
- Annotate models for data binding and validation.

3. Repositories and Services (4%)
- Include at least two repositories and two interconnected service classes/interfaces.

4. Managed Beans/Objects (2%)
- Create managed beans using @Component, @Service, or other relevant annotations.

5. Dependency Injection (3%)
- Use @Autowired for dependency injection correctly.

6. Session Management (3%)
- Implement session management, possibly using Spring Security.

7. Transaction and Request/Response Logging (2%)
- Add transaction and logging mechanisms.

8. Web Services (3%)
- Implement RESTful web services using Spring REST.

9. Sign-up and Login with BCrypt (3%)
- Implement user registration and login with password encryption using BCrypt.

### VI. Unit Testing (8%)

1. Test Query Methods (3%)
- Write unit tests for repository query methods.

2. Service Method Tests (3%)
- Unit test at least one method in each service class.

3. Parameterized Test (2%)
- Include at least one parameterized test