From 4b7f207de31153ecc15ccd7322ae95f6d31fb509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Sk=C3=A1cel=C3=ADk?= <xskacel@fi.muni.cz> Date: Sun, 19 Mar 2023 16:41:37 +0100 Subject: [PATCH] Added implementation for User W.I.P --- core/pom.xml | 46 +++++++++++++-- .../java/cz/fi/muni/pa165/core/user/.gitkeep | 0 .../fi}/pa165/core/CoreApplication.java | 2 +- .../muni/fi/pa165/core/DataInitializer.java | 29 +++++++++ .../fi/pa165/core/common/DomainMapper.java | 24 ++++++++ .../fi/pa165/core/common/DomainObject.java | 17 ++++++ .../fi/pa165/core/common/DomainService.java | 30 ++++++++++ .../fi}/pa165/core/company/.gitkeep | 0 .../fi}/pa165/core/device/.gitkeep | 0 .../fi}/pa165/core/house/.gitkeep | 0 .../fi}/pa165/core/smartmeter/.gitkeep | 0 .../java/cz/muni/fi/pa165/core/user/User.java | 36 +++++++++++ .../fi/pa165/core/user/UserController.java | 48 +++++++++++++++ .../muni/fi/pa165/core/user/UserMapper.java | 13 ++++ .../fi/pa165/core/user/UserRepository.java | 9 +++ .../muni/fi/pa165/core/user/UserService.java | 35 +++++++++++ .../cz/muni/fi/pa165/core/user/UserType.java | 7 +++ .../fi}/pa165/core/CoreApplicationTest.java | 2 +- microservice3/pom.xml | 2 +- .../fi}/pa165/microservice3/App.java | 2 +- .../fi}/pa165/microservice3/AppTest.java | 2 +- microservice4/pom.xml | 2 +- .../fi}/pa165/microservice4/App.java | 2 +- .../fi}/pa165/microservice4/AppTest.java | 2 +- model/pom.xml | 20 +++++++ .../model/dto/common/DomainObjectDto.java | 11 ++++ .../pa165/model/dto/user/UserCreateDto.java | 22 +++++++ .../muni/fi/pa165/model/dto/user/UserDto.java | 20 +++++++ pom.xml | 59 ++++++++++++++++++- statistics/pom.xml | 2 +- .../statistics/StatisticsApplication.java | 2 +- .../statistics/StatisticsApplicationTest.java | 2 +- 32 files changed, 430 insertions(+), 18 deletions(-) delete mode 100644 core/src/main/java/cz/fi/muni/pa165/core/user/.gitkeep rename core/src/main/java/cz/{fi/muni => muni/fi}/pa165/core/CoreApplication.java (90%) create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java rename core/src/main/java/cz/{fi/muni => muni/fi}/pa165/core/company/.gitkeep (100%) rename core/src/main/java/cz/{fi/muni => muni/fi}/pa165/core/device/.gitkeep (100%) rename core/src/main/java/cz/{fi/muni => muni/fi}/pa165/core/house/.gitkeep (100%) rename core/src/main/java/cz/{fi/muni => muni/fi}/pa165/core/smartmeter/.gitkeep (100%) create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/user/User.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java rename core/src/test/java/cz/{fi/muni => muni/fi}/pa165/core/CoreApplicationTest.java (85%) rename microservice3/src/main/java/cz/{fi/muni => muni/fi}/pa165/microservice3/App.java (86%) rename microservice3/src/test/java/cz/{fi/muni => muni/fi}/pa165/microservice3/AppTest.java (81%) rename microservice4/src/main/java/cz/{fi/muni => muni/fi}/pa165/microservice4/App.java (86%) rename microservice4/src/test/java/cz/{fi/muni => muni/fi}/pa165/microservice4/AppTest.java (81%) create mode 100644 model/pom.xml create mode 100644 model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java create mode 100644 model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java create mode 100644 model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java rename statistics/src/main/java/cz/{fi/muni => muni/fi}/pa165/statistics/StatisticsApplication.java (88%) rename statistics/src/test/java/cz/{fi/muni => muni/fi}/pa165/statistics/StatisticsApplicationTest.java (83%) diff --git a/core/pom.xml b/core/pom.xml index d7d561c..6bb3086 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,17 +4,55 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>smart-energy-management-system</artifactId> - <groupId>cz.fi.muni.pa165</groupId> + <groupId>cz.muni.fi.pa165</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> - <artifactId>core</artifactId> - + <name>core</name> + <description>Core application for smart energy management system</description> + <dependencies> + <dependency> + <groupId>cz.muni.fi.pa165</groupId> + <artifactId>model</artifactId> + <version>0.0.1-SNAPSHOT</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + </dependency> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + <version>1.5.3.Final</version> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + </dependency> + </dependencies> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> - + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + </plugins> + </build> </project> \ No newline at end of file diff --git a/core/src/main/java/cz/fi/muni/pa165/core/user/.gitkeep b/core/src/main/java/cz/fi/muni/pa165/core/user/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/core/src/main/java/cz/fi/muni/pa165/core/CoreApplication.java b/core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java similarity index 90% rename from core/src/main/java/cz/fi/muni/pa165/core/CoreApplication.java rename to core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java index 8d64445..f76cdbe 100644 --- a/core/src/main/java/cz/fi/muni/pa165/core/CoreApplication.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.core; +package cz.muni.fi.pa165.core; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java b/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java new file mode 100644 index 0000000..8a13146 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java @@ -0,0 +1,29 @@ +package cz.muni.fi.pa165.core; + +import cz.muni.fi.pa165.core.user.User; +import cz.muni.fi.pa165.core.user.UserService; +import cz.muni.fi.pa165.core.user.UserType; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +@RequiredArgsConstructor +@Component +public class DataInitializer implements ApplicationRunner { + private final UserService userService; + + @Override + public void run(ApplicationArguments args) throws Exception { + User user = User.builder() + .email("test@email.com") + .firstName("John") + .lastName("Doe") + .username("johnD") + .password("password") + .userType(UserType.ADMIN) + .build(); + userService.create(user); + + } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java new file mode 100644 index 0000000..099ae1a --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java @@ -0,0 +1,24 @@ +package cz.muni.fi.pa165.core.common; + +import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; + +import java.util.List; + +public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto> { + + T fromDto(S dto); + + S toDto(T entity); + + List<S> toDtoList(List<T> entities); + + /* + @Mappings({ + @Mapping(target = "total", expression = "java(source.getTotalElements())"), + @Mapping(target = "page", expression = "java(source.getNumber())"), + @Mapping(target = "pageSize", expression = "java(source.getSize())"), + @Mapping(target = "items", expression = "java(toDtoList(source.getContent()))") + }) + Result<S> toResult(Page<T> source); + */ +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java new file mode 100644 index 0000000..f49c035 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java @@ -0,0 +1,17 @@ +package cz.muni.fi.pa165.core.common; + +import jakarta.persistence.Id; +import jakarta.persistence.MappedSuperclass; +import lombok.Getter; +import lombok.Setter; + +import java.util.UUID; + +@Getter +@Setter +@MappedSuperclass +public abstract class DomainObject { + + @Id + private String id = UUID.randomUUID().toString(); +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java new file mode 100644 index 0000000..2d09402 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java @@ -0,0 +1,30 @@ +package cz.muni.fi.pa165.core.common; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.transaction.annotation.Transactional; + +public abstract class DomainService<T extends DomainObject> { + + public static final int DEFAULT_PAGE_SIZE = 10; + + public abstract JpaRepository<T, String> getRepository(); + + @Transactional + public T create(T entity) { + return getRepository().save(entity); + } + + @Transactional(readOnly = true) + public Page<T> findAll(Pageable pageable) { + return getRepository().findAll(pageable); + } + + @Transactional(readOnly = true) + public Page<T> findAll(int page) { + return getRepository().findAll(PageRequest.of(page, DEFAULT_PAGE_SIZE)); + } +} + diff --git a/core/src/main/java/cz/fi/muni/pa165/core/company/.gitkeep b/core/src/main/java/cz/muni/fi/pa165/core/company/.gitkeep similarity index 100% rename from core/src/main/java/cz/fi/muni/pa165/core/company/.gitkeep rename to core/src/main/java/cz/muni/fi/pa165/core/company/.gitkeep diff --git a/core/src/main/java/cz/fi/muni/pa165/core/device/.gitkeep b/core/src/main/java/cz/muni/fi/pa165/core/device/.gitkeep similarity index 100% rename from core/src/main/java/cz/fi/muni/pa165/core/device/.gitkeep rename to core/src/main/java/cz/muni/fi/pa165/core/device/.gitkeep diff --git a/core/src/main/java/cz/fi/muni/pa165/core/house/.gitkeep b/core/src/main/java/cz/muni/fi/pa165/core/house/.gitkeep similarity index 100% rename from core/src/main/java/cz/fi/muni/pa165/core/house/.gitkeep rename to core/src/main/java/cz/muni/fi/pa165/core/house/.gitkeep diff --git a/core/src/main/java/cz/fi/muni/pa165/core/smartmeter/.gitkeep b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/.gitkeep similarity index 100% rename from core/src/main/java/cz/fi/muni/pa165/core/smartmeter/.gitkeep rename to core/src/main/java/cz/muni/fi/pa165/core/smartmeter/.gitkeep diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/User.java b/core/src/main/java/cz/muni/fi/pa165/core/user/User.java new file mode 100644 index 0000000..6ae1b42 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/User.java @@ -0,0 +1,36 @@ +package cz.muni.fi.pa165.core.user; + +import cz.muni.fi.pa165.core.common.DomainObject; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "domain_user") +public class User extends DomainObject { + + private String username; + + @Enumerated(EnumType.STRING) + private UserType userType; + + private String password; + + private String email; + + private String firstName; + + private String lastName; + +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java new file mode 100644 index 0000000..b143a7c --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java @@ -0,0 +1,48 @@ +package cz.muni.fi.pa165.core.user; + +import cz.muni.fi.pa165.model.dto.user.UserCreateDto; +import cz.muni.fi.pa165.model.dto.user.UserDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/users") +public class UserController { + + private final UserService service; + + private final UserMapper mapper; + + @Autowired + public UserController(UserService service, UserMapper mapper) { + this.service = service; + this.mapper = mapper; + } + + @GetMapping + public List<UserDto> findAll() { + return service.findAll().stream().map(mapper::toDto).toList(); + } + + @GetMapping("/{id}") + public UserDto find(@PathVariable String id) { + return mapper.toDto(service.find(id)); + } + + @PostMapping + public UserDto create(@RequestBody UserCreateDto dto) { + return mapper.toDto(service.create(mapper.fromCreateDto(dto))); + } + + // @GetMapping + // public Result<UserDto> findAll(@RequestParam int page) { + // return mapper.toResult(service.findAll(page)); + // } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java new file mode 100644 index 0000000..ce1a629 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java @@ -0,0 +1,13 @@ +package cz.muni.fi.pa165.core.user; + +import cz.muni.fi.pa165.core.common.DomainMapper; +import cz.muni.fi.pa165.model.dto.user.UserCreateDto; +import cz.muni.fi.pa165.model.dto.user.UserDto; +import org.mapstruct.Mapper; + +@Mapper +public interface UserMapper extends DomainMapper<User, UserDto> { + + User fromCreateDto(UserCreateDto dto); +} + diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java new file mode 100644 index 0000000..58f12b1 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java @@ -0,0 +1,9 @@ +package cz.muni.fi.pa165.core.user; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository<User, String> { +} + diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java new file mode 100644 index 0000000..1411527 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java @@ -0,0 +1,35 @@ +package cz.muni.fi.pa165.core.user; + +import cz.muni.fi.pa165.core.common.DomainService; +import jakarta.persistence.EntityNotFoundException; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class UserService extends DomainService<User> { + + @Getter + private final UserRepository repository; + + @Autowired + public UserService(UserRepository repository) { + this.repository = repository; + } + + @Transactional(readOnly = true) + public User find(String id) { + return repository.findById(id) + .orElseThrow(() -> new EntityNotFoundException("User '" + id + "' not found.")); + } + + @Transactional(readOnly = true) + public List<User> findAll() { + return repository.findAll(); + } + +} + diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java new file mode 100644 index 0000000..3208d51 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java @@ -0,0 +1,7 @@ +package cz.muni.fi.pa165.core.user; + +public enum UserType { + NORMAL, + EMPLOYEE, + ADMIN +} diff --git a/core/src/test/java/cz/fi/muni/pa165/core/CoreApplicationTest.java b/core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java similarity index 85% rename from core/src/test/java/cz/fi/muni/pa165/core/CoreApplicationTest.java rename to core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java index e658bb4..9b7b7c0 100644 --- a/core/src/test/java/cz/fi/muni/pa165/core/CoreApplicationTest.java +++ b/core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.core; +package cz.muni.fi.pa165.core; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/microservice3/pom.xml b/microservice3/pom.xml index ef83ff9..d5559ef 100644 --- a/microservice3/pom.xml +++ b/microservice3/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>smart-energy-management-system</artifactId> - <groupId>cz.fi.muni.pa165</groupId> + <groupId>cz.muni.fi.pa165</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/microservice3/src/main/java/cz/fi/muni/pa165/microservice3/App.java b/microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java similarity index 86% rename from microservice3/src/main/java/cz/fi/muni/pa165/microservice3/App.java rename to microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java index 6882ed9..8b3f7ae 100644 --- a/microservice3/src/main/java/cz/fi/muni/pa165/microservice3/App.java +++ b/microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.microservice3; +package cz.muni.fi.pa165.microservice3; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/microservice3/src/test/java/cz/fi/muni/pa165/microservice3/AppTest.java b/microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java similarity index 81% rename from microservice3/src/test/java/cz/fi/muni/pa165/microservice3/AppTest.java rename to microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java index b5fed3c..927c9db 100644 --- a/microservice3/src/test/java/cz/fi/muni/pa165/microservice3/AppTest.java +++ b/microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.microservice3; +package cz.muni.fi.pa165.microservice3; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/microservice4/pom.xml b/microservice4/pom.xml index 8dd8d7b..388b2d4 100644 --- a/microservice4/pom.xml +++ b/microservice4/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>smart-energy-management-system</artifactId> - <groupId>cz.fi.muni.pa165</groupId> + <groupId>cz.muni.fi.pa165</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/microservice4/src/main/java/cz/fi/muni/pa165/microservice4/App.java b/microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java similarity index 86% rename from microservice4/src/main/java/cz/fi/muni/pa165/microservice4/App.java rename to microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java index 1a72bee..9044aa6 100644 --- a/microservice4/src/main/java/cz/fi/muni/pa165/microservice4/App.java +++ b/microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.microservice4; +package cz.muni.fi.pa165.microservice4; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/microservice4/src/test/java/cz/fi/muni/pa165/microservice4/AppTest.java b/microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java similarity index 81% rename from microservice4/src/test/java/cz/fi/muni/pa165/microservice4/AppTest.java rename to microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java index 992adf0..3a9a025 100644 --- a/microservice4/src/test/java/cz/fi/muni/pa165/microservice4/AppTest.java +++ b/microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.microservice4; +package cz.muni.fi.pa165.microservice4; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/model/pom.xml b/model/pom.xml new file mode 100644 index 0000000..c5662a9 --- /dev/null +++ b/model/pom.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>smart-energy-management-system</artifactId> + <groupId>cz.muni.fi.pa165</groupId> + <version>0.0.1-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>model</artifactId> + <name>models</name> + <description>Library for smart energy management system with domain model objects</description> + <properties> + <maven.compiler.source>17</maven.compiler.source> + <maven.compiler.target>17</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <spring-boot.repackage.skip>true</spring-boot.repackage.skip> + </properties> +</project> \ No newline at end of file diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java new file mode 100644 index 0000000..f99c4d2 --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java @@ -0,0 +1,11 @@ +package cz.muni.fi.pa165.model.dto.common; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class DomainObjectDto { + + private String id; +} \ No newline at end of file diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java new file mode 100644 index 0000000..8221a48 --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java @@ -0,0 +1,22 @@ +package cz.muni.fi.pa165.model.dto.user; + +import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserCreateDto extends DomainObjectDto { + + private String username; + + private String password; + + private String email; + + private String firstName; + + private String lastName; + +} + diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java new file mode 100644 index 0000000..ede86ac --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java @@ -0,0 +1,20 @@ +package cz.muni.fi.pa165.model.dto.user; + +import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserDto extends DomainObjectDto { + + private String username; + + private String email; + + private String firstName; + + private String lastName; + + +} diff --git a/pom.xml b/pom.xml index 95710e8..46c7101 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ <module>statistics</module> <module>microservice3</module> <module>microservice4</module> + <module>model</module> </modules> <parent> <groupId>org.springframework.boot</groupId> @@ -15,13 +16,18 @@ <version>3.0.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> - <groupId>cz.fi.muni.pa165</groupId> + <groupId>cz.muni.fi.pa165</groupId> <artifactId>smart-energy-management-system</artifactId> <version>0.0.1-SNAPSHOT</version> <name>smart-energy-management-system</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> + <maven.compiler.source>17</maven.compiler.source> + <maven.compiler.target>17</maven.compiler.target> + <lombok.version>1.18.26</lombok.version> + <org.mapstruct.version>1.5.3.Final</org.mapstruct.version> + <example.version>0.0.1-SNAPSHOT</example.version> </properties> <dependencies> <dependency> @@ -34,15 +40,62 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>${lombok.version}</version> + </dependency> + </dependencies> <build> <plugins> <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.1</version> + <configuration> + <source>17</source> <!-- depending on your project --> + <target>17</target> <!-- depending on your project --> + <annotationProcessorPaths> + <!-- Order is IMPORTANT! Lombok needs to go first --> + <path> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>${lombok.version}</version> + </path> + <path> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct-processor</artifactId> + <version>${org.mapstruct.version}</version> + </path> + <!-- other annotation processors --> + </annotationProcessorPaths> + <compilerArgs> + <compilerArg> + -Amapstruct.defaultComponentModel=spring + </compilerArg> + </compilerArgs> + </configuration> </plugin> </plugins> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <excludes> + <exclude> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </pluginManagement> </build> </project> diff --git a/statistics/pom.xml b/statistics/pom.xml index f012129..eb661fc 100644 --- a/statistics/pom.xml +++ b/statistics/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>smart-energy-management-system</artifactId> - <groupId>cz.fi.muni.pa165</groupId> + <groupId>cz.muni.fi.pa165</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/statistics/src/main/java/cz/fi/muni/pa165/statistics/StatisticsApplication.java b/statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java similarity index 88% rename from statistics/src/main/java/cz/fi/muni/pa165/statistics/StatisticsApplication.java rename to statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java index 588560d..f73b192 100644 --- a/statistics/src/main/java/cz/fi/muni/pa165/statistics/StatisticsApplication.java +++ b/statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.statistics; +package cz.muni.fi.pa165.statistics; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/statistics/src/test/java/cz/fi/muni/pa165/statistics/StatisticsApplicationTest.java b/statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java similarity index 83% rename from statistics/src/test/java/cz/fi/muni/pa165/statistics/StatisticsApplicationTest.java rename to statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java index ebce479..07c0c26 100644 --- a/statistics/src/test/java/cz/fi/muni/pa165/statistics/StatisticsApplicationTest.java +++ b/statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java @@ -1,4 +1,4 @@ -package cz.fi.muni.pa165.statistics; +package cz.muni.fi.pa165.statistics; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -- GitLab