Add support for pattern updating
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package ru.serega6531.packmate.model.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PatternUpdateDto {
|
||||
|
||||
private String name;
|
||||
private String color;
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user