CustomVatRepositoryImpl.java
package com.tradecloud.repository.rate.impl;
import com.tradecloud.domain.CustomVat;
import com.tradecloud.domain.infrastructure.persistence.CriteriaBuilder;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import com.tradecloud.repository.rate.CustomVatRepository;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository(value = "customVatRepository")
public class CustomVatRepositoryImpl extends RepositoryBaseImpl<CustomVat, Object> implements CustomVatRepository {
@Override
public CustomVat findVatRateByClosestEffectiveDate(Date currentDate) {
DetachedCriteria criteria = DetachedCriteria.forClass(CustomVat.class);
CriteriaBuilder.addDateLessOrEqualRangeCriteria(criteria, "effectiveDate", currentDate);
criteria.addOrder(Order.desc("effectiveDate")).addOrder(Order.asc("id"));
List<CustomVat> vatRateList = getExecutableCriteriaList(criteria, null);
return (vatRateList.isEmpty() ? null : vatRateList.get(0));
}
}