Код: Выделить всё
public void updateRecord(long number, String data) throws RecordAlreadyExistsException, NumberNotPresentException {
boolean recordExists = recordRepository.existsByNumberAndDataLike(number, data);
if (recordExists) {
throw new RecordAlreadyExistsException("Entered number and data is present");
} else {
boolean numberExists = recordRepository.existsByNumberAndDataNotLike(number, data);
if (numberExists) {
Record record = recordRepository.findByNumber(number);
String d = record.getData();
record.setData(d + ";" + data);
recordRepository.save(record);
} else {
throw new NumberNotPresentException("Entered number is not present");
}
}
}
@PutMapping("/update")
public ResponseEntity updateRecord(@RequestBody Map payload) {
try {
String data = payload.get("data");
long number = Long.parseLong(payload.get("number"));
service.updateRecord(number, data);
return ResponseEntity.ok("data added successfully.");
} catch (RecordAlreadyExistsException e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
} catch (NumberNotPresentException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage());
} catch (NumberFormatException e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid format.");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("An unexpected error occurred while processing the request.");
}
}
- если число существует и данные существуют, будет выдано сообщение " RecordAlreadyExistsException».
- если число существует и данные для него отсутствуют, будут добавлены новые данные.
- если оба отсутствуют, будет выдано исключение исключение «NumberNotPresentException».
Я попробовал найти ошибку, она связана с преобразованием типа строки в long for аргумент «число», но я ввожу числовое значение, и оно работает с первой попытки, но со второго вызова выдается исключение.
Подробнее здесь: https://stackoverflow.com/questions/785 ... g-long-n-a