Обновление в CRUD возвращает нулевой идентификатор - PullRequest
1 голос
/ 03 февраля 2020

У меня есть задача реорганизовать приложение списка покупок, чтобы оно соответствовало требованиям 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...