From 690e29a578c9682c0cbd80c9bf8057315a3843e1 Mon Sep 17 00:00:00 2001 From: Dmitrii Cravcenco Date: Thu, 21 Sep 2023 11:41:53 +0300 Subject: [PATCH 1/6] Add dependency --- pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pom.xml b/pom.xml index e717a1a..dcb0a47 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,10 @@ test 3.1.2 + + org.springframework.boot + spring-boot-starter-security + -- 2.49.1 From 984304a4659deaaa028f9b3ba8054da39227b24d Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 21 Sep 2023 12:37:28 +0300 Subject: [PATCH 2/6] Changed folder structure --- pom.xml | 9 +++++ .../controller/BasicController.java | 26 +++++++++++++ .../controllers/GetHelloWorld.java | 13 ------- .../custom/UppercaseStrategy.java | 39 +++++++++++++++++++ .../expensetrackerfaf/model/BasicEntity.java | 37 ++++++++++++++++++ .../repository/BasicRepository.java | 12 ++++++ .../service/BasicService.java | 9 +++++ .../service/BasicServiceImpl.java | 23 +++++++++++ src/main/resources/application.properties | 4 ++ .../resources/templates/basic-template.jsp | 25 ++++++++++++ 10 files changed, 184 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java delete mode 100644 src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java create mode 100644 src/main/java/com/faf223/expensetrackerfaf/custom/UppercaseStrategy.java create mode 100644 src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java create mode 100644 src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java create mode 100644 src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java create mode 100644 src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java create mode 100644 src/main/resources/templates/basic-template.jsp diff --git a/pom.xml b/pom.xml index e717a1a..b453c0b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,15 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.microsoft.sqlserver + mssql-jdbc + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java new file mode 100644 index 0000000..fbb3f0c --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java @@ -0,0 +1,26 @@ +package com.faf223.expensetrackerfaf.controller; + +import com.faf223.expensetrackerfaf.model.BasicEntity; +import com.faf223.expensetrackerfaf.repository.BasicRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/getData") +public class BasicController { + private final BasicRepository basicRepository; + + @Autowired + public BasicController(BasicRepository basicRepository) { + this.basicRepository = basicRepository; + } + + @GetMapping() + public List listDepartments() { + return basicRepository.findAll(); + } +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java b/src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java deleted file mode 100644 index 6ee56ac..0000000 --- a/src/main/java/com/faf223/expensetrackerfaf/controllers/GetHelloWorld.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.faf223.expensetrackerfaf.controllers; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -class GetHelloWorld { - - @GetMapping("/") - public String helloWorld() { - return "Hello, World!"; - } -} diff --git a/src/main/java/com/faf223/expensetrackerfaf/custom/UppercaseStrategy.java b/src/main/java/com/faf223/expensetrackerfaf/custom/UppercaseStrategy.java new file mode 100644 index 0000000..9c3cc83 --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/custom/UppercaseStrategy.java @@ -0,0 +1,39 @@ +package com.faf223.expensetrackerfaf.custom; + +import org.hibernate.boot.model.naming.Identifier; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; + +public class UppercaseStrategy implements PhysicalNamingStrategy { + + @Override + public Identifier toPhysicalCatalogName(Identifier identifier, JdbcEnvironment jdbcEnvironment) { + return identifier; // No modification for catalog name + } + + @Override + public Identifier toPhysicalSchemaName(Identifier identifier, JdbcEnvironment jdbcEnvironment) { + return identifier; // No modification for schema name + } + + @Override + public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) { + String tableName = name.getText(); + return new Identifier(tableName, name.isQuoted()); + } + + @Override + public Identifier toPhysicalSequenceName(Identifier identifier, JdbcEnvironment jdbcEnvironment) { + return identifier; // No modification for sequence name + } + + @Override + public Identifier toPhysicalColumnName(Identifier identifier, JdbcEnvironment jdbcEnvironment) { + return identifier; // No modification for column name + } + + @Override + public Identifier toPhysicalTypeName(Identifier logicalName, JdbcEnvironment jdbcEnvironment) { + return PhysicalNamingStrategy.super.toPhysicalTypeName(logicalName, jdbcEnvironment); + } +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java b/src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java new file mode 100644 index 0000000..06f0644 --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java @@ -0,0 +1,37 @@ +package com.faf223.expensetrackerfaf.model; + +import jakarta.persistence.*; +import java.util.Date; + +@Entity +@Table(name = "Department", schema = "HumanResources") +public class BasicEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "DepartmentID") + private Short departmentId; + + @Column(name = "GroupName", nullable = false, length = 50) + private String groupName; + + @Column(name = "ModifiedDate", nullable = false) + @Temporal(TemporalType.TIMESTAMP) + private Date modifiedDate; + + @Column(name = "Name", nullable = false, length = 50) + private String name; + + public Short getDepartmentId() { + return departmentId; + } + public String getGroupName() { + return groupName; + } + public Date getModifiedDate() { + return modifiedDate; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java new file mode 100644 index 0000000..94f10e3 --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java @@ -0,0 +1,12 @@ +package com.faf223.expensetrackerfaf.repository; + +import com.faf223.expensetrackerfaf.model.BasicEntity; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface BasicRepository extends JpaRepository { + // You can define custom query methods here if needed +} + diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java b/src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java new file mode 100644 index 0000000..a424dce --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java @@ -0,0 +1,9 @@ +package com.faf223.expensetrackerfaf.service; + +import com.faf223.expensetrackerfaf.model.BasicEntity; + +import java.util.List; + +public interface BasicService { + List getAllData(); +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java b/src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java new file mode 100644 index 0000000..8a83825 --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java @@ -0,0 +1,23 @@ +package com.faf223.expensetrackerfaf.service; + +import com.faf223.expensetrackerfaf.model.BasicEntity; +import com.faf223.expensetrackerfaf.repository.BasicRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class BasicServiceImpl implements BasicService { + private final BasicRepository basicRepository; + + @Autowired + public BasicServiceImpl(BasicRepository basicRepository) { + this.basicRepository = basicRepository; + } + + @Override + public List getAllData() { + return basicRepository.findAll(); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..4d2c5a7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,5 @@ +spring.datasource.url=jdbc:sqlserver://DANIEL-LAPTOP\\SQLEXPRESS01:1433;databaseName=AdventureWorks2022;user=Daniel1;password=daniel;encrypt=true;trustServerCertificate=true; +spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect +spring.jpa.hibernate.naming.physical-strategy=com.faf223.expensetrackerfaf.custom.UppercaseStrategy diff --git a/src/main/resources/templates/basic-template.jsp b/src/main/resources/templates/basic-template.jsp new file mode 100644 index 0000000..de83d98 --- /dev/null +++ b/src/main/resources/templates/basic-template.jsp @@ -0,0 +1,25 @@ + + + + + Department List + + +

Department List

+ + + + + + + + + + + + + + +
Department IDNameGroup NameModified Date
+ + -- 2.49.1 From 7232cc2f8a40f3b4bc6dab284cfcdae6cf8e332b Mon Sep 17 00:00:00 2001 From: mirrerror Date: Thu, 21 Sep 2023 12:41:37 +0300 Subject: [PATCH 3/6] Add more requests --- .../controllers/MainController.java | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java index fe74c84..875259d 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java @@ -1,9 +1,12 @@ package com.faf223.expensetrackerfaf.controllers; +import entities.Expense; +import entities.Income; +import entities.Role; import entities.User; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController public class MainController { @@ -18,4 +21,46 @@ public class MainController { return new User(id, "Test", null, null, null, null, null, null); } + @PostMapping("/users/set/{id}/name") + public String setName(@PathVariable int id, + @RequestParam("name") String name) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/email") + public String setEmail(@PathVariable int id, + @RequestParam("email") String email) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/login") + public String setLogin(@PathVariable int id, + @RequestParam("login") String login) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/password") + public String setPassword(@PathVariable int id, + @RequestParam("password") String password) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/role") + public String setRole(@PathVariable int id, + @RequestParam("role") Role role) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/expenses") + public String setExpenses(@PathVariable int id, + @RequestParam("expenses") List expenses) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/incomes") + public String setIncomes(@PathVariable int id, + @RequestParam("incomes")List incomes) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + } -- 2.49.1 From fad1a8e2849985015e1b1e77b31f57e84c597417 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 21 Sep 2023 12:43:40 +0300 Subject: [PATCH 4/6] Changed folder structure --- .../faf223/expensetrackerfaf/model}/Categories.java | 2 +- .../faf223/expensetrackerfaf/model}/Expense.java | 4 +++- .../faf223/expensetrackerfaf/model}/Income.java | 4 +++- .../faf223/expensetrackerfaf/model}/Role.java | 2 +- .../faf223/expensetrackerfaf/model}/User.java | 2 +- .../faf223/expensetrackerfaf/util}/IMoneyTransaction.java | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) rename src/main/java/{entities => com/faf223/expensetrackerfaf/model}/Categories.java (95%) rename src/main/java/{entities => com/faf223/expensetrackerfaf/model}/Expense.java (88%) rename src/main/java/{entities => com/faf223/expensetrackerfaf/model}/Income.java (88%) rename src/main/java/{entities => com/faf223/expensetrackerfaf/model}/Role.java (58%) rename src/main/java/{entities => com/faf223/expensetrackerfaf/model}/User.java (97%) rename src/main/java/{entities => com/faf223/expensetrackerfaf/util}/IMoneyTransaction.java (72%) diff --git a/src/main/java/entities/Categories.java b/src/main/java/com/faf223/expensetrackerfaf/model/Categories.java similarity index 95% rename from src/main/java/entities/Categories.java rename to src/main/java/com/faf223/expensetrackerfaf/model/Categories.java index 43bda11..d30264f 100644 --- a/src/main/java/entities/Categories.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Categories.java @@ -1,4 +1,4 @@ -package entities; +package com.faf223.expensetrackerfaf.model; public class Categories { diff --git a/src/main/java/entities/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java similarity index 88% rename from src/main/java/entities/Expense.java rename to src/main/java/com/faf223/expensetrackerfaf/model/Expense.java index c6b2c3b..1ffbec4 100644 --- a/src/main/java/entities/Expense.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java @@ -1,4 +1,6 @@ -package entities; +package com.faf223.expensetrackerfaf.model; + +import com.faf223.expensetrackerfaf.util.IMoneyTransaction; public class Expense implements IMoneyTransaction { diff --git a/src/main/java/entities/Income.java b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java similarity index 88% rename from src/main/java/entities/Income.java rename to src/main/java/com/faf223/expensetrackerfaf/model/Income.java index 31b5d67..a3449e5 100644 --- a/src/main/java/entities/Income.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java @@ -1,4 +1,6 @@ -package entities; +package com.faf223.expensetrackerfaf.model; + +import com.faf223.expensetrackerfaf.util.IMoneyTransaction; public class Income implements IMoneyTransaction { diff --git a/src/main/java/entities/Role.java b/src/main/java/com/faf223/expensetrackerfaf/model/Role.java similarity index 58% rename from src/main/java/entities/Role.java rename to src/main/java/com/faf223/expensetrackerfaf/model/Role.java index 258e49e..d241cf8 100644 --- a/src/main/java/entities/Role.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Role.java @@ -1,4 +1,4 @@ -package entities; +package com.faf223.expensetrackerfaf.model; public enum Role { diff --git a/src/main/java/entities/User.java b/src/main/java/com/faf223/expensetrackerfaf/model/User.java similarity index 97% rename from src/main/java/entities/User.java rename to src/main/java/com/faf223/expensetrackerfaf/model/User.java index 37f571a..35fe0fc 100644 --- a/src/main/java/entities/User.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/User.java @@ -1,4 +1,4 @@ -package entities; +package com.faf223.expensetrackerfaf.model; import java.util.List; diff --git a/src/main/java/entities/IMoneyTransaction.java b/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java similarity index 72% rename from src/main/java/entities/IMoneyTransaction.java rename to src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java index 70b92d5..2eb4488 100644 --- a/src/main/java/entities/IMoneyTransaction.java +++ b/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java @@ -1,4 +1,4 @@ -package entities; +package com.faf223.expensetrackerfaf.util; public interface IMoneyTransaction { -- 2.49.1 From 248982d128c9804535630f6c080ac7383f6a5fc3 Mon Sep 17 00:00:00 2001 From: Dmitrii Cravcenco Date: Thu, 21 Sep 2023 12:44:43 +0300 Subject: [PATCH 5/6] Edit entities, add security package --- .../controllers/MainController.java | 2 +- .../entities/Categories.java | 2 +- .../expensetrackerfaf}/entities/Expense.java | 28 ++++++--- .../expensetrackerfaf/entities/Income.java | 55 +++++++++++++++++ .../expensetrackerfaf}/entities/Role.java | 4 +- .../expensetrackerfaf}/entities/User.java | 17 +++++- .../security/PersonDetails.java | 59 +++++++++++++++++++ .../util/IMoneyTransaction.java | 12 ++++ src/main/java/entities/IMoneyTransaction.java | 9 --- src/main/java/entities/Income.java | 41 ------------- 10 files changed, 165 insertions(+), 64 deletions(-) rename src/main/java/{ => com/faf223/expensetrackerfaf}/entities/Categories.java (95%) rename src/main/java/{ => com/faf223/expensetrackerfaf}/entities/Expense.java (51%) create mode 100644 src/main/java/com/faf223/expensetrackerfaf/entities/Income.java rename src/main/java/{ => com/faf223/expensetrackerfaf}/entities/Role.java (55%) rename src/main/java/{ => com/faf223/expensetrackerfaf}/entities/User.java (82%) create mode 100644 src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java create mode 100644 src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java delete mode 100644 src/main/java/entities/IMoneyTransaction.java delete mode 100644 src/main/java/entities/Income.java diff --git a/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java index fe74c84..e8dd45b 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controllers/MainController.java @@ -1,6 +1,6 @@ package com.faf223.expensetrackerfaf.controllers; -import entities.User; +import com.faf223.expensetrackerfaf.entities.User; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; diff --git a/src/main/java/entities/Categories.java b/src/main/java/com/faf223/expensetrackerfaf/entities/Categories.java similarity index 95% rename from src/main/java/entities/Categories.java rename to src/main/java/com/faf223/expensetrackerfaf/entities/Categories.java index 43bda11..57c10cb 100644 --- a/src/main/java/entities/Categories.java +++ b/src/main/java/com/faf223/expensetrackerfaf/entities/Categories.java @@ -1,4 +1,4 @@ -package entities; +package com.faf223.expensetrackerfaf.entities; public class Categories { diff --git a/src/main/java/entities/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/entities/Expense.java similarity index 51% rename from src/main/java/entities/Expense.java rename to src/main/java/com/faf223/expensetrackerfaf/entities/Expense.java index c6b2c3b..0aa321b 100644 --- a/src/main/java/entities/Expense.java +++ b/src/main/java/com/faf223/expensetrackerfaf/entities/Expense.java @@ -1,24 +1,38 @@ -package entities; +package com.faf223.expensetrackerfaf.entities; +import com.faf223.expensetrackerfaf.util.IMoneyTransaction; +import jakarta.persistence.*; + +@Entity +@Table(name = "expense") public class Expense implements IMoneyTransaction { - private int userId; + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + + @ManyToOne + @JoinColumn(name = "user_id", referencedColumnName = "id") + private User user; private int amount; private Categories.ExpenseCategory category; - public Expense(int userId, int amount, Categories.ExpenseCategory category) { - this.userId = userId; + public Expense(User user, int amount, Categories.ExpenseCategory category) { + this.user = user; this.amount = amount; this.category = category; } + public Expense() {} + @Override - public long getUserId() { - return userId; + public User getUser() { + return user; } public void setUserId(int userId) { - this.userId = userId; + this.user = user; } @Override diff --git a/src/main/java/com/faf223/expensetrackerfaf/entities/Income.java b/src/main/java/com/faf223/expensetrackerfaf/entities/Income.java new file mode 100644 index 0000000..e179b1c --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/entities/Income.java @@ -0,0 +1,55 @@ +package com.faf223.expensetrackerfaf.entities; + +import com.faf223.expensetrackerfaf.util.IMoneyTransaction; +import jakarta.persistence.*; + +@Entity +@Table(name = "income") +public class Income implements IMoneyTransaction { + + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + + @ManyToOne + @JoinColumn(name = "user_id", referencedColumnName = "id") + private User user; + private int amount; + private Categories.IncomeCategory category; + + public Income(User user, int amount, Categories.IncomeCategory category) { + this.user = user; + this.amount = amount; + this.category = category; + } + + public Income() {} + + @Override + public User getUser() { + return user; + } + + @Override + public int getAmount() { + return amount; + } + + @Override + public String getCategory() { + return category.getEffectiveName(); + } + + public void setUserId(User user) { + this.user = user; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public void setCategory(Categories.IncomeCategory category) { + this.category = category; + } +} diff --git a/src/main/java/entities/Role.java b/src/main/java/com/faf223/expensetrackerfaf/entities/Role.java similarity index 55% rename from src/main/java/entities/Role.java rename to src/main/java/com/faf223/expensetrackerfaf/entities/Role.java index 258e49e..8b64553 100644 --- a/src/main/java/entities/Role.java +++ b/src/main/java/com/faf223/expensetrackerfaf/entities/Role.java @@ -1,7 +1,5 @@ -package entities; +package com.faf223.expensetrackerfaf.entities; public enum Role { - UNREGISTERED, REGISTERED, ADMIN; - } diff --git a/src/main/java/entities/User.java b/src/main/java/com/faf223/expensetrackerfaf/entities/User.java similarity index 82% rename from src/main/java/entities/User.java rename to src/main/java/com/faf223/expensetrackerfaf/entities/User.java index 37f571a..2bb8103 100644 --- a/src/main/java/entities/User.java +++ b/src/main/java/com/faf223/expensetrackerfaf/entities/User.java @@ -1,12 +1,25 @@ -package entities; +package com.faf223.expensetrackerfaf.entities; + +import jakarta.persistence.*; import java.util.List; +@Entity +@Table(name = "User") public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - private String name, email, login, password; + private String name; + private String email; + private String login; + private String password; private Role role; + + @OneToMany(mappedBy = "user") private List expenses; + + @OneToMany(mappedBy = "user") private List incomes; public User(long id, String name, String email, String login, String password, Role role, List expenses, List incomes) { diff --git a/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java b/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java new file mode 100644 index 0000000..36842c8 --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java @@ -0,0 +1,59 @@ +package com.faf223.expensetrackerfaf.security; + +import com.faf223.expensetrackerfaf.entities.Role; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.Collection; +import java.util.List; + +public class PersonDetails implements UserDetails { + + private final User user; + + @Enumerated(EnumType.STRING) + private Role role; + + public PersonDetails(User user) { + this.user = user; + } + + @Override + public Collection getAuthorities() { + return List.of(new SimpleGrantedAuthority(role.name())); + } + + @Override + public String getPassword() { + return user.getPassword(); + } + + @Override + public String getUsername() { + return user.getUsername(); + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +} diff --git a/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java b/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java new file mode 100644 index 0000000..f32e309 --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/util/IMoneyTransaction.java @@ -0,0 +1,12 @@ +package com.faf223.expensetrackerfaf.util; + +import com.faf223.expensetrackerfaf.entities.User; + +public interface IMoneyTransaction { + + User getUser(); + + int getAmount(); + String getCategory(); + +} diff --git a/src/main/java/entities/IMoneyTransaction.java b/src/main/java/entities/IMoneyTransaction.java deleted file mode 100644 index 70b92d5..0000000 --- a/src/main/java/entities/IMoneyTransaction.java +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 31b5d67..0000000 --- a/src/main/java/entities/Income.java +++ /dev/null @@ -1,41 +0,0 @@ -package entities; - -public class Income implements IMoneyTransaction { - - private long userId; - private int amount; - private Categories.IncomeCategory category; - - public Income(long userId, int amount, Categories.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.getEffectiveName(); - } - - public void setUserId(long userId) { - this.userId = userId; - } - - public void setAmount(int amount) { - this.amount = amount; - } - - public void setCategory(Categories.IncomeCategory category) { - this.category = category; - } -} -- 2.49.1 From 4c97a09d84f51c59fdfdf0984dfcc57d84f10aeb Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 21 Sep 2023 12:58:08 +0300 Subject: [PATCH 6/6] Changed folder structure --- .../controller/MainController.java | 66 +++++++++++++++++++ .../security/PersonDetails.java | 2 +- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java new file mode 100644 index 0000000..6e8d9bf --- /dev/null +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java @@ -0,0 +1,66 @@ +package com.faf223.expensetrackerfaf.controller; + +import com.faf223.expensetrackerfaf.model.Expense; +import com.faf223.expensetrackerfaf.model.Income; +import com.faf223.expensetrackerfaf.model.Role; +import com.faf223.expensetrackerfaf.model.User; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +public class MainController { + + @GetMapping("/") + public String helloWorld() { + return "Hello, World!"; + } + + @GetMapping("/users/get/{id}") + public User getUser(@PathVariable int id) { + return new User(id, "Test", null, null, null, null, null, null); + } + + @PostMapping("/users/set/{id}/name") + public String setName(@PathVariable int id, + @RequestParam("name") String name) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/email") + public String setEmail(@PathVariable int id, + @RequestParam("email") String email) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/login") + public String setLogin(@PathVariable int id, + @RequestParam("login") String login) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/password") + public String setPassword(@PathVariable int id, + @RequestParam("password") String password) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/role") + public String setRole(@PathVariable int id, + @RequestParam("role") Role role) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/expenses") + public String setExpenses(@PathVariable int id, + @RequestParam("expenses") List expenses) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + + @PostMapping("/users/set/{id}/incomes") + public String setIncomes(@PathVariable int id, + @RequestParam("incomes")List incomes) { + throw new UnsupportedOperationException("Waiting for the DB."); + } + +} \ No newline at end of file diff --git a/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java b/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java index 36842c8..cb18bc5 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java +++ b/src/main/java/com/faf223/expensetrackerfaf/security/PersonDetails.java @@ -1,6 +1,6 @@ package com.faf223.expensetrackerfaf.security; -import com.faf223.expensetrackerfaf.entities.Role; +import com.faf223.expensetrackerfaf.model.Role; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; import org.springframework.security.core.GrantedAuthority; -- 2.49.1