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 index c2d52004602873f3a5889bbc726decd24aa468ec..2d5e1b574cb7bb9d02b543a0b4c7c2bf2f5c6666 100644 --- 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 @@ -11,6 +11,6 @@ import java.util.UUID; @Setter @MappedSuperclass public abstract class DomainObject { - - @Id private String id = UUID.randomUUID().toString(); + @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 index 59b34a5f47fbe475260bacd4a16777d5a5d292a2..f4a144f459c25272064cbba1ba6a7e1ae0828ffd 100644 --- 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 @@ -43,12 +43,12 @@ public abstract class DomainService<T extends DomainObject> { .orElseThrow(() -> new EntityNotFoundException("Entity with '" + id + "' not found.")); } - @Transactional(readOnly = true) + @Transactional public void deleteAll() { getRepository().deleteAll(); } - @Transactional(readOnly = true) + @Transactional public T deleteById(String id) { T result = findById(id); if (result == null) diff --git a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java index 53cbbdf9f6903449d97d7af43c4ca65832733730..f0885cb6053edc6eff6fe4fce9b175e3b5ebcb97 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -71,17 +70,17 @@ public class DeviceController { summary = "Update device", description = "Updates the device with the specified id.") @PutMapping("/{id}") - public DeviceDto update(@PathVariable @Parameter(description = "The id of the device.") String id, + public DeviceDto updateById(@PathVariable @Parameter(description = "The id of the device.") String id, @RequestBody @Valid DeviceUpdateDto deviceUpdateDto) { - return deviceFacade.update(deviceUpdateDto, id); + return deviceFacade.updateById(deviceUpdateDto, id); } @Operation( summary = "Delete device", description = "Deletes the device with the specified id.") @DeleteMapping("/{id}") - public DeviceDto delete( + public DeviceDto deleteById( @PathVariable @Parameter(description = "The id of the device.") String id) { - return deviceFacade.delete(id); + return deviceFacade.deleteById(id); } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java index ff3b57ee9dbf46983b9f81b50531d73483832991..194c033288f37ed8c8aa03ea19d31c35376a7c55 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java @@ -43,20 +43,25 @@ public class DeviceFacade { return deviceMapper.toDtoList(deviceService.findAll()); } - @Transactional(readOnly = true) + @Transactional public DeviceDto create(DeviceCreateDto deviceCreateDto) { - return deviceMapper.toDto(deviceService.create(deviceMapper.fromCreateDto(deviceCreateDto))); + return deviceMapper.toDto( + deviceService.create( + deviceMapper.fromCreateDto(deviceCreateDto) + ) + ); } @Transactional - public DeviceDto delete(String id) { + public DeviceDto deleteById(String id) { return deviceMapper.toDto(deviceService.deleteById(id)); } @Transactional - public DeviceDto update(DeviceUpdateDto deviceUpdateDto, String id) { - return deviceMapper.toDto(deviceService.update(deviceMapper.fromUpdateDto(deviceUpdateDto), id)); - + public DeviceDto updateById(DeviceUpdateDto deviceUpdateDto, String id) { + return deviceMapper.toDto( + deviceService.update( + deviceMapper.fromUpdateDto(deviceUpdateDto), id) + ); } - } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java index dddb273c56708079cf0a00effac179d1008109b2..1039353b85365681e5c57073f0a5e7da42de25d0 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java @@ -22,7 +22,7 @@ public class DeviceService extends DomainService<Device> { repository = deviceRepository; } - @Transactional(readOnly = true) + @Transactional public Device update(Device user, String id) { int result = repository.update(user, id); if (result != 1) { 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 524c878514d39ff1f8ebd31d610cacd340ab8edc..10423284308ce4003fe2b3c9eb03811e486322a6 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 @@ -23,5 +23,6 @@ public class House extends DomainObject { private String state; private String zipcode; - @OneToMany private List<SmartMeter> smartMeterList; + @OneToMany + private List<SmartMeter> smartMeterList; } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java index a1ad00d1525d2229a92fe1d0bf4f1e8607287ed8..1cac7d9d2ea703c09c62cedd8e0d522ad2dc6798 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java @@ -2,6 +2,7 @@ package cz.muni.fi.pa165.core.house; import cz.muni.fi.pa165.model.dto.house.HouseCreateDto; import cz.muni.fi.pa165.model.dto.house.HouseDto; +import cz.muni.fi.pa165.model.dto.house.HouseUpdateDto; import io.swagger.v3.oas.annotations.Operation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; @@ -13,13 +14,11 @@ import java.util.List; @RequestMapping("/api/house") public class HouseController { - private final HouseService houseService; - private final HouseMapper mapper; + private final HouseFacade houseFacade; @Autowired - public HouseController(HouseService houseService, HouseMapper mapper) { - this.houseService = houseService; - this.mapper = mapper; + public HouseController(HouseFacade houseFacade) { + this.houseFacade = houseFacade; } @Operation( @@ -28,7 +27,7 @@ public class HouseController { ) @GetMapping("pageable") public List<HouseDto> findAllPageable(Pageable pageable) { - return mapper.toDtoList((List<House>) houseService.findAllPageable(pageable)); + return houseFacade.findAllPageable(pageable); } @Operation( @@ -38,7 +37,7 @@ public class HouseController { @CrossOrigin(origins = "*") @GetMapping public List<HouseDto> findAll() { - return mapper.toDtoList(houseService.findAll()); + return houseFacade.findAll(); } @Operation( @@ -46,8 +45,8 @@ public class HouseController { description = "Retrieve a house with the specified ID." ) @GetMapping("/{id}") - public HouseDto find(@PathVariable String id) { - return mapper.toDto(houseService.findById(id)); + public HouseDto findById(@PathVariable String id) { + return houseFacade.findById(id); } @Operation( @@ -55,7 +54,25 @@ public class HouseController { description = "Create a new house with the specified details." ) @PostMapping - public HouseDto create(@RequestBody HouseCreateDto houseDto) { - return mapper.toDto(houseService.create(mapper.fromCreateDto(houseDto))); + public HouseDto create(@RequestBody HouseCreateDto houseCreateDtoDto) { + return houseFacade.create(houseCreateDtoDto); + } + + @Operation( + summary = "Update specific house", + description = "Updates the house with the specified id." + ) + @PutMapping("/{id}") + public HouseDto updateById(@RequestBody HouseUpdateDto houseUpdateDto, @PathVariable String id) { + return houseFacade.updateById(houseUpdateDto, id); + } + + @Operation( + summary = "Deletes specific house", + description = "Deletes the house with the specified id." + ) + @DeleteMapping("/{id}") + public HouseDto deleteById(@PathVariable String id) { + return houseFacade.deleteById(id); } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseFacade.java new file mode 100644 index 0000000000000000000000000000000000000000..dbb19b6e5f57760f48272d23da44db8af4c18e55 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseFacade.java @@ -0,0 +1,72 @@ +package cz.muni.fi.pa165.core.house; + +import cz.muni.fi.pa165.core.manufacturer.Manufacturer; +import cz.muni.fi.pa165.core.manufacturer.ManufacturerMapper; +import cz.muni.fi.pa165.core.manufacturer.ManufacturerService; +import cz.muni.fi.pa165.model.dto.common.Result; +import cz.muni.fi.pa165.model.dto.house.HouseCreateDto; +import cz.muni.fi.pa165.model.dto.house.HouseDto; +import cz.muni.fi.pa165.model.dto.house.HouseUpdateDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerCreateDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerUpdateDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Component +@Transactional +public class HouseFacade { + private final HouseService houseService; + private final HouseMapper houseMapper; + + @Autowired + public HouseFacade(HouseService houseService, + HouseMapper houseMapper) { + this.houseService = houseService; + this.houseMapper = houseMapper; + } + + @Transactional(readOnly = true) + public HouseDto findById(String id) { + return houseMapper.toDto(houseService.findById(id)); + } + + @Transactional(readOnly = true) + public List<HouseDto> findAllPageable(Pageable pageable) { + return houseMapper.toDtoList((List<House>) houseService.findAllPageable(pageable)); + } + + @Transactional(readOnly = true) + public Result<HouseDto> findAll(int page) { + return houseMapper.toResult(houseService.findAllPageableInt(page)); + } + + @Transactional(readOnly = true) + public List<HouseDto> findAll() { + return houseMapper.toDtoList(houseService.findAll()); + } + + @Transactional + public HouseDto create(HouseCreateDto houseCreateDto) { + return houseMapper.toDto( + houseService.create( + houseMapper.fromCreateDto(houseCreateDto)) + ); + } + @Transactional + public HouseDto deleteById(String id) { + return houseMapper.toDto(houseService.deleteById(id)); + } + + @Transactional + public HouseDto updateById(HouseUpdateDto houseUpdateDto, String id) { + return houseMapper.toDto( + houseService.update( + houseMapper.fromUpdateDto(houseUpdateDto), id) + ); + } +} \ No newline at end of file diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java index efca5bd3afe239f36ed4a57af42ff9b1a3692f5e..2f363dd8d926fcb5997394fa5671cc676f737ba7 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java @@ -6,10 +6,13 @@ import cz.muni.fi.pa165.model.dto.device.DeviceCreateDto; import cz.muni.fi.pa165.model.dto.device.DeviceUpdateDto; import cz.muni.fi.pa165.model.dto.house.HouseCreateDto; import cz.muni.fi.pa165.model.dto.house.HouseDto; +import cz.muni.fi.pa165.model.dto.house.HouseUpdateDto; import org.mapstruct.Mapper; @Mapper public interface HouseMapper extends DomainMapper<House, HouseDto> { House fromCreateDto(HouseCreateDto dto); + + House fromUpdateDto(HouseUpdateDto dto); } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java index f97cc5dde015fbd3fde33d849389bf80d44e0417..9331f1b3dd68603b487a06139eb2d10ff55d54e0 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java @@ -1,7 +1,15 @@ package cz.muni.fi.pa165.core.house; +import cz.muni.fi.pa165.core.device.Device; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository -public interface HouseRepository extends JpaRepository<House, String> {} +public interface HouseRepository extends JpaRepository<House, String> { + @Modifying + @Query("UPDATE House h set h.address= :#{#house.address}, h.city= :#{#house.city}, h.state= :#{#house.state} ,h.zipcode= :#{#house.zipcode} where h.id = :#{#id}") + int update(@Param("house") House house, @Param("id") String id); +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java index e4a8990ba05e92aff91214c3aff2d292125577c0..fc336b678e47ca3b7df770fe89db3bdc646fc201 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.core.house; import cz.muni.fi.pa165.core.common.DomainService; +import cz.muni.fi.pa165.core.manufacturer.Manufacturer; import jakarta.persistence.EntityNotFoundException; import lombok.Getter; import org.springframework.beans.factory.annotation.Autowired; @@ -9,15 +10,21 @@ import org.springframework.transaction.annotation.Transactional; @Service public class HouseService extends DomainService<House> { - - @Getter private final HouseRepository repository; + @Getter + private final HouseRepository repository; @Autowired public HouseService(HouseRepository houseRepository) { repository = houseRepository; } - - // TODO: UPDATE + @Transactional + public House update(House house, String id) { + int result = repository.update(house, id); + if (result != 1) { + throw new EntityNotFoundException("House '" + id + "' not found."); + } + return findById(id); + } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java index cfec0028163d4bb35669ab28a61fa742f4d6618f..b9d29e702ece8dcbd8404cec931a64af88f818ac 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java @@ -18,17 +18,13 @@ import java.util.List; @RestController @RequestMapping("/api/manufacturer") public class ManufacturerController { - - private final ManufacturerService manufacturerService; - private final ManufacturerMapper manufacturerMapper; + private final ManufacturerFacade manufacturerFacade; @Autowired public ManufacturerController( - ManufacturerService manufacturerService, - ManufacturerMapper manufacturerMapper + ManufacturerFacade manufacturerFacade ) { - this.manufacturerService = manufacturerService; - this.manufacturerMapper = manufacturerMapper; + this.manufacturerFacade = manufacturerFacade; } /** @@ -42,7 +38,8 @@ public class ManufacturerController { description = "Returns a pageable list of all manufacturers.") @GetMapping("pageable") public List<ManufacturerDto> findAllPageable(Pageable pageable) { - return manufacturerMapper.toDtoList((List<Manufacturer>) manufacturerService.findAllPageable(pageable)); } + return manufacturerFacade.findAllPageable(pageable); + } /** * Returns a list of all manufacturers. @@ -55,7 +52,7 @@ public class ManufacturerController { @CrossOrigin(origins = "*") @GetMapping // CORS headers needed for JavaScript clients public List<ManufacturerDto> findAll() { - return manufacturerMapper.toDtoList(manufacturerService.findAll()); + return manufacturerFacade.findAll(); } /** @@ -68,9 +65,9 @@ public class ManufacturerController { summary = "Get manufacturer by ID", description = "Returns the manufacturer with the specified ID.") @GetMapping("/{id}") - public ManufacturerDto find( + public ManufacturerDto findById( @PathVariable @Parameter(description = "The ID of the manufacturer.") String id) { - return manufacturerMapper.toDto(manufacturerService.findById(id)); + return manufacturerFacade.findById(id); } /** @@ -84,23 +81,22 @@ public class ManufacturerController { description = "Creates a new manufacturer.") @PostMapping public ManufacturerDto create(@RequestBody @Valid ManufacturerCreateDto manufacturerDto) { - return manufacturerMapper.toDto( - manufacturerService.create(manufacturerMapper.fromCreateDto(manufacturerDto))); + return manufacturerFacade.create(manufacturerDto); } @Operation( summary = "Update device", description = "Updates the device with the specified id.") @PutMapping("/{id}") - public ManufacturerDto update(@PathVariable @Parameter(description = "The id of the manufacturer.") String id, + public ManufacturerDto updateById(@PathVariable @Parameter(description = "The id of the manufacturer.") String id, @RequestBody @Valid ManufacturerUpdateDto manufacturerUpdateDto) { - return manufacturerMapper.toDto(manufacturerService.update(manufacturerMapper.fromUpdateDto(manufacturerUpdateDto), id)); + return manufacturerFacade.updateById(manufacturerUpdateDto, id); } @Operation( summary = "Delete manufacturer", description = "Deletes the manufacturer with the specified id.") @DeleteMapping("/{id}") - public ManufacturerDto delete( + public ManufacturerDto deleteById( @PathVariable @Parameter(description = "The id of the manufacturer.") String id) { - return manufacturerMapper.toDto(manufacturerService.deleteById(id)); + return manufacturerFacade.deleteById(id); } } \ No newline at end of file diff --git a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerFacade.java new file mode 100644 index 0000000000000000000000000000000000000000..18e1a5ff10a8b2ae2347ec6b54483f10662f8e32 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerFacade.java @@ -0,0 +1,66 @@ +package cz.muni.fi.pa165.core.manufacturer; + +import cz.muni.fi.pa165.model.dto.common.Result; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerCreateDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerUpdateDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Component +@Transactional +public class ManufacturerFacade { + private final ManufacturerService manufacturerService; + private final ManufacturerMapper manufacturerMapper; + + @Autowired + public ManufacturerFacade(ManufacturerService manufacturerService, + ManufacturerMapper manufacturerMapper) { + this.manufacturerService = manufacturerService; + this.manufacturerMapper = manufacturerMapper; + } + + @Transactional(readOnly = true) + public ManufacturerDto findById(String id) { + return manufacturerMapper.toDto(manufacturerService.findById(id)); + } + + @Transactional(readOnly = true) + public List<ManufacturerDto> findAllPageable(Pageable pageable) { + return manufacturerMapper.toDtoList((List<Manufacturer>) manufacturerService.findAllPageable(pageable)); + } + + @Transactional(readOnly = true) + public Result<ManufacturerDto> findAll(int page) { + return manufacturerMapper.toResult(manufacturerService.findAllPageableInt(page)); + } + + @Transactional(readOnly = true) + public List<ManufacturerDto> findAll() { + return manufacturerMapper.toDtoList(manufacturerService.findAll()); + } + + @Transactional + public ManufacturerDto create(ManufacturerCreateDto manufacturerCreateDto) { + return manufacturerMapper.toDto( + manufacturerService.create( + manufacturerMapper.fromCreateDto(manufacturerCreateDto)) + ); + } + @Transactional + public ManufacturerDto deleteById(String id) { + return manufacturerMapper.toDto(manufacturerService.deleteById(id)); + } + + @Transactional + public ManufacturerDto updateById(ManufacturerUpdateDto manufacturerUpdateDto, String id) { + return manufacturerMapper.toDto( + manufacturerService.update( + manufacturerMapper.fromUpdateDto(manufacturerUpdateDto), id) + ); + } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java index 89e77157a452ab45443ad47e10c592dc4061d854..a6dd54c34ea40ccc8f3e1e6de9d4c9d1e7ffcc83 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java @@ -19,7 +19,7 @@ public class ManufacturerService extends DomainService<Manufacturer> { } - @Transactional(readOnly = true) + @Transactional public Manufacturer update(Manufacturer manufacturer, String id) { int result = repository.update(manufacturer, id); if (result != 1) { diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java index 19a51f7fcd5f7be75b752f7f850df1accb43e83a..1f896ac2aca3b49c627406dbcf9ae5009d1650b0 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java @@ -16,8 +16,12 @@ import lombok.*; @AllArgsConstructor @Table(name = "domain_smartMeter") public class SmartMeter extends DomainObject { - @ManyToOne private Device device; - private String smartMeterIdentityNumber = getId(); - @ManyToOne private House house; + private String name; + + @ManyToOne + private Device device; + + @ManyToOne + private House house; } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java index c2a852b981d90fa58a4d5a06cf46c9f70be5f411..e42e69f06ca684f003ce3316e9bcff48420761d2 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java @@ -40,7 +40,7 @@ public class SmartMeterController { @GetMapping("/{id}") @ApiResponse(responseCode = "200", description = "Successfully retrieved the smart meter.") @ApiResponse(responseCode = "404", description = "Smart meter not found.") - public SmartMeterDto find(@PathVariable String id) { + public SmartMeterDto findById(@PathVariable String id) { return mapper.toDto(smartMeterService.findById(id)); } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterFacade.java new file mode 100644 index 0000000000000000000000000000000000000000..e235444cc881120ec6172b0c40ca038a082215cf --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterFacade.java @@ -0,0 +1,73 @@ +package cz.muni.fi.pa165.core.smartmeter; + +import cz.muni.fi.pa165.core.manufacturer.Manufacturer; +import cz.muni.fi.pa165.model.dto.common.Result; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerCreateDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerDto; +import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerUpdateDto; +import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterCreateDto; +import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterDto; +import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterUpdateDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Component +@Transactional +public class SmartMeterFacade { + private final SmartMeterService smartMeterService; + private final SmartMeterMapper smartMeterMapper; + + @Autowired + public SmartMeterFacade(SmartMeterService smartMeterService, + SmartMeterMapper smartMeterMapper + ) { + this.smartMeterService = smartMeterService; + this.smartMeterMapper = smartMeterMapper; + } + + @Transactional(readOnly = true) + public SmartMeterDto findById(String id) { + return smartMeterMapper.toDto(smartMeterService.findById(id)); + } + + @Transactional(readOnly = true) + public List<SmartMeterDto> findAllPageable(Pageable pageable) { + return smartMeterMapper.toDtoList((List<SmartMeter>) smartMeterService.findAllPageable(pageable)); + } + + @Transactional(readOnly = true) + public Result<SmartMeterDto> findAll(int page) { + return smartMeterMapper.toResult(smartMeterService.findAllPageableInt(page)); + } + + @Transactional(readOnly = true) + public List<SmartMeterDto> findAll() { + return smartMeterMapper.toDtoList(smartMeterService.findAll()); + } + + @Transactional + public SmartMeterDto create(SmartMeterCreateDto smartMeterCreateDto) { + return smartMeterMapper.toDto( + smartMeterService.create( + smartMeterMapper.fromCreateDto(smartMeterCreateDto)) + ); + } + @Transactional + public SmartMeterDto deleteById(String id) { + return smartMeterMapper.toDto(smartMeterService.deleteById(id)); + } + + /* + @Transactional + public SmartMeterDto updateById(SmartMeterUpdateDto smartMeterUpdateDto, String id) { + return smartMeterMapper.toDto( + smartMeterService.updateById( + smartMeterMapper.fromUpdateDto(smartMeterUpdateDto), id) + ); + } + */ +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java index 5ac47e51349bca1ea0e4c22b4afeec58fedde80d..cafb5178a86d154740dc00bb25538eee86a8d73e 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java @@ -1,12 +1,9 @@ package cz.muni.fi.pa165.core.smartmeter; import cz.muni.fi.pa165.core.common.DomainMapper; -import cz.muni.fi.pa165.core.device.Device; -import cz.muni.fi.pa165.model.dto.device.DeviceCreateDto; -import cz.muni.fi.pa165.model.dto.device.DeviceDto; -import cz.muni.fi.pa165.model.dto.device.DeviceUpdateDto; import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterCreateDto; import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterDto; +import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterUpdateDto; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -17,6 +14,9 @@ public interface SmartMeterMapper extends DomainMapper<SmartMeter, SmartMeterDto @Mapping(source = "deviceDto", target = "device") SmartMeter fromCreateDto(SmartMeterCreateDto dto); + //@Mapping(source = "deviceDto", target = "device") + //SmartMeter fromUpdateDto(SmartMeterUpdateDto dto); + @Mapping(source = "deviceDto", target = "device") SmartMeter fromDto(SmartMeterDto dto); 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 index adb033cd98104a1ee2622ed0fd9bd66958a3b8a3..fad37674ff57d7b8ca04a5b0ed6662e22054141e 100644 --- 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 @@ -3,6 +3,7 @@ package cz.muni.fi.pa165.core.user; import cz.muni.fi.pa165.model.dto.common.Result; import cz.muni.fi.pa165.model.dto.user.UserCreateDto; import cz.muni.fi.pa165.model.dto.user.UserDto; +import cz.muni.fi.pa165.model.dto.user.UserUpdateDto; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import io.swagger.v3.oas.annotations.Operation; @@ -100,10 +101,10 @@ public class UserController { @ApiResponse(responseCode = "404", description = "User not found"), @ApiResponse(responseCode = "500", description = "Internal server error") }) - public UserDto update( + public UserDto updateById( @Parameter(description = "ID of the user to be updated") @PathVariable String id, - @RequestBody @Valid UserCreateDto userCreateDto) { - return userFacade.update(userCreateDto, id); + @RequestBody @Valid UserUpdateDto userUpdateDto) { + return userFacade.updateById(userUpdateDto, id); } @DeleteMapping("/{id}") @@ -113,8 +114,8 @@ public class UserController { @ApiResponse(responseCode = "404", description = "User not found"), @ApiResponse(responseCode = "500", description = "Internal server error") }) - public UserDto delete( + public UserDto deleteById( @Parameter(description = "ID of the user to be deleted") @PathVariable String id) { - return userFacade.delete(id); + return userFacade.deleteById(id); } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java index dc20fee5f1a3d12b204f41f00f3076014f11e111..b69c646c5f99c00f727a3a4dad8c5c78dd039c74 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java @@ -3,6 +3,7 @@ package cz.muni.fi.pa165.core.user; import cz.muni.fi.pa165.model.dto.common.Result; import cz.muni.fi.pa165.model.dto.user.UserCreateDto; import cz.muni.fi.pa165.model.dto.user.UserDto; +import cz.muni.fi.pa165.model.dto.user.UserUpdateDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -29,19 +30,18 @@ public class UserFacade { return userMapper.toResult(userService.findAllPageableInt(page)); } - @Transactional(readOnly = true) + @Transactional public UserDto create(UserCreateDto userCreateDto) { return userMapper.toDto(userService.create(userMapper.fromCreateDto(userCreateDto))); } @Transactional - public UserDto delete(String id) { + public UserDto deleteById(String id) { return userMapper.toDto(userService.deleteById(id)); } @Transactional - public UserDto update(UserCreateDto userUpdatedDto, String id) { - return userMapper.toDto(userService.update(userMapper.fromCreateDto(userUpdatedDto), id)); - + public UserDto updateById(UserUpdateDto userUpdatedDto, String id) { + return userMapper.toDto(userService.update(userMapper.fromUpdateDto(userUpdatedDto), id)); } } 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 index e403c78aa8047c44fae137d9febdf23f05511de6..680416b270e36f3f3af4f99a712bab1e01ba2374 100644 --- 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 @@ -6,6 +6,7 @@ import cz.muni.fi.pa165.model.dto.common.Result; import cz.muni.fi.pa165.model.dto.device.DeviceUpdateDto; import cz.muni.fi.pa165.model.dto.user.UserCreateDto; import cz.muni.fi.pa165.model.dto.user.UserDto; +import cz.muni.fi.pa165.model.dto.user.UserUpdateDto; import org.mapstruct.Mapper; @Mapper @@ -13,4 +14,6 @@ public interface UserMapper extends DomainMapper<User, UserDto> { User fromCreateDto(UserCreateDto dto); + User fromUpdateDto(UserUpdateDto dto); + } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java index e7b7f808c8b44a3c6f17bd4b07fdce7add69c59a..b8ceeaebd3d54fe50c20f2dd3cd34cc937abf1fc 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java @@ -1,8 +1,12 @@ package cz.muni.fi.pa165.model.dto.device; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class DeviceCreateDto extends DomainObjectDto { - public String name; + private String name; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java index 4800e064b16db2bae1bef189fb1f9734bf0836f1..9218a718cc9964014dc36d1e0fc62243cdf946cc 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java @@ -1,8 +1,12 @@ package cz.muni.fi.pa165.model.dto.device; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class DeviceDto extends DomainObjectDto { - public String name; + private String name; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java index 2d79269044fcd69dcaf1593c01576e4daee774ce..976642fba38646762eba51d8c89bd85a386eea3c 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java @@ -1,8 +1,12 @@ package cz.muni.fi.pa165.model.dto.device; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class DeviceUpdateDto extends DomainObjectDto { - public String name; + private String name; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java index 99a6baf45a21df52cdcb3817e39605db2dd26b66..8b3bc11b99f20fd26d6d610505886cc765d8c02d 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java @@ -1,11 +1,15 @@ package cz.muni.fi.pa165.model.dto.house; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class HouseCreateDto extends DomainObjectDto { - public String address; - public String city; - public String state; - public String zipcode; + private String address; + private String city; + private String state; + private String zipcode; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java index fad881fffadd02fd6b5e37b618e07b4acdbdfbf5..3697c1eaa2cf46a790443a6e84ea32dc807b2237 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java @@ -1,11 +1,14 @@ package cz.muni.fi.pa165.model.dto.house; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class HouseDto extends DomainObjectDto { - - public String address; - public String city; - public String state; - public String zipcode; + private String address; + private String city; + private String state; + private String zipcode; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseUpdateDto.java new file mode 100644 index 0000000000000000000000000000000000000000..e732309b7a7e068a4eafb2c3a9d144087e1eacfa --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseUpdateDto.java @@ -0,0 +1,14 @@ +package cz.muni.fi.pa165.model.dto.house; + +import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class HouseUpdateDto extends DomainObjectDto { + private String name; + private String city; + private String state; + private String zipcode; +} diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java index cf2890f22e68d95936018642bc364102527a8ffa..ce6bfc339808ff0a948df3b00e541c6f73e32187 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java @@ -1,8 +1,11 @@ package cz.muni.fi.pa165.model.dto.manufacturer; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class ManufacturerCreateDto extends DomainObjectDto { - - public String name; + private String name; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java index 16bd260c52c27235f5d8b0cf5c84fc096be0bfbe..cadb73c17dff29ff3c80eab6e748fe242f4bbb91 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java @@ -1,8 +1,12 @@ package cz.muni.fi.pa165.model.dto.manufacturer; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; -public class ManufacturerDto extends DomainObjectDto { - public String name; +@Getter +@Setter +public class ManufacturerDto extends DomainObjectDto { + private String name; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java index e0e2be1f1b7f131c885bda2d956a37df8eb27c71..5951e5051226815644832ee7d6e91586b9df8212 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java @@ -1,7 +1,12 @@ package cz.muni.fi.pa165.model.dto.manufacturer; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter public class ManufacturerUpdateDto extends DomainObjectDto { - public String name; + private String name; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java index 6f0b3274707484de741e4b01775560f29782ff1b..0bf70ededdb96c422329abed823a7401638a56da 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java @@ -2,8 +2,13 @@ package cz.muni.fi.pa165.model.dto.smartDevice; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; import cz.muni.fi.pa165.model.dto.device.DeviceDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter public class SmartMeterCreateDto extends DomainObjectDto { - public String name; - public DeviceDto deviceDto; + private String name; + private DeviceDto deviceDto; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java index 93d496822fd1657849cbc35977ff215a893aaee4..d44acc98b376fabed5e73cf700b6bbaaa1be7362 100644 --- a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java @@ -2,8 +2,12 @@ package cz.muni.fi.pa165.model.dto.smartDevice; import cz.muni.fi.pa165.model.dto.common.DomainObjectDto; import cz.muni.fi.pa165.model.dto.device.DeviceDto; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class SmartMeterDto extends DomainObjectDto { - public String name; - public DeviceDto deviceDto; + private String name; + private DeviceDto deviceDto; } diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterUpdateDto.java new file mode 100644 index 0000000000000000000000000000000000000000..37aad9ca5f6f77b95fca3ecd594a666a0ca76e78 --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterUpdateDto.java @@ -0,0 +1,9 @@ +package cz.muni.fi.pa165.model.dto.smartDevice; + +import cz.muni.fi.pa165.model.dto.device.DeviceDto; + +public class SmartMeterUpdateDto { + private String name; + private DeviceDto deviceDto; +} + diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserUpdateDto.java new file mode 100644 index 0000000000000000000000000000000000000000..41e68c07b8761de37280b1c24ab2c3a27586fa60 --- /dev/null +++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserUpdateDto.java @@ -0,0 +1,19 @@ +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 UserUpdateDto extends DomainObjectDto { + private String username; + + private String password; + + private String email; + + private String firstName; + + private String lastName; +} diff --git a/openapi.yaml b/openapi.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1231540759331820340c1240fa9f6bf953ecf321 --- /dev/null +++ b/openapi.yaml @@ -0,0 +1,692 @@ +openapi: 3.0.1 +info: + title: OpenAPI definition + version: v0 +servers: +- url: http://localhost:8080 + description: Generated server url +tags: +- name: Device + description: Device API +paths: + /api/user/{id}: + get: + tags: + - user + summary: Find user by ID + description: Returns a single user + operationId: findById + parameters: + - name: id + in: path + description: ID of user to be searched + required: true + schema: + type: string + responses: + "200": + description: User found + content: + application/json: + schema: + $ref: '#/components/schemas/UserDto' + "404": + description: User not found + put: + tags: + - user-controller + summary: Update a user by ID + operationId: update + parameters: + - name: id + in: path + description: ID of the user to be updated + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateDto' + required: true + responses: + "200": + description: User updated successfully + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + "500": + description: Internal server error + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + "400": + description: Invalid input + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + "404": + description: User not found + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + delete: + tags: + - user-controller + summary: Delete a user by ID + operationId: delete + parameters: + - name: id + in: path + description: ID of the user to be deleted + required: true + schema: + type: string + responses: + "200": + description: User deleted successfully + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + "500": + description: Internal server error + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + "404": + description: User not found + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + /api/manufacturer/{id}: + get: + tags: + - manufacturer-controller + summary: Get manufacturer by ID + description: Returns the manufacturer with the specified ID. + operationId: find_1 + parameters: + - name: id + in: path + description: The ID of the manufacturer. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ManufacturerDto' + put: + tags: + - manufacturer-controller + summary: Update device + description: Updates the device with the specified id. + operationId: update_1 + parameters: + - name: id + in: path + description: The id of the manufacturer. + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ManufacturerUpdateDto' + required: true + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ManufacturerDto' + delete: + tags: + - manufacturer-controller + summary: Delete manufacturer + description: Deletes the manufacturer with the specified id. + operationId: delete_1 + parameters: + - name: id + in: path + description: The id of the manufacturer. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ManufacturerDto' + /api/device/{id}: + get: + tags: + - Device + summary: Get device by id + description: Returns a device with the specified id. + operationId: findById_1 + parameters: + - name: id + in: path + description: The id of the device. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/DeviceDto' + put: + tags: + - Device + summary: Update device + description: Updates the device with the specified id. + operationId: update_2 + parameters: + - name: id + in: path + description: The id of the device. + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceUpdateDto' + required: true + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/DeviceDto' + delete: + tags: + - Device + summary: Delete device + description: Deletes the device with the specified id. + operationId: delete_2 + parameters: + - name: id + in: path + description: The id of the device. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/DeviceDto' + /api/user: + get: + tags: + - user + summary: Get all users + description: Returns all users + operationId: findAll + parameters: + - name: page + in: query + description: Page number of results to retrieve + required: true + schema: + type: integer + format: int32 + responses: + "200": + description: Users found + content: + application/json: + schema: + $ref: '#/components/schemas/Result' + post: + tags: + - user + summary: Create user + description: Creates a new user + operationId: create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateDto' + required: true + responses: + "201": + description: User created + content: + application/json: + schema: + $ref: '#/components/schemas/UserDto' + "400": + description: Invalid input + "409": + description: User with the same name already exists + /api/smart-meter: + get: + tags: + - smart-meter-controller + summary: Get all smart meters + description: Returns a list of all smart meters. + operationId: findAll_1 + responses: + "200": + description: Successfully retrieved the list of smart meters. + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/SmartMeterDto' + post: + tags: + - smart-meter-controller + summary: Create a new smart meter + description: Creates a new smart meter. + operationId: create_1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmartMeterCreateDto' + required: true + responses: + "201": + description: Successfully created a new smart meter. + content: + '*/*': + schema: + $ref: '#/components/schemas/SmartMeterDto' + /api/manufacturer: + get: + tags: + - manufacturer-controller + summary: Get all manufacturers + description: Returns a list of all manufacturers. + operationId: findAll_2 + responses: + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/ManufacturerDto' + post: + tags: + - manufacturer-controller + summary: Create manufacturer + description: Creates a new manufacturer. + operationId: create_2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ManufacturerCreateDto' + required: true + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ManufacturerDto' + /api/house: + get: + tags: + - house-controller + summary: Get all houses + description: Retrieve a list of all houses. + operationId: findAll_3 + responses: + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/HouseDto' + post: + tags: + - house-controller + summary: Create a new house + description: Create a new house with the specified details. + operationId: create_3 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HouseCreateDto' + required: true + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/HouseDto' + /api/device: + get: + tags: + - Device + summary: Get all devices + description: Returns a list of all devices. + operationId: findAll_4 + responses: + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/DeviceDto' + post: + tags: + - Device + summary: Create device + description: Creates a new device. + operationId: create_4 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceCreateDto' + required: true + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/DeviceDto' + /api/smart-meter/{id}: + get: + tags: + - smart-meter-controller + summary: Get a smart meter by ID + description: Returns the smart meter with the specified ID. + operationId: find + parameters: + - name: id + in: path + required: true + schema: + type: string + responses: + "404": + description: Smart meter not found. + content: + '*/*': + schema: + $ref: '#/components/schemas/SmartMeterDto' + "200": + description: Successfully retrieved the smart meter. + content: + '*/*': + schema: + $ref: '#/components/schemas/SmartMeterDto' + /api/smart-meter/pageable: + get: + tags: + - smart-meter-controller + summary: Get a pageable list of smart meters + description: Returns a pageable list of smart meters. + operationId: findAllPageable + parameters: + - name: pageable + in: query + required: true + schema: + $ref: '#/components/schemas/Pageable' + responses: + "200": + description: Successfully retrieved the pageable list of smart meters. + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/SmartMeterDto' + /api/manufacturer/pageable: + get: + tags: + - manufacturer-controller + summary: Get all manufacturers (paginated) + description: Returns a pageable list of all manufacturers. + operationId: findAllPageable_1 + parameters: + - name: pageable + in: query + required: true + schema: + $ref: '#/components/schemas/Pageable' + responses: + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/ManufacturerDto' + /api/house/{id}: + get: + tags: + - house-controller + summary: Get a house by ID + description: Retrieve a house with the specified ID. + operationId: find_2 + parameters: + - name: id + in: path + required: true + schema: + type: string + responses: + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/HouseDto' + /api/house/pageable: + get: + tags: + - house-controller + summary: Get all houses pageable + description: Retrieve a pageable list of all houses. + operationId: findAllPageable_2 + parameters: + - name: pageable + in: query + required: true + schema: + $ref: '#/components/schemas/Pageable' + responses: + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/HouseDto' +components: + schemas: + UserCreateDto: + type: object + properties: + id: + type: string + username: + type: string + password: + type: string + email: + type: string + firstName: + type: string + lastName: + type: string + description: User to be created + UserDto: + type: object + properties: + id: + type: string + username: + type: string + email: + type: string + firstName: + type: string + lastName: + type: string + ManufacturerUpdateDto: + type: object + properties: + id: + type: string + name: + type: string + ManufacturerDto: + type: object + properties: + id: + type: string + name: + type: string + DeviceUpdateDto: + type: object + properties: + id: + type: string + name: + type: string + DeviceDto: + type: object + properties: + id: + type: string + name: + type: string + SmartMeterCreateDto: + type: object + properties: + id: + type: string + name: + type: string + deviceDto: + $ref: '#/components/schemas/DeviceDto' + SmartMeterDto: + type: object + properties: + id: + type: string + name: + type: string + deviceDto: + $ref: '#/components/schemas/DeviceDto' + ManufacturerCreateDto: + type: object + properties: + id: + type: string + name: + type: string + HouseCreateDto: + type: object + properties: + id: + type: string + address: + type: string + city: + type: string + state: + type: string + zipcode: + type: string + HouseDto: + type: object + properties: + id: + type: string + address: + type: string + city: + type: string + state: + type: string + zipcode: + type: string + DeviceCreateDto: + type: object + properties: + id: + type: string + name: + type: string + DomainObjectDto: + type: object + properties: + id: + type: string + Result: + type: object + properties: + total: + type: integer + format: int64 + page: + type: integer + format: int32 + pageSize: + type: integer + format: int32 + items: + type: array + items: + $ref: '#/components/schemas/DomainObjectDto' + Pageable: + type: object + properties: + page: + minimum: 0 + type: integer + format: int32 + size: + minimum: 1 + type: integer + format: int32 + sort: + type: array + items: + type: string