From ccea0d393c2fbaca9cc9c7f009389d041a6ae8dc Mon Sep 17 00:00:00 2001 From: mirrerror Date: Thu, 21 Sep 2023 10:21:31 +0300 Subject: [PATCH 1/4] Added main controller and user entity --- ...GetHelloWorld.java => MainController.java} | 10 +++++- src/main/java/entities/Role.java | 7 ++++ src/main/java/entities/User.java | 32 +++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) rename src/main/java/com/faf223/expensetrackerfaf/controllers/{GetHelloWorld.java => MainController.java} (54%) create mode 100644 src/main/java/entities/Role.java create mode 100644 src/main/java/entities/User.java diff --git a/src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java similarity index 54% rename from src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java rename to src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java index 6ee56ac..1626d98 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java @@ -1,13 +1,21 @@ package com.faf223.expensetrackerfaf.controllers; +import entities.User; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController -class GetHelloWorld { +public class MainController { @GetMapping("/") public String helloWorld() { return "Hello, World!"; } + + @GetMapping("/users/{id}") + public User getUser(@PathVariable int id) { + return new User(id, "Test"); + } + } diff --git a/src/main/java/entities/Role.java b/src/main/java/entities/Role.java new file mode 100644 index 0000000..258e49e --- /dev/null +++ b/src/main/java/entities/Role.java @@ -0,0 +1,7 @@ +package entities; + +public enum Role { + + UNREGISTERED, REGISTERED, ADMIN; + +} diff --git a/src/main/java/entities/User.java b/src/main/java/entities/User.java new file mode 100644 index 0000000..ee467a1 --- /dev/null +++ b/src/main/java/entities/User.java @@ -0,0 +1,32 @@ +package entities; + +public class User { + + private long id; + private String name; + private String email; + private String login; + private String password; + private Role role; + + public User(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} From 0918a51f7aebfbf8b332bb15785683e783caadbc Mon Sep 17 00:00:00 2001 From: mirrerror Date: Thu, 21 Sep 2023 11:33:44 +0300 Subject: [PATCH 2/4] Add new entities --- pom.xml | 12 ++++ .../controllers/MainController.java | 4 +- src/main/java/entities/Expense.java | 41 +++++++++++ src/main/java/entities/ExpensesCategory.java | 5 ++ src/main/java/entities/Income.java | 41 +++++++++++ src/main/java/entities/IncomeCategory.java | 5 ++ src/main/java/entities/MoneyTransaction.java | 9 +++ src/main/java/entities/User.java | 68 +++++++++++++++++-- src/main/resources/application.properties | 4 +- 9 files changed, 180 insertions(+), 9 deletions(-) create mode 100644 src/main/java/entities/Expense.java create mode 100644 src/main/java/entities/ExpensesCategory.java create mode 100644 src/main/java/entities/Income.java create mode 100644 src/main/java/entities/IncomeCategory.java create mode 100644 src/main/java/entities/MoneyTransaction.java diff --git a/pom.xml b/pom.xml index e717a1a..7b353f3 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,18 @@ test 3.1.2 + + + org.springframework.boot + spring-boot-starter-data-jpa + 3.1.3 + + + + com.microsoft.sqlserver + mssql-jdbc + 12.4.1.jre11 + diff --git a/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java index 1626d98..fe74c84 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java @@ -13,9 +13,9 @@ public class MainController { return "Hello, World!"; } - @GetMapping("/users/{id}") + @GetMapping("/users/get/{id}") public User getUser(@PathVariable int id) { - return new User(id, "Test"); + return new User(id, "Test", null, null, null, null, null, null); } } diff --git a/src/main/java/entities/Expense.java b/src/main/java/entities/Expense.java new file mode 100644 index 0000000..606e4eb --- /dev/null +++ b/src/main/java/entities/Expense.java @@ -0,0 +1,41 @@ +package entities; + +public class Expense extends MoneyTransaction { + + private int userId; + private int amount; + private ExpensesCategory category; + + public Expense(int userId, int amount, ExpensesCategory category) { + this.userId = userId; + this.amount = amount; + this.category = category; + } + + @Override + public long getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + @Override + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + @Override + public String getCategory() { + return category.toString(); + } + + public void setCategory(ExpensesCategory category) { + this.category = category; + } +} diff --git a/src/main/java/entities/ExpensesCategory.java b/src/main/java/entities/ExpensesCategory.java new file mode 100644 index 0000000..bf76cc7 --- /dev/null +++ b/src/main/java/entities/ExpensesCategory.java @@ -0,0 +1,5 @@ +package entities; + +public enum ExpensesCategory { + MISC; +} diff --git a/src/main/java/entities/Income.java b/src/main/java/entities/Income.java new file mode 100644 index 0000000..f3edc27 --- /dev/null +++ b/src/main/java/entities/Income.java @@ -0,0 +1,41 @@ +package entities; + +public class Income extends MoneyTransaction { + + private long userId; + private int amount; + private IncomeCategory category; + + public Income(long userId, int amount, IncomeCategory category) { + this.userId = userId; + this.amount = amount; + this.category = category; + } + + @Override + public long getUserId() { + return userId; + } + + @Override + public int getAmount() { + return amount; + } + + @Override + public String getCategory() { + return category.toString(); + } + + public void setUserId(long userId) { + this.userId = userId; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public void setCategory(IncomeCategory category) { + this.category = category; + } +} diff --git a/src/main/java/entities/IncomeCategory.java b/src/main/java/entities/IncomeCategory.java new file mode 100644 index 0000000..7d1666c --- /dev/null +++ b/src/main/java/entities/IncomeCategory.java @@ -0,0 +1,5 @@ +package entities; + +public enum IncomeCategory { + MISC; +} diff --git a/src/main/java/entities/MoneyTransaction.java b/src/main/java/entities/MoneyTransaction.java new file mode 100644 index 0000000..2232df4 --- /dev/null +++ b/src/main/java/entities/MoneyTransaction.java @@ -0,0 +1,9 @@ +package entities; + +public abstract class MoneyTransaction { + + public abstract long getUserId(); + public abstract int getAmount(); + public abstract String getCategory(); + +} diff --git a/src/main/java/entities/User.java b/src/main/java/entities/User.java index ee467a1..37f571a 100644 --- a/src/main/java/entities/User.java +++ b/src/main/java/entities/User.java @@ -1,19 +1,27 @@ package entities; +import java.util.List; + public class User { - private long id; - private String name; - private String email; - private String login; - private String password; + private String name, email, login, password; private Role role; + private List expenses; + private List incomes; - public User(long id, String name) { + public User(long id, String name, String email, String login, String password, Role role, List expenses, List incomes) { this.id = id; this.name = name; + this.email = email; + this.login = login; + this.password = password; + this.role = role; + this.expenses = expenses; + this.incomes = incomes; } + public User() {} + public long getId() { return id; } @@ -29,4 +37,52 @@ public class User { public void setName(String name) { this.name = name; } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Role getRole() { + return role; + } + + public void setRole(Role role) { + this.role = role; + } + + public List getExpenses() { + return expenses; + } + + public void setExpenses(List expenses) { + this.expenses = expenses; + } + + public List getIncomes() { + return incomes; + } + + public void setIncomes(List incomes) { + this.incomes = incomes; + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..637a0d4 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,3 @@ - +spring.datasource.url=jdbc:sqlserver://DESKTOP-53DT8GT\\SQLEXPRESS:1433;databaseName=ExpensesApp;integratedSecurity=true +spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect \ No newline at end of file From 89faf93a667abbb13c3b471fcf57f9cc0da360ed Mon Sep 17 00:00:00 2001 From: mirrerror Date: Thu, 21 Sep 2023 11:48:43 +0300 Subject: [PATCH 3/4] Merged categories into one file --- src/main/java/entities/Categories.java | 28 +++++++++++++++++++ src/main/java/entities/Expense.java | 10 +++---- src/main/java/entities/ExpensesCategory.java | 5 ---- src/main/java/entities/IMoneyTransaction.java | 9 ++++++ src/main/java/entities/Income.java | 10 +++---- src/main/java/entities/IncomeCategory.java | 5 ---- src/main/java/entities/MoneyTransaction.java | 9 ------ 7 files changed, 47 insertions(+), 29 deletions(-) create mode 100644 src/main/java/entities/Categories.java delete mode 100644 src/main/java/entities/ExpensesCategory.java create mode 100644 src/main/java/entities/IMoneyTransaction.java delete mode 100644 src/main/java/entities/IncomeCategory.java delete mode 100644 src/main/java/entities/MoneyTransaction.java diff --git a/src/main/java/entities/Categories.java b/src/main/java/entities/Categories.java new file mode 100644 index 0000000..379ae3a --- /dev/null +++ b/src/main/java/entities/Categories.java @@ -0,0 +1,28 @@ +package entities; + +public class Categories { + + public enum ExpenseCategory { + MISC; + + public String getEffectiveName() { + return Categories.getEffectiveName(this.name()); + } + } + + public enum IncomeCategory { + MISC; + + public String getEffectiveName() { + return Categories.getEffectiveName(this.name()); + } + } + + private static String getEffectiveName(String name) { + String[] arr = name.split(""); + StringBuilder result = new StringBuilder(arr[0].toLowerCase()); + for(int i = 1; i < name.length(); i++) result.append(arr[i]); + return result.toString(); + } + +} diff --git a/src/main/java/entities/Expense.java b/src/main/java/entities/Expense.java index 606e4eb..c6b2c3b 100644 --- a/src/main/java/entities/Expense.java +++ b/src/main/java/entities/Expense.java @@ -1,12 +1,12 @@ package entities; -public class Expense extends MoneyTransaction { +public class Expense implements IMoneyTransaction { private int userId; private int amount; - private ExpensesCategory category; + private Categories.ExpenseCategory category; - public Expense(int userId, int amount, ExpensesCategory category) { + public Expense(int userId, int amount, Categories.ExpenseCategory category) { this.userId = userId; this.amount = amount; this.category = category; @@ -32,10 +32,10 @@ public class Expense extends MoneyTransaction { @Override public String getCategory() { - return category.toString(); + return category.getEffectiveName(); } - public void setCategory(ExpensesCategory category) { + public void setCategory(Categories.ExpenseCategory category) { this.category = category; } } diff --git a/src/main/java/entities/ExpensesCategory.java b/src/main/java/entities/ExpensesCategory.java deleted file mode 100644 index bf76cc7..0000000 --- a/src/main/java/entities/ExpensesCategory.java +++ /dev/null @@ -1,5 +0,0 @@ -package entities; - -public enum ExpensesCategory { - MISC; -} diff --git a/src/main/java/entities/IMoneyTransaction.java b/src/main/java/entities/IMoneyTransaction.java new file mode 100644 index 0000000..70b92d5 --- /dev/null +++ b/src/main/java/entities/IMoneyTransaction.java @@ -0,0 +1,9 @@ +package entities; + +public interface IMoneyTransaction { + + long getUserId(); + int getAmount(); + String getCategory(); + +} diff --git a/src/main/java/entities/Income.java b/src/main/java/entities/Income.java index f3edc27..31b5d67 100644 --- a/src/main/java/entities/Income.java +++ b/src/main/java/entities/Income.java @@ -1,12 +1,12 @@ package entities; -public class Income extends MoneyTransaction { +public class Income implements IMoneyTransaction { private long userId; private int amount; - private IncomeCategory category; + private Categories.IncomeCategory category; - public Income(long userId, int amount, IncomeCategory category) { + public Income(long userId, int amount, Categories.IncomeCategory category) { this.userId = userId; this.amount = amount; this.category = category; @@ -24,7 +24,7 @@ public class Income extends MoneyTransaction { @Override public String getCategory() { - return category.toString(); + return category.getEffectiveName(); } public void setUserId(long userId) { @@ -35,7 +35,7 @@ public class Income extends MoneyTransaction { this.amount = amount; } - public void setCategory(IncomeCategory category) { + public void setCategory(Categories.IncomeCategory category) { this.category = category; } } diff --git a/src/main/java/entities/IncomeCategory.java b/src/main/java/entities/IncomeCategory.java deleted file mode 100644 index 7d1666c..0000000 --- a/src/main/java/entities/IncomeCategory.java +++ /dev/null @@ -1,5 +0,0 @@ -package entities; - -public enum IncomeCategory { - MISC; -} diff --git a/src/main/java/entities/MoneyTransaction.java b/src/main/java/entities/MoneyTransaction.java deleted file mode 100644 index 2232df4..0000000 --- a/src/main/java/entities/MoneyTransaction.java +++ /dev/null @@ -1,9 +0,0 @@ -package entities; - -public abstract class MoneyTransaction { - - public abstract long getUserId(); - public abstract int getAmount(); - public abstract String getCategory(); - -} From 86dd4f0c15aa950c41097e23af3c9b60852a4e10 Mon Sep 17 00:00:00 2001 From: mirrerror Date: Thu, 21 Sep 2023 12:07:20 +0300 Subject: [PATCH 4/4] Merge categories into one file, add some new ones --- src/main/java/entities/Categories.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/entities/Categories.java b/src/main/java/entities/Categories.java index 379ae3a..43bda11 100644 --- a/src/main/java/entities/Categories.java +++ b/src/main/java/entities/Categories.java @@ -3,7 +3,7 @@ package entities; public class Categories { public enum ExpenseCategory { - MISC; + CREDIT, BUY, BUSINESS, ENTERTAINMENT, RESTAURANTS_AND_CAFE, COMMUNAL_PAYMENTS, SUPERMARKET, MISC; public String getEffectiveName() { return Categories.getEffectiveName(this.name()); @@ -11,7 +11,7 @@ public class Categories { } public enum IncomeCategory { - MISC; + P2P, SALARY, GIFT, CREDIT, MISC; public String getEffectiveName() { return Categories.getEffectiveName(this.name()); @@ -19,9 +19,14 @@ public class Categories { } private static String getEffectiveName(String name) { - String[] arr = name.split(""); - StringBuilder result = new StringBuilder(arr[0].toLowerCase()); - for(int i = 1; i < name.length(); i++) result.append(arr[i]); + String[] arr = name.split("_"); + StringBuilder result = new StringBuilder(); + for(String entry : arr) { + String[] entryArr = entry.split(""); + StringBuilder builder = new StringBuilder(entryArr[0]); + for(int i = 1; i < entry.length(); i++) builder.append(entryArr[i].toLowerCase()); + result.append(builder).append(" "); + } return result.toString(); }