У меня есть задача реорганизовать приложение списка покупок, чтобы оно соответствовало требованиям SRP. Проблема заключается в обновлении существующего продукта, я понятия не имею, как обновить его в рамках того же идентификатора, который был назначен вначале. В этот момент он возвращает ноль, когда я пытаюсь обновить продукт. Как заставить его корректно обновляться с тем же идентификатором.
public class ProductService {
private ProductInMemoryRepository repository = new ProductInMemoryRepository();
private ProductValidationService validationService = new ProductValidationService();
public Long createProduct(Product product) {
validationService.validate(product);
Product newProduct = repository.insert(product);
return newProduct.getId();
}
public Product findProductById(Long id){
return repository.findProductById(id);
}
public Product removeById(Long id){
repository.removeProductById(id);
return null;
}
public Long updateProduct(Product product){
validationService.validate(product);
Product newProduct = repository.update(product);
return newProduct.getId();
}
}
public class ProductInMemoryRepository {
private long productIdSequence = 0L;
public Map<Long, Product> productRepository = new HashMap<>();
public Product insert(Product product) {
product.setId(productIdSequence++);
productRepository.put(product.getId(), product);
return product;
}
public Product findProductById(Long id) {
return productRepository.get(id);
}
public Long removeProductById(Long id){
productRepository.remove(id);
return productIdSequence;
}
public Product update(Product product){
productRepository.put(product.getId(),product);
return product;
}
}