HfcOrderRepositoryImpl.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.tradecloud.repository.hfc;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.tradecloud.domain.infrastructure.persistence.CriteriaBuilder;
import com.tradecloud.domain.model.hfcmanagement.EventLabel;
import com.tradecloud.domain.model.hfcmanagement.HfcOrder;
import com.tradecloud.dto.order.HfcOrderSearch;
import com.tradecloud.domain.shipment.ShippingInformation;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
/**
*
*/
@Repository(value = "hfcOrderRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class HfcOrderRepositoryImpl extends RepositoryBaseImpl<HfcOrder, HfcOrderSearch> implements HfcOrderRepository {
private static final long serialVersionUID = 1L;
@Override
public List<HfcOrder> search(HfcOrderSearch orderSearch) {
DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass());
if (orderSearch.getProductGroup() != null) {
CriteriaBuilder.addiLikeAnyRestriction(criteria, "productGroupReference", orderSearch.getProductGroup().getReference());
}
if (orderSearch.getEventLabel() != null) {
CriteriaBuilder.addEqRestriction(criteria, "eventLabel", orderSearch.getEventLabel());
}
if (orderSearch.getIncoterm() != null) {
CriteriaBuilder.addEqRestriction(criteria, "incoterm", orderSearch.getIncoterm());
}
DetachedCriteria shippingInformationCriteria = criteria.createCriteria("shippingInformation");
if (orderSearch.getShippingMode() != null) {
CriteriaBuilder.addEqRestriction(shippingInformationCriteria, "shippingMode", orderSearch.getShippingMode());
}
if (orderSearch.getPlaceOfLoading() != null) {
CriteriaBuilder.addEqRestriction(shippingInformationCriteria, "placeOfLoading", orderSearch.getPlaceOfLoading());
}
if (orderSearch.getPlaceOfDischarge() != null) {
CriteriaBuilder.addEqRestriction(shippingInformationCriteria, "placeOfDischarge", orderSearch.getPlaceOfDischarge());
}
if (orderSearch.getCountryOfOrigin() != null) {
CriteriaBuilder.addEqRestriction(shippingInformationCriteria, "countryOfOrigin", orderSearch.getCountryOfOrigin());
}
@SuppressWarnings("unchecked")
List<HfcOrder> results = criteria.getExecutableCriteria(getSessionCustom()).list();
return results;
}
@Override
public HfcOrder getById(Long id) {
HfcOrder hfcOrder = (HfcOrder) getCurrentSession().get(HfcOrder.class, id);
return hfcOrder;
}
@Override
public List<HfcOrder> getHfcOrdersByEventLabel(EventLabel eventLabel) {
DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass());
if (eventLabel != null) {
CriteriaBuilder.addEqRestriction(criteria, "eventLabel", eventLabel);
}
@SuppressWarnings("unchecked") List<HfcOrder> results = criteria.getExecutableCriteria(getSessionCustom()).list();
return results;
}
@Override
public ShippingInformation findShippingInformationForHfc(Long shippingInformationId) {
Criteria criteria = getSessionCustom().createCriteria(ShippingInformation.class);
criteria.add(Restrictions.eq("id", shippingInformationId));
return (ShippingInformation) criteria.uniqueResult();
}
}