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 index 7fbbb746b565e9b528f57ef3604cc0d587039bf0..7a0bdc5ec0c8bae4609372dab7cdc415d7bbb5a7 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java @@ -11,6 +11,10 @@ import cz.muni.fi.pa165.core.smartmeter.SmartMeterService; 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 cz.muni.fi.pa165.core.user.roles.HouseRole; +import cz.muni.fi.pa165.core.user.roles.RoleService; +import cz.muni.fi.pa165.model.dto.role.enums.HouseRoleEnum; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; import lombok.RequiredArgsConstructor; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; @@ -28,6 +32,7 @@ public class DataInitializer implements ApplicationRunner { private final SmartMeterService smartMeterService; private final MetricsService metricsService; private final HouseService houseService; + private final RoleService roleService; @Override public void run(ApplicationArguments args) throws Exception { @@ -35,6 +40,7 @@ public class DataInitializer implements ApplicationRunner { SeedDevice(); SeedSmartMeter(); SeedMetrics(); + SeedOwnerRole(); } private void SeedUsers() { @@ -75,6 +81,12 @@ public class DataInitializer implements ApplicationRunner { .build(); userService.create(user); + HouseRole role = HouseRole.builder() + .houseRole(HouseRoleEnum.Owner) + .build(); + role.setUser(user); + roleService.create(role); + Device device = Device.builder().name("device03").build(); deviceService.create(device); @@ -83,13 +95,15 @@ public class DataInitializer implements ApplicationRunner { List<SmartMeter> smartMeterList = new ArrayList<SmartMeter>(); smartMeterList.add(smartMeter); + ArrayList<HouseRole> owners = new ArrayList<>(); + owners.add(role); House house = House.builder() .smartMeterList(smartMeterList) .address("lol") .city("lol") .state("lol") .zipcode("lol") - .user(user) + .ownerList(owners) .build(); houseService.create(house); @@ -104,4 +118,35 @@ public class DataInitializer implements ApplicationRunner { } + + private void SeedOwnerRole() + { + User user = + User.builder() + .email("test@email.com") + .firstName("John") + .lastName("Doe") + .username("johnD") + .password("password") + .userType(UserType.ADMIN) + .build(); + user.setId("6a9f853d-59ef-4636-9c0b-bbac44bfd7f4"); + userService.create(user); + + House house = House.builder() + .address("lol") + .city("lol") + .state("lol") + .zipcode("lol") + .build(); + house.setId("6aac9569-2d34-4aba-971b-57248fc34c80"); + houseService.create(house); + + HouseRole role = HouseRole.builder() + .house(house) + .build(); + role.setUser(user); + role.setRoleType(RoleTypeEnum.HouseRole); + roleService.create(role); + } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/company/Company.java b/core/src/main/java/cz/muni/fi/pa165/core/company/Company.java index 1befe2916dc0e6672a76536b4c67417d4f0bc0de..f495e09259d16f61daff8e236ded802707963018 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/company/Company.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/company/Company.java @@ -1,7 +1,9 @@ package cz.muni.fi.pa165.core.company; import cz.muni.fi.pa165.core.common.DomainObject; +import cz.muni.fi.pa165.core.user.roles.CompanyRole; import jakarta.persistence.Entity; +import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Builder; @@ -9,6 +11,8 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import java.util.List; + @Getter @Setter @Entity @@ -18,4 +22,6 @@ import lombok.Setter; @Table(name = "domain_company") public class Company extends DomainObject { private String name; + @OneToMany + private List<CompanyRole> employeeList; } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/House.java b/core/src/main/java/cz/muni/fi/pa165/core/house/House.java index 3578e107261712e51ddd7f75adcbfad274ae7d89..32da728fd1907ac94997a7ce0023056c6df8f0f0 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/house/House.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/house/House.java @@ -2,11 +2,8 @@ package cz.muni.fi.pa165.core.house; import cz.muni.fi.pa165.core.common.DomainObject; import cz.muni.fi.pa165.core.smartmeter.SmartMeter; -import cz.muni.fi.pa165.core.user.User; -import jakarta.persistence.Entity; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; -import jakarta.persistence.Table; +import cz.muni.fi.pa165.core.user.roles.HouseRole; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -32,6 +29,6 @@ public class House extends DomainObject { @OneToMany private List<SmartMeter> smartMeterList; - @ManyToOne - private User user; + @OneToMany + private List<HouseRole> ownerList; } 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 index f27f8c24fcd0705d775c0d8cde768ba35c342b69..fddbffe18e20539c0d145e6da7040f85021de1c6 100644 --- 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 @@ -2,6 +2,7 @@ package cz.muni.fi.pa165.core.user; import cz.muni.fi.pa165.core.common.DomainObject; import cz.muni.fi.pa165.core.house.House; +import cz.muni.fi.pa165.core.user.roles.Role; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; @@ -38,5 +39,5 @@ public class User extends DomainObject { private String lastName; @OneToMany - private List<House> housesList; + private List<Role> rolesList; } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/AdminRole.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/AdminRole.java deleted file mode 100644 index 15c54db36ea07e585c6cbe9aa12a6d8feb4bc634..0000000000000000000000000000000000000000 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/AdminRole.java +++ /dev/null @@ -1,15 +0,0 @@ -package cz.muni.fi.pa165.core.user.roles; - -import jakarta.persistence.Entity; -import jakarta.persistence.Table; -import lombok.*; - -@Getter -@Setter -@Entity -@Builder -@NoArgsConstructor -@Table(name = "domain_admin") -public class AdminRole extends Role{ - -} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/EmployeeRole.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/CompanyRole.java similarity index 58% rename from core/src/main/java/cz/muni/fi/pa165/core/user/roles/EmployeeRole.java rename to core/src/main/java/cz/muni/fi/pa165/core/user/roles/CompanyRole.java index dc8918aedbf4cf913faa75ff04526f4693afa8df..5612ac5f9a7ab1fbfb593492a7ac43a75a545636 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/EmployeeRole.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/CompanyRole.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.core.user.roles; import cz.muni.fi.pa165.core.company.Company; +import cz.muni.fi.pa165.model.dto.role.enums.CompanyRoleEnum; import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; @@ -12,8 +13,9 @@ import lombok.*; @Builder @NoArgsConstructor @AllArgsConstructor -@Table(name = "domain_employee") -public class EmployeeRole extends Role{ +@Table(name = "domain_companyRole") +public class CompanyRole extends Role{ @ManyToOne - public Company company; + private Company company; + private CompanyRoleEnum companyRoleEnum; } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/HouseRole.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/HouseRole.java new file mode 100644 index 0000000000000000000000000000000000000000..bed04d0306bae34a1689de05b8b6391a7fcf41a7 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/HouseRole.java @@ -0,0 +1,21 @@ +package cz.muni.fi.pa165.core.user.roles; + +import cz.muni.fi.pa165.core.house.House; +import cz.muni.fi.pa165.model.dto.role.enums.HouseRoleEnum; +import jakarta.persistence.*; +import lombok.*; + +@Getter +@Setter +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "domain_houseRoles") +public class HouseRole extends Role { + + @ManyToOne + private House house; + + private HouseRoleEnum houseRole; +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/OwnerRole.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/OwnerRole.java deleted file mode 100644 index b6582e6fe432dadb59eca1418510049cbf019cc2..0000000000000000000000000000000000000000 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/OwnerRole.java +++ /dev/null @@ -1,19 +0,0 @@ -package cz.muni.fi.pa165.core.user.roles; - -import cz.muni.fi.pa165.core.house.House; -import jakarta.persistence.Entity; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import lombok.*; - -@Getter -@Setter -@Entity -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Table(name = "domain_owner") -public class OwnerRole extends Role{ - @ManyToOne - public House house; -} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/Role.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/Role.java index 837b99bb677f7da649b30d6b7769c9d381d624d1..c6c112bb35c579900b75204265dca47416d71f67 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/Role.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/Role.java @@ -2,30 +2,22 @@ package cz.muni.fi.pa165.core.user.roles; import cz.muni.fi.pa165.core.common.DomainObject; import cz.muni.fi.pa165.core.user.User; -import cz.muni.fi.pa165.model.dto.user.UserCreateDto; -import cz.muni.fi.pa165.model.dto.user.UserDto; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import jakarta.persistence.Entity; -import jakarta.persistence.Inheritance; -import jakarta.persistence.InheritanceType; -import jakarta.persistence.ManyToOne; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; @Getter @Setter @Entity +@NoArgsConstructor +@AllArgsConstructor @Inheritance(strategy = InheritanceType.JOINED) -public abstract class Role extends DomainObject { - +public class Role extends DomainObject { @ManyToOne - public User user; - private RoleTypeEnum roleType; + @JoinColumn(name= "owner_id") + protected User user; + protected RoleTypeEnum roleType; } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleController.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleController.java index 9be35953c2892a686831d4d553f36587777e7495..1c57f304bfa1595f5268694089f0b162f4f524c4 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleController.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleController.java @@ -1,8 +1,9 @@ package cz.muni.fi.pa165.core.user.roles; import cz.muni.fi.pa165.model.dto.common.Result; +import cz.muni.fi.pa165.model.dto.role.CompanyRoleDto; +import cz.muni.fi.pa165.model.dto.role.HouseRoleDto; import cz.muni.fi.pa165.model.dto.role.RoleDto; -import cz.muni.fi.pa165.model.dto.user.UserCreateDto; import cz.muni.fi.pa165.model.dto.user.UserDto; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -11,23 +12,24 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import javax.swing.*; import java.util.List; @RestController @RequestMapping("/api/role") public class RoleController { - private final RoleService roleService; + private final RoleService roleService; + private final RoleFacade roleFacade; @Autowired - public RoleController(RoleService roleService){ + public RoleController(RoleService roleService, RoleFacade roleFacade){ this.roleService = roleService; + this.roleFacade = roleFacade; } + @Operation( - summary = "Create role for user", + summary = "Create house role", description = "Creates a new user roles", tags = {"role"}) @ApiResponses( @@ -42,43 +44,68 @@ public class RoleController { }), @ApiResponse(responseCode = "400", description = "Invalid input", content = @Content), }) - @PostMapping - public Role create( - @Parameter(description = "Role to be created") @RequestBody Role roleDto) { - return roleService.create(roleDto); + @PostMapping("/house-role") + public HouseRoleDto createHouseRole( + @Parameter(description = "Role to be created") @RequestBody HouseRoleDto roleDto) { + return roleFacade.createHouseRole(roleDto); } - @DeleteMapping("/{id}") - @Operation(summary = "Delete a user role") - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "Role deleted successfully"), - @ApiResponse(responseCode = "404", description = "Role not found"), - @ApiResponse(responseCode = "500", description = "Internal server error") - }) - public Role deleteById( - @Parameter(description = "ID of the role to be deleted") @PathVariable String id) { - return roleService.deleteById(id); + @Operation( + summary = "Create company role", + description = "Creates a new user roles", + tags = {"role"}) + @ApiResponses( + value = { + @ApiResponse( + responseCode = "201", + description = "Role created", + content = { + @Content( + mediaType = "application/json", + schema = @Schema(implementation = UserDto.class)) + }), + @ApiResponse(responseCode = "400", description = "Invalid input", content = @Content), + }) + @PostMapping("/company-role") + public CompanyRoleDto createCompanyRole( + @Parameter(description = "Role to be created") @RequestBody CompanyRoleDto roleDto) { + return roleFacade.createCompanyRole(roleDto); + //return new CompanyRole(); } @Operation( - summary = "Get all user roles", - description = "Returns all user roles", + summary = "Create general role", + description = "Creates a new user roles", tags = {"role"}) @ApiResponses( value = { @ApiResponse( - responseCode = "200", - description = "Roles found", + responseCode = "201", + description = "Role created", content = { @Content( mediaType = "application/json", - schema = @Schema(implementation = Result.class)) - }) + schema = @Schema(implementation = UserDto.class)) + }), + @ApiResponse(responseCode = "400", description = "Invalid input", content = @Content), }) - @GetMapping - public List<Role> findUserRoles( - @Parameter(description = "Page number of results to retrieve") @RequestParam String userId) { - return roleService.findAllByUser(userId); + @PostMapping("/general-role") + public RoleDto createGeneralRole( + @Parameter(description = "Role to be created") @RequestBody RoleDto roleDto) { + return roleFacade.createGeneralRole(roleDto); + } + + + @DeleteMapping("/{id}") + @Operation(summary = "Delete a user role") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Role deleted successfully"), + @ApiResponse(responseCode = "404", description = "Role not found"), + @ApiResponse(responseCode = "500", description = "Internal server error") + }) + public RoleDto deleteById( + @Parameter(description = "ID of the role to be deleted") @PathVariable String id) { + return roleFacade.deleteRole(id); } @Operation( @@ -96,9 +123,9 @@ public class RoleController { schema = @Schema(implementation = Result.class)) }) }) - @GetMapping("/all") - public List<Role> findAll( + @GetMapping + public List<RoleDto> findUserRoles( @Parameter(description = "Page number of results to retrieve") @RequestParam String userId) { - return roleService.findAll(); + return roleService.findAllByUser(userId); } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleFacade.java new file mode 100644 index 0000000000000000000000000000000000000000..b490dc5722e607b33d5da35ee2e696cc7ee63ecb --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleFacade.java @@ -0,0 +1,71 @@ +package cz.muni.fi.pa165.core.user.roles; + +import cz.muni.fi.pa165.core.company.CompanyService; +import cz.muni.fi.pa165.core.house.HouseService; +import cz.muni.fi.pa165.core.user.UserService; +import cz.muni.fi.pa165.model.dto.role.CompanyRoleDto; +import cz.muni.fi.pa165.model.dto.role.HouseRoleDto; +import cz.muni.fi.pa165.model.dto.role.RoleDto; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class RoleFacade { + + private final RoleService roleService; + private final HouseService houseService; + private final UserService userService; + private final CompanyService companyService; + private final RoleMapper mapper; + + @Autowired + public RoleFacade(RoleService service, HouseService houseService, UserService userService, CompanyService companyService, RoleMapper mapper) { + this.roleService = service; + this.houseService = houseService; + this.userService = userService; + this.companyService = companyService; + this.mapper = mapper; + } + + public HouseRoleDto createHouseRole(HouseRoleDto entity){ + HouseRole houseRole = mapper.fromHouseDto(entity); + houseRole.setHouse(houseService.findById(entity.getHouseId())); + houseRole.setUser(userService.findById(entity.getUserId())); + // TODO: how to mapp parent properties? + houseRole.setHouseRole(entity.getHouseRole()); + houseRole.setRoleType(RoleTypeEnum.HouseRole); + + return mapper.toHouseDto((HouseRole) roleService.create(houseRole)); + } + + public CompanyRoleDto createCompanyRole(CompanyRoleDto entity){ + CompanyRole companyRole = mapper.fromCompanyDto(entity); + companyRole.setCompany(companyService.findById(entity.getCompanyId())); + companyRole.setUser(userService.findById(entity.getUserId())); + // TODO: how to mapp parent properties? + companyRole.setCompanyRoleEnum(entity.getCompanyRole()); + companyRole.setRoleType(RoleTypeEnum.CompanyRole); + + return mapper.toCompanyDto((CompanyRole) roleService.create(companyRole)); + } + + public RoleDto createGeneralRole(RoleDto entity){ + Role role = mapper.fromGeneralDto(entity); + role.setUser(userService.findById(entity.getUserId())); + // TODO: how to mapp parent properties? + role.setRoleType(entity.getRoleType()); + + return mapper.toGeneralDto((Role) roleService.create(role)); + } + + public RoleDto deleteRole(String roleId){ + return mapper.toGeneralDto((Role) roleService.deleteById(roleId)); + } + + public List<RoleDto> findAllByUser(String userId){ + return mapper.toGeneralListDto(roleService.findAllByUser(userId)); + } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleMapper.java index a1600f114cd4a228b72cc570f5385ebe755c79f9..0221f3e9d8566929f532b3fa328dbe074d435453 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleMapper.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleMapper.java @@ -1,30 +1,19 @@ package cz.muni.fi.pa165.core.user.roles; -import cz.muni.fi.pa165.core.common.DomainMapper; -import cz.muni.fi.pa165.core.smartmeter.SmartMeter; -import cz.muni.fi.pa165.model.dto.role.RoleDto; -import cz.muni.fi.pa165.model.dto.role.RoleCreateDto; -import cz.muni.fi.pa165.model.dto.role.RoleUpdateDto; -import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterCreateDto; -import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterDto; -import org.mapstruct.Mapping; +import cz.muni.fi.pa165.model.dto.role.*; +import org.mapstruct.Mapper; import java.util.List; -public interface RoleMapper extends DomainMapper<Role, RoleDto, RoleCreateDto, RoleUpdateDto> { - /* - @Mapping(source = "deviceDto", target = "device") - SmartMeter fromCreateDto(SmartMeterCreateDto dto); +@Mapper +public interface RoleMapper{ + HouseRole fromHouseDto(HouseRoleDto entity); + CompanyRole fromCompanyDto(CompanyRoleDto entity); + Role fromGeneralDto(RoleDto entity); - //@Mapping(source = "deviceDto", target = "device") - //SmartMeter fromUpdateDto(SmartMeterUpdateDto dto); + HouseRoleDto toHouseDto(HouseRole entity); + CompanyRoleDto toCompanyDto(CompanyRole entity); + RoleDto toGeneralDto(Role entity); - @Mapping(source = "roleDto", target = "role") - SmartMeter fromDto(SmartMeterDto dto); - - @Mapping(source = "device", target = "deviceDto") - SmartMeterDto toDto(SmartMeter entity); - - /*@Mapping(source = "device", target = "deviceDto") - List<SmartMeterDto> toDtoList(List<SmartMeter> entities);*/ + List<RoleDto> toGeneralListDto(List<Role> entities); } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleRepository.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleRepository.java index 048ca18b6f6bf5da5d95421bcfb4b0a52bd174dd..23e6ff4d6822fccbe937780cca53f634ec622bb8 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleRepository.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleRepository.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Repository; import java.util.List; @Repository -public interface RoleRepository extends JpaRepository<Role, String> { +public interface RoleRepository<T extends Role> extends JpaRepository<T, String> { - public List<Role> findAllByUser(String userId); + public List<T> findAllByUserId(String userId); } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleService.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleService.java index dd6bc3b49853bb8f4d4f12fde80da25d9f2bc479..713eb11be795551a5e8a1e7c102bf8196adfaee2 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleService.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleService.java @@ -1,22 +1,18 @@ package cz.muni.fi.pa165.core.user.roles; -import cz.muni.fi.pa165.core.common.DomainObject; import cz.muni.fi.pa165.core.common.DomainService; -import cz.muni.fi.pa165.model.dto.role.RoleDto; import lombok.Getter; import lombok.Setter; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.time.LocalDateTime; import java.util.List; @Getter @Setter @Service -public class RoleService extends DomainService<Role> { +public class RoleService<T extends Role> extends DomainService<T> { @Getter private final RoleRepository repository; @@ -28,6 +24,6 @@ public class RoleService extends DomainService<Role> { @Transactional public List<Role> findAllByUser(String id){ - return repository.findAllByUser(id); + return repository.findAllByUserId(id); } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleTypeEnum.java b/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleTypeEnum.java deleted file mode 100644 index 8fbc793338c1abb37e27097d348f45a00300a0e1..0000000000000000000000000000000000000000 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/roles/RoleTypeEnum.java +++ /dev/null @@ -1,7 +0,0 @@ -package cz.muni.fi.pa165.core.user.roles; - -public enum RoleTypeEnum { - Admin, - Employee, - Owner -} diff --git a/core/src/main/resources/application.properties b/core/src/main/resources/application.properties index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..69b89983cb2b54a75be402a7d8ff5f4c9cd4c069 100644 --- a/core/src/main/resources/application.properties +++ b/core/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.h2.console.enabled=true \ No newline at end of file diff --git a/core/src/main/resources/application.yml b/core/src/main/resources/application.yml index f062a9f94775452e30c68582e659bd880312bd91..53c22466a95dbb04615999faf6781494d7c5a309 100644 --- a/core/src/main/resources/application.yml +++ b/core/src/main/resources/application.yml @@ -13,6 +13,15 @@ logging: spring: mvc: log-request-details: true + datasource: + url: jdbc:h2:mem:mydb + username: sa + password: password + driverClassName: org.h2.Driver + jpa: + spring.jpa.database-platform: org.hibernate.dialect.H2Dialect + h2: + console.enabled: true springdoc: # https://springdoc.org/properties.html#_springdoc_openapi_core_properties diff --git a/core/src/test/java/cz/muni/fi/pa165/core/company/UnitTestCompanyJPA.java b/core/src/test/java/cz/muni/fi/pa165/core/company/UnitTestCompanyJPA.java index 247af80a49110f0d675304482527a640f9384d38..db3709cbddb79e6cb2bead3b28b1d07060235a68 100644 --- a/core/src/test/java/cz/muni/fi/pa165/core/company/UnitTestCompanyJPA.java +++ b/core/src/test/java/cz/muni/fi/pa165/core/company/UnitTestCompanyJPA.java @@ -10,6 +10,7 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; import org.springframework.test.context.junit4.SpringRunner; +import java.util.ArrayList; import java.util.regex.Pattern; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +47,7 @@ public class UnitTestCompanyJPA { } private Company helperRegister() { - return companyRepository.save(new Company("Tesla")); + return companyRepository.save(new Company("Tesla", new ArrayList<>())); } @Test diff --git a/core/src/test/java/cz/muni/fi/pa165/core/house/UnitTestHouseJPA.java b/core/src/test/java/cz/muni/fi/pa165/core/house/UnitTestHouseJPA.java index c2af8041acf75a57735a47393bf2c6cc1988ade5..2c0ac0a1633bcc4673d1f5e01524c610b56e9af1 100644 --- a/core/src/test/java/cz/muni/fi/pa165/core/house/UnitTestHouseJPA.java +++ b/core/src/test/java/cz/muni/fi/pa165/core/house/UnitTestHouseJPA.java @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; import org.springframework.test.context.junit4.SpringRunner; + +import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -29,7 +31,7 @@ public class UnitTestHouseJPA { @Autowired private UserRepository userRepository; - @Test + @Test public void createHouseTesting() throws Exception { String house = this.entityManager.persistAndGetId(new House()).toString(); // Regular expression to match UUID format @@ -55,7 +57,7 @@ public class UnitTestHouseJPA { .collect(Collectors.toList()); //need to save a user to the database first to asign him to the new house User user = userRepository.save(new User()); - return houseRepository.save(new House("Titova 6", "Sarajevo", "Bosnia and Herzegovina", "71000", list, user)); + return houseRepository.save(new House("Titova 6", "Sarajevo", "Bosnia and Herzegovina", "71000", list, new ArrayList<>())); } @Test @@ -121,7 +123,7 @@ public class UnitTestHouseJPA { assertThat(checkHouse.getId()).isEqualTo(house2.getId()); assertThat(checkHouse.getAddress()).isEqualTo(house2.getAddress()); - assertThat(checkHouse.getUser()).isEqualTo(house2.getUser()); + //assertThat(checkHouse.getUser()).isEqualTo(house2.getUser()); assertThat(checkHouse.getCity()).isEqualTo(house2.getCity()); } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/CompanyRoleDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/CompanyRoleDto.java new file mode 100644 index 0000000000000000000000000000000000000000..208f7ef18812348c00974e9ae2ea7cf4e1823cb8 --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/CompanyRoleDto.java @@ -0,0 +1,15 @@ +package cz.muni.fi.pa165.model.dto.role; + +import cz.muni.fi.pa165.model.dto.role.enums.CompanyRoleEnum; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class CompanyRoleDto extends RoleDto{ + private String CompanyId; + private CompanyRoleEnum companyRole; + private RoleTypeEnum roleType = RoleTypeEnum.CompanyRole; +} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/EmployeeRoleDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/EmployeeRoleDto.java deleted file mode 100644 index e76b691a1c31ecb4d221796561d51e94074fa9f3..0000000000000000000000000000000000000000 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/EmployeeRoleDto.java +++ /dev/null @@ -1,8 +0,0 @@ -package cz.muni.fi.pa165.model.dto.role; - -public class EmployeeRoleDto extends RoleDto{ - /* - private CompanyDto company; / companyId - - */ -} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/HouseRoleDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/HouseRoleDto.java new file mode 100644 index 0000000000000000000000000000000000000000..23e90429f7642e1440c82b30e245f424746d637a --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/HouseRoleDto.java @@ -0,0 +1,15 @@ +package cz.muni.fi.pa165.model.dto.role; + +import cz.muni.fi.pa165.model.dto.role.enums.HouseRoleEnum; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class HouseRoleDto extends RoleDto{ + private String houseId; + private HouseRoleEnum houseRole; + private RoleTypeEnum roleType = RoleTypeEnum.HouseRole; +} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/OwnerRoleDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/OwnerRoleDto.java deleted file mode 100644 index 2a57a918c03d18f198fa19ae72d407e2906dfdc3..0000000000000000000000000000000000000000 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/OwnerRoleDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package cz.muni.fi.pa165.model.dto.role; - -import cz.muni.fi.pa165.model.dto.house.HouseDto; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public class OwnerRoleDto extends RoleDto{ - private HouseDto houseDto; -} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleCreateDto.java index 60decb28c6051556d05d0c90bb8038594e838e19..86e54409ee5de0edf1735ae552375b79e66f8aac 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleCreateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleCreateDto.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.model.dto.role; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; public class RoleCreateDto extends DomainObjectDto { RoleTypeEnum roleType; diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleDto.java index 423636a005204ac8e17808252729bdb76f2cbf7a..eb8026711e2265ee65c9d5ee8b4e2933554e1f40 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleDto.java @@ -1,8 +1,14 @@ package cz.muni.fi.pa165.model.dto.role; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; +import lombok.*; +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor public class RoleDto extends DomainObjectDto { - RoleTypeEnum roleType; - String userId; + protected String userId; + protected RoleTypeEnum roleType; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleTypeEnum.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleTypeEnum.java deleted file mode 100644 index 678d1c29b77cf5a877bd31ed4e1600b7aa57da10..0000000000000000000000000000000000000000 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleTypeEnum.java +++ /dev/null @@ -1,7 +0,0 @@ -package cz.muni.fi.pa165.model.dto.role; - -public enum RoleTypeEnum { - Admin, - Employee, - User -} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleUpdateDto.java index c1a434ebe181cd2a25d1344e2b5e3a67ac1a04d3..79c77496b37d3b69dae5ec61b86e9f98b74ed0c8 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleUpdateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/RoleUpdateDto.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.model.dto.role; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import cz.muni.fi.pa165.model.dto.role.enums.RoleTypeEnum; public class RoleUpdateDto extends DomainObjectDto { RoleTypeEnum roleType; diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/CompanyRoleEnum.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/CompanyRoleEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..aec67ab0ab795affa9e17a1118b905b5b0d0186e --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/CompanyRoleEnum.java @@ -0,0 +1,5 @@ +package cz.muni.fi.pa165.model.dto.role.enums; + +public enum CompanyRoleEnum { + Employee +} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/HouseRoleEnum.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/HouseRoleEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..8e3f9914e2e2170316f6133aa92b7e7cbef2472b --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/HouseRoleEnum.java @@ -0,0 +1,5 @@ +package cz.muni.fi.pa165.model.dto.role.enums; + +public enum HouseRoleEnum { + Owner +} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/RoleTypeEnum.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/RoleTypeEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..739caff808be8ccba9752c9f8060ba52f6f1eb2f --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/role/enums/RoleTypeEnum.java @@ -0,0 +1,7 @@ +package cz.muni.fi.pa165.model.dto.role.enums; + +public enum RoleTypeEnum { + Admin, + HouseRole, + CompanyRole, +}