Существует метод, который принимает два параметра типа String [] в качестве входных данных и выполняет фильтрацию в зависимости от того, что он получил.
Метод
@Override
public List<Product> filter(String[] brands, String[] cpus) {
List<Product> products;
List<Product> toReturn = new ArrayList<>();
int i = 0;
if(brands != null && cpus != null){
for(String brand: brands){
for(String cpu: cpus){
products = productRepo.findAllByBrandAndCpu(brand, cpu);
toReturn.addAll(products);
System.out.println(i++);
}
}
}else{
if (brands != null){
for (String brand: brands) {
products = productRepo.findAllByBrand(brand);
toReturn.addAll(products);
}
}else if(cpus != null){
for (String cpu: cpus) {
products = productRepo.findAllByCpu(cpu);
toReturn.addAll(products);
}
}else{
return productRepo.findAll();
}
}
return toReturn;
}
Как могу ли я изменить этот код так, чтобы здесь было не так много итераций:
Здесь
if(brands != null && cpus != null){
for(String brand: brands){
for(String cpu: cpus){
products = productRepo.findAllByBrandAndCpu(brand, cpu);
toReturn.addAll(products);
System.out.println(i++);
}
}
}
Метод findAllByBrandAndCpu
@Query(value = "SELECT p FROM Product p where p.brand.name = ?1 and p.cpu.name = ?2")
List<Product> findAllByBrandAndCpu(String brandName, String cpuName);