Skip to content

Instantly share code, notes, and snippets.

@lhauspie
Last active August 22, 2017 21:17
Show Gist options
  • Save lhauspie/e0a4a8a812ecee70fd1da10663bc1d44 to your computer and use it in GitHub Desktop.
Save lhauspie/e0a4a8a812ecee70fd1da10663bc1d44 to your computer and use it in GitHub Desktop.
implémentation des fonctionnalités custom sur les produits
public class ProductRepositoryImpl implements ProductCustomRepository {
public static final String CODE = "code";
public static final String LABEL = "label";
public static final String DESCRIPTION = "description";
public static final String PRICE = "price";
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private MongoClient mongoClient;
@Override
public Collection<Product> search(SearchQuery searchQuery) {
Query query = new Query();
if (searchQuery.getCode() != null) {
query.addCriteria(Criteria.where(CODE).regex(searchQuery.getCode()));
}
if (searchQuery.getLabel() != null) {
query.addCriteria(Criteria.where(LABEL).regex(searchQuery.getLabel()));
}
if (searchQuery.getDescription() != null) {
query.addCriteria(Criteria.where(DESCRIPTION).regex(searchQuery.getDescription()));
}
if (searchQuery.getMinPrice() != null || searchQuery.getMaxPrice() != null) {
Criteria dutyFreePriceCriteria = Criteria.where(PRICE);
if (searchQuery.getMinPrice() != null) {
dutyFreePriceCriteria = dutyFreePriceCriteria.gt(searchQuery.getMinPrice());
}
if (searchQuery.getMaxPrice() != null) {
dutyFreePriceCriteria = dutyFreePriceCriteria.lt(searchQuery.getMaxPrice());
}
query.addCriteria(dutyFreePriceCriteria);
}
return mongoTemplate.find(query, Product.class);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment