From 0698eb2478ea067f82876d05fd93156277e0ce52 Mon Sep 17 00:00:00 2001 From: mirrerror Date: Mon, 23 Oct 2023 16:09:54 +0300 Subject: [PATCH 1/4] make income and expense implement interface --- src/main/java/com/faf223/expensetrackerfaf/model/Expense.java | 3 ++- src/main/java/com/faf223/expensetrackerfaf/model/Income.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java index 6bdccb1..1194c75 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java @@ -1,4 +1,5 @@ package com.faf223.expensetrackerfaf.model; +import com.faf223.expensetrackerfaf.util.IMoneyTransaction; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -13,7 +14,7 @@ import java.time.LocalDate; @AllArgsConstructor @NoArgsConstructor @Entity(name = "expenses") -public class Expense { +public class Expense implements IMoneyTransaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long expenseId; diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java index a4c88f1..b08338d 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java @@ -1,5 +1,6 @@ package com.faf223.expensetrackerfaf.model; +import com.faf223.expensetrackerfaf.util.IMoneyTransaction; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -13,7 +14,7 @@ import java.time.LocalDate; @AllArgsConstructor @NoArgsConstructor @Entity(name = "incomes") -public class Income { +public class Income implements IMoneyTransaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long incomeId; From e47f2f8df6650e6e0b8210c36df7fba724cb4cdd Mon Sep 17 00:00:00 2001 From: mirrerror Date: Mon, 23 Oct 2023 16:13:25 +0300 Subject: [PATCH 2/4] move money transaction interface --- src/main/java/com/faf223/expensetrackerfaf/model/Expense.java | 1 - .../expensetrackerfaf/{util => model}/IMoneyTransaction.java | 2 +- src/main/java/com/faf223/expensetrackerfaf/model/Income.java | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) rename src/main/java/com/faf223/expensetrackerfaf/{util => model}/IMoneyTransaction.java (78%) diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java index 1194c75..34b8a0c 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java @@ -1,5 +1,4 @@ package com.faf223.expensetrackerfaf.model; -import com.faf223.expensetrackerfaf.util.IMoneyTransaction; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java b/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java similarity index 78% rename from src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java rename to src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java index 8817420..312b809 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java @@ -1,4 +1,4 @@ -package com.faf223.expensetrackerfaf.util; +package com.faf223.expensetrackerfaf.model; import com.faf223.expensetrackerfaf.model.User; diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java index b08338d..fc4282b 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java @@ -1,6 +1,5 @@ package com.faf223.expensetrackerfaf.model; -import com.faf223.expensetrackerfaf.util.IMoneyTransaction; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.AllArgsConstructor; From 0afa1b2b7c193b85f6dd5e4cf0dae4eba95da67a Mon Sep 17 00:00:00 2001 From: mirrerror Date: Mon, 23 Oct 2023 16:38:09 +0300 Subject: [PATCH 3/4] optimize code, add interfaces --- .../dto/mappers/ExpenseMapper.java | 2 +- .../dto/mappers/IncomeMapper.java | 3 +- .../expensetrackerfaf/model/Credential.java | 52 +++++++++---------- .../expensetrackerfaf/model/Expense.java | 12 +++-- .../model/ExpenseCategory.java | 17 +++++- .../model/IMoneyTransaction.java | 9 ++-- .../model/IMoneyTransactionCategory.java | 6 +++ .../expensetrackerfaf/model/Income.java | 12 +++-- .../model/IncomeCategory.java | 16 +++++- .../faf223/expensetrackerfaf/model/Role.java | 1 - .../faf223/expensetrackerfaf/model/User.java | 1 - .../service/ExpenseService.java | 1 - .../service/IncomeService.java | 1 - 13 files changed, 87 insertions(+), 46 deletions(-) create mode 100644 src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransactionCategory.java diff --git a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java index 74eeff7..466144f 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java +++ b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java @@ -20,7 +20,7 @@ public class ExpenseMapper { } public ExpenseDTO toDto(Expense expense) { - return new ExpenseDTO(expense.getExpenseId(), userMapper.toDto(expense.getUser()), + return new ExpenseDTO(expense.getId(), userMapper.toDto(expense.getUser()), expense.getCategory(), expense.getDate(), expense.getAmount()); } diff --git a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java index 32ca33e..5bdd805 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java +++ b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java @@ -2,7 +2,6 @@ package com.faf223.expensetrackerfaf.dto.mappers; import com.faf223.expensetrackerfaf.dto.IncomeCreationDTO; import com.faf223.expensetrackerfaf.dto.IncomeDTO; -import com.faf223.expensetrackerfaf.model.Expense; import com.faf223.expensetrackerfaf.model.Income; import com.faf223.expensetrackerfaf.service.IncomeService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +20,7 @@ public class IncomeMapper { } public IncomeDTO toDto(Income income) { - return new IncomeDTO(income.getIncomeId(), userMapper.toDto(income.getUser()), + return new IncomeDTO(income.getId(), userMapper.toDto(income.getUser()), income.getCategory(), income.getDate(), income.getAmount()); } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java b/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java index f993e9f..ae93f5f 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java @@ -1,35 +1,35 @@ - package com.faf223.expensetrackerfaf.model; +package com.faf223.expensetrackerfaf.model; - import jakarta.persistence.*; - import lombok.AllArgsConstructor; - import lombok.Data; - import lombok.NoArgsConstructor; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; - @Data - @Entity(name = "credentials") - @NoArgsConstructor - @AllArgsConstructor - public class Credential { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long credentialId; +@Data +@Entity(name = "credentials") +@NoArgsConstructor +@AllArgsConstructor +public class Credential { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long credentialId; - @ManyToOne - @JoinColumn(name = "user_uuid") - private User user; + @ManyToOne + @JoinColumn(name = "user_uuid") + private User user; - private String email; - private String password; + private String email; + private String password; - @Enumerated(EnumType.STRING) - private Role role; + @Enumerated(EnumType.STRING) + private Role role; - public Credential(User user, String email, String password) { - this.user = user; - this.email = email; - this.password = password; + public Credential(User user, String email, String password) { + this.user = user; + this.email = email; + this.password = password; - this.role = Role.ROLE_USER; - } + this.role = Role.ROLE_USER; } +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java index 34b8a0c..f9830d3 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java @@ -1,10 +1,7 @@ package com.faf223.expensetrackerfaf.model; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.ToString; -import lombok.NoArgsConstructor; +import lombok.*; import java.math.BigDecimal; import java.time.LocalDate; @@ -16,6 +13,7 @@ import java.time.LocalDate; public class Expense implements IMoneyTransaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Getter(AccessLevel.NONE) private Long expenseId; @ManyToOne() @@ -30,5 +28,11 @@ public class Expense implements IMoneyTransaction { private LocalDate date; private BigDecimal amount; + + @Override + public Long getId() { + return expenseId; + } + } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java index 7662ce6..ac8326b 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java @@ -4,14 +4,29 @@ import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import lombok.AccessLevel; import lombok.Data; +import lombok.Getter; @Data @Entity(name = "expense_categories") -public class ExpenseCategory { +public class ExpenseCategory implements IMoneyTransactionCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Getter(AccessLevel.NONE) private Long categoryId; + @Getter(AccessLevel.NONE) private String categoryName; + + @Override + public Long getId() { + return categoryId; + } + + @Override + public String getName() { + return categoryName; + } + } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java b/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java index 312b809..f565db3 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransaction.java @@ -1,11 +1,14 @@ package com.faf223.expensetrackerfaf.model; -import com.faf223.expensetrackerfaf.model.User; +import java.math.BigDecimal; +import java.time.LocalDate; public interface IMoneyTransaction { + Long getId(); + LocalDate getDate(); User getUser(); - int getAmount(); - String getCategory(); + BigDecimal getAmount(); + IMoneyTransactionCategory getCategory(); } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransactionCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransactionCategory.java new file mode 100644 index 0000000..f326a9b --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/model/IMoneyTransactionCategory.java @@ -0,0 +1,6 @@ +package com.faf223.expensetrackerfaf.model; + +public interface IMoneyTransactionCategory { + Long getId(); + String getName(); +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java index fc4282b..c7476ed 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java @@ -2,10 +2,8 @@ package com.faf223.expensetrackerfaf.model; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.ToString; -import lombok.NoArgsConstructor; +import lombok.*; + import java.math.BigDecimal; import java.time.LocalDate; @@ -16,6 +14,7 @@ import java.time.LocalDate; public class Income implements IMoneyTransaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Getter(AccessLevel.NONE) private Long incomeId; @ManyToOne @@ -30,4 +29,9 @@ public class Income implements IMoneyTransaction { private LocalDate date; private BigDecimal amount; + + @Override + public Long getId() { + return incomeId; + } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java index 8bb54f0..08b41f2 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java @@ -4,15 +4,29 @@ import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import lombok.AccessLevel; import lombok.Data; +import lombok.Getter; @Data @Entity(name = "income_categories") -public class IncomeCategory { +public class IncomeCategory implements IMoneyTransactionCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Getter(AccessLevel.NONE) private Long categoryId; + @Getter(AccessLevel.NONE) private String categoryName; + + @Override + public Long getId() { + return categoryId; + } + + @Override + public String getName() { + return categoryName; + } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Role.java b/src/main/java/com/faf223/expensetrackerfaf/model/Role.java index ea04328..6169bd2 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Role.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Role.java @@ -1,4 +1,3 @@ - package com.faf223.expensetrackerfaf.model; public enum Role { diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/User.java b/src/main/java/com/faf223/expensetrackerfaf/model/User.java index 339416f..9588570 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/User.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/User.java @@ -1,4 +1,3 @@ - package com.faf223.expensetrackerfaf.model; import jakarta.persistence.*; diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java index 0683998..a72ae8d 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java @@ -5,7 +5,6 @@ import com.faf223.expensetrackerfaf.model.User; import com.faf223.expensetrackerfaf.repository.ExpenseRepository; import com.faf223.expensetrackerfaf.repository.UserRepository; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java index 63e1bab..a7711d6 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java @@ -5,7 +5,6 @@ import com.faf223.expensetrackerfaf.model.User; import com.faf223.expensetrackerfaf.repository.IncomeRepository; import com.faf223.expensetrackerfaf.repository.UserRepository; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; From c07e3ca876813d242485f8d51a79e54786aaff75 Mon Sep 17 00:00:00 2001 From: mirrerror Date: Mon, 23 Oct 2023 16:48:10 +0300 Subject: [PATCH 4/4] optimize code --- .../expensetrackerfaf/model/Expense.java | 10 ++----- .../model/ExpenseCategory.java | 26 ++++--------------- .../expensetrackerfaf/model/Income.java | 9 ++----- .../model/IncomeCategory.java | 25 ++++-------------- 4 files changed, 14 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java index f9830d3..32fe40d 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java @@ -13,8 +13,8 @@ import java.time.LocalDate; public class Expense implements IMoneyTransaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Getter(AccessLevel.NONE) - private Long expenseId; + @Column(name = "expense_id") + private Long id; @ManyToOne() @JoinColumn(name = "user_uuid") @@ -28,11 +28,5 @@ public class Expense implements IMoneyTransaction { private LocalDate date; private BigDecimal amount; - - @Override - public Long getId() { - return expenseId; - } - } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java index ac8326b..c5989ea 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java @@ -1,32 +1,16 @@ package com.faf223.expensetrackerfaf.model; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import lombok.AccessLevel; +import jakarta.persistence.*; import lombok.Data; -import lombok.Getter; @Data @Entity(name = "expense_categories") public class ExpenseCategory implements IMoneyTransactionCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Getter(AccessLevel.NONE) - private Long categoryId; - - @Getter(AccessLevel.NONE) - private String categoryName; - - @Override - public Long getId() { - return categoryId; - } - - @Override - public String getName() { - return categoryName; - } + @Column(name = "category_id") + private Long id; + @Column(name = "category_name") + private String name; } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java index c7476ed..967fa3b 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java @@ -14,8 +14,8 @@ import java.time.LocalDate; public class Income implements IMoneyTransaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Getter(AccessLevel.NONE) - private Long incomeId; + @Column(name = "income_id") + private Long id; @ManyToOne @JoinColumn(name = "user_uuid") @@ -29,9 +29,4 @@ public class Income implements IMoneyTransaction { private LocalDate date; private BigDecimal amount; - - @Override - public Long getId() { - return incomeId; - } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java index 08b41f2..237c41f 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java @@ -1,32 +1,17 @@ package com.faf223.expensetrackerfaf.model; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import lombok.AccessLevel; +import jakarta.persistence.*; import lombok.Data; -import lombok.Getter; @Data @Entity(name = "income_categories") public class IncomeCategory implements IMoneyTransactionCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Getter(AccessLevel.NONE) - private Long categoryId; + @Column(name = "category_id") + private Long id; - @Getter(AccessLevel.NONE) - private String categoryName; - - @Override - public Long getId() { - return categoryId; - } - - @Override - public String getName() { - return categoryName; - } + @Column(name = "category_name") + private String name; }