diff --git a/src/main/java/ru/serega6531/packmate/controller/PatternController.java b/src/main/java/ru/serega6531/packmate/controller/PatternController.java index 445cbda..03df2f3 100644 --- a/src/main/java/ru/serega6531/packmate/controller/PatternController.java +++ b/src/main/java/ru/serega6531/packmate/controller/PatternController.java @@ -9,8 +9,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import ru.serega6531.packmate.model.Pattern; +import ru.serega6531.packmate.model.pojo.PatternCreateDto; import ru.serega6531.packmate.model.pojo.PatternDto; +import ru.serega6531.packmate.model.pojo.PatternUpdateDto; import ru.serega6531.packmate.service.PatternService; import java.util.List; @@ -53,11 +54,14 @@ public class PatternController { } @PostMapping - public PatternDto addPattern(@RequestBody PatternDto dto) { - dto.setEnabled(true); - Pattern pattern = service.fromDto(dto); - Pattern saved = service.save(pattern); - return service.toDto(saved); + public PatternDto addPattern(@RequestBody PatternCreateDto dto) { + return service.create(dto); + + } + + @PostMapping("/{id}") + public PatternDto updatePattern(@PathVariable int id, @RequestBody PatternUpdateDto dto) { + return service.update(id, dto); } } diff --git a/src/main/java/ru/serega6531/packmate/model/pojo/PatternCreateDto.java b/src/main/java/ru/serega6531/packmate/model/pojo/PatternCreateDto.java new file mode 100644 index 0000000..8c39fef --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/model/pojo/PatternCreateDto.java @@ -0,0 +1,19 @@ +package ru.serega6531.packmate.model.pojo; + +import lombok.Data; +import ru.serega6531.packmate.model.enums.PatternActionType; +import ru.serega6531.packmate.model.enums.PatternDirectionType; +import ru.serega6531.packmate.model.enums.PatternSearchType; + +@Data +public class PatternCreateDto { + + private String name; + private String value; + private String color; + private PatternSearchType searchType; + private PatternDirectionType directionType; + private PatternActionType actionType; + private Integer serviceId; + +} diff --git a/src/main/java/ru/serega6531/packmate/model/pojo/PatternUpdateDto.java b/src/main/java/ru/serega6531/packmate/model/pojo/PatternUpdateDto.java new file mode 100644 index 0000000..72bbb83 --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/model/pojo/PatternUpdateDto.java @@ -0,0 +1,11 @@ +package ru.serega6531.packmate.model.pojo; + +import lombok.Data; + +@Data +public class PatternUpdateDto { + + private String name; + private String color; + +} diff --git a/src/main/java/ru/serega6531/packmate/service/PatternService.java b/src/main/java/ru/serega6531/packmate/service/PatternService.java index dc81f2b..b6cb012 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternService.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternService.java @@ -6,13 +6,16 @@ import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import ru.serega6531.packmate.model.CtfService; import ru.serega6531.packmate.model.FoundPattern; import ru.serega6531.packmate.model.Pattern; import ru.serega6531.packmate.model.enums.PatternActionType; import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.enums.SubscriptionMessageType; +import ru.serega6531.packmate.model.pojo.PatternCreateDto; import ru.serega6531.packmate.model.pojo.PatternDto; +import ru.serega6531.packmate.model.pojo.PatternUpdateDto; import ru.serega6531.packmate.model.pojo.SubscriptionMessage; import ru.serega6531.packmate.repository.PatternRepository; @@ -103,15 +106,35 @@ public class PatternService { } } - public Pattern save(Pattern pattern) { + @Transactional + public PatternDto create(PatternCreateDto dto) { + Pattern pattern = fromDto(dto); + + pattern.setEnabled(true); + pattern.setDeleted(false); + pattern.setSearchStartTimestamp(System.currentTimeMillis()); + + Pattern saved = save(pattern); + return toDto(saved); + } + + @Transactional + public PatternDto update(int id, PatternUpdateDto dto) { + Pattern pattern = repository.findById(id).orElseThrow(); + + modelMapper.map(dto, pattern); + + Pattern saved = save(pattern); + return toDto(saved); + } + + private Pattern save(Pattern pattern) { try { PatternMatcher.compilePattern(pattern); } catch (Exception e) { throw new IllegalArgumentException(e.getMessage()); } - pattern.setSearchStartTimestamp(System.currentTimeMillis()); - final Pattern saved = repository.save(pattern); patterns.put(saved.getId(), saved); @@ -136,12 +159,11 @@ public class PatternService { } } - public Pattern fromDto(PatternDto dto) { + public Pattern fromDto(PatternCreateDto dto) { return modelMapper.map(dto, Pattern.class); } public PatternDto toDto(Pattern pattern) { return modelMapper.map(pattern, PatternDto.class); } - }