Для страницы, на которой отображается информация о продукте, мы должны выбрать лучшее изображение продукта из набора изображений, которые показывают одинаковое содержимое, но имеют разные форматы (gif, png, jpg и т. Д.), Различного качества (jpeg comrpession), разных размеров (миниатюры, маленькие, средние, большие) и т. д.
Выбор зависит от браузера пользователя, текущего размера страницы, назначения изображения и т. д.
Наше текущее решениезаключается в создании SQL-запроса в соответствии с текущими требованиями, которые могут выглядеть следующим образом:
SELECT img.id
FROM img
WHERE img.format IN ('GIF','JPG')
AND img.width <= 1000
ORDER BY img.quality DESC
Это простой пример, оригинал гораздо сложнее.Java-код, который создает этот оператор, использует много if и падежей и начинает расти очень некрасиво.
Каков наилучший способ реализации такой эвристики в Java?Есть ли библиотека, которая может помочь?Возможно, в соответствии с определением объектов правил:
Engine engine = new Engine();
engine.addRule(new IncludeRule("format", {"GIF", "JPG"}));//only gif and jpg
engine.addRule(new MaxRule("width", 1000));//max width
engine.addRule(new WeightedRule("quality", DESC));//go for high quality
Image result = engine.getResult();
Я искал движок правил, и даже есть JSR и некоторые движки правил с открытым исходным кодом, но, похоже, все они имеют дело с правилами Buissness.
У меня есть сильное чувство, что мы изобретаем колесо и что мы просто не можем найти никакого решения, потому что мы не знаем правильного названия для этого материала; -)
Любая помощь будетс благодарностью!