Проверка продукта по одинаковому id
Изучаю java для тестировщиков, помогите сообразить, как решить задачу. Есть класс Product, в нем лежит информация о продукте: id, цена, имя. Соответственно, все геттеры и сеттеры. Есть класс ProductRepository, в нем реализованы методы поиск продукта по id и сохранение продуктов. Задача в следующем: в методе добавления нового товара в репозиторий должна осуществляться проверка на то, что в нём нет уже товара, у которого бы совпадал id с id добавляемого товара. Если же такой уже есть, то должно выкидываться ваше исключение - AlreadyExistsException. Можно ли как-то через метод findById это осуществить? Вот мой код:
public class ProductRepository {
private Product[] products = new Product[0];
public void save(Product product) {
//{
// throw new AlreadyExistsException(
// "Product with ID " + id + " already exist"
// );
//}
Product[] tmp = new Product[products.length + 1];
for (int i = 0; i < products.length; i++) {
tmp[i] = products[i];
}
tmp[tmp.length - 1] = product;
products = tmp;
}
public Product findById (int id) {
for (Product product : products) {
if (product.getId () == id) {
return product;
}
}
return null;
}
public Product[] getProducts() {
return products;
}
}
Ответы (1 шт):
Не очень понятно в чем проблема. Возьмите и вызовите в начале метода save метод findById.
public class ProductRepository {
private Product[] products = new Product[0];
public void save(Product product) {
if (this.findById(product.getId()) != null) {
throw new AlreadyExistsException(
"Product with ID " + product.getId() + " already exist");
} // это имеется в виду?
Product[] tmp = new Product[products.length + 1];
for (int i = 0; i < products.length; i++) {
tmp[i] = products[i];
}
tmp[tmp.length - 1] = product;
products = tmp;
}
public Product findById (int id) {
for (Product product : products) {
if (product.getId () == id) {
return product;
}
}
return null;
}
public Product[] getProducts() {
return products;
}
}