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
this is what i have so far:
structure the project as follows:

org.yourname.wealthguardian
├── controller
├── service
├── model
│ ├── User.java
│ ├── Transaction.java
│ ├── Account.java
│ └── Budget.java
├── repository
├── exception
└── util

### User.java

package org.yourname.wealthguardian.model;

import java.util.Set;

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

private Long userId;
private String username;
private String password;
private String email;

// Constructors
public User() {}

public User(Long userId, String username, String password, String email) {
this.userId = userId;
this.username = username;
this.password = password;
this.email = email;
}

// Getters and Setters
public Long getUserId() {
return userId;
}

public void setUserId(Long userId) {
this.userId = userId;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}


### Transaction.java

package org.yourname.wealthguardian.model;

import java.time.LocalDateTime;

/
* Represents a financial transaction in the WealthGuardian application.
*/
public class Transaction {

private Long transactionId;
private Long accountId;
private Double amount;
private String type;
private LocalDateTime date;
private String description;

// Constructors
public Transaction() {}

public Transaction(Long transactionId, Long accountId, Double amount, String type, LocalDateTime date, String description) {
this.transactionId = transactionId;
this.accountId = accountId;
this.amount = amount;
this.type = type;
this.date = date;
this.description = description;
}

// Getters and Setters
public Long getTransactionId() {
return transactionId;
}

public void setTransactionId(Long transactionId) {
this.transactionId = transactionId;
}

public Long getAccountId() {
return accountId;
}

public void setAccountId(Long accountId) {
this.accountId = accountId;
}

public Double getAmount() {
return amount;
}

public void setAmount(Double amount) {
this.amount = amount;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public LocalDateTime getDate() {
return date;
}

public void setDate(LocalDateTime date) {
this.date = date;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}
}


### Account.java

package org.yourname.wealthguardian.model;

/
* Represents a financial account in the WealthGuardian application.
* A financial account can be a checking, savings, or investment account.
*/
public class Account {

private Long accountId;
private Long userId;
private String accountName;
private Double currentBalance;

// Constructors
public Account() {}

public Account(Long accountId, Long userId, String accountName, Double currentBalance) {
this.accountId = accountId;
this.userId = userId;
this.accountName = accountName;
this.currentBalance = currentBalance;
}

// Getters and Setters
public Long getAccountId() {
return accountId;
}

public void setAccountId(Long accountId) {
this.accountId = accountId;
}

public Long getUserId() {
return userId;
}

public void setUserId(Long userId) {
this.userId = userId;
}

public String getAccountName() {
return accountName;
}

public void setAccountName(String accountName) {
this.accountName = accountName;
}

public Double getCurrentBalance() {
return currentBalance;
}

public void setCurrentBalance(Double currentBalance) {
this.currentBalance = currentBalance;
}
}


### Budget.java

package org.yourname.wealthguardian.model;

/
* Represents a budget in the WealthGuardian application.
* Helps in setting and tracking monthly spending limits and financial goals.
/
public class Budget {

private Long budgetId;
private Long userId;
private Double amount;
private String category;

// Constructors
public Budget() {}

public Budget(Long budgetId, Long userId, Double amount, String category) {
this.budgetId = budgetId;
this.userId = userId;
this.amount = amount;
this.category = category;
}

// Getters and Setters
public Long getBudgetId() {
return budgetId;
}

public void setBudgetId(Long budgetId) {
this.budgetId = budgetId;
}

public Long getUserId() {
return userId;
}

public void setUserId(Long userId) {
this.userId = userId;
}

public Double getAmount() {
return amount;
}

public void setAmount(Double amount) {
this.amount = amount;
}

public String getCategory() {
return category;
}

public void setCategory(String category) {
this.category = category;
}
}
this is my guideline:
### 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