ALCHistoricalCostItemRepositoryImpl.java
package com.tradecloud.repository.hfc;
import java.util.List;
import org.hibernate.Criteria;
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.common.Incoterm;
import com.tradecloud.domain.model.hfcmanagement.ALCHistoricalCostItem;
import com.tradecloud.domain.model.hfcmanagement.ProductGroup;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.place.Country;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
@Repository(value = "alcHistoricalCostItemRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ALCHistoricalCostItemRepositoryImpl extends RepositoryBaseImpl<ALCHistoricalCostItem, Object>
implements ALCHistoricalCostItemRepository {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public ALCHistoricalCostItem findAlcALCHistoricalCostItem(String shipmentReference, String orderReference, String productItemReference) {
Criteria searchCriteria = getSessionCustom().createCriteria(getPersistentClass());
searchCriteria.add(Restrictions.eq("shipmentReference", shipmentReference));
searchCriteria.add(Restrictions.eq("orderReference", orderReference));
Criteria productCriteria = searchCriteria.createCriteria("product");
productCriteria.add(Restrictions.eq("code", productItemReference));
return (ALCHistoricalCostItem) searchCriteria.uniqueResult();
}
/**
* Search for ALCHistoricalCostItems using elements that narrows down the
* list for the purpose of calculating the historical factor.
*
*
* @param productGroup
* @param incoterm
* @param shippingMode
* @param placeOfLoading
* @param placeOfDischarge
* @param countryOfOrigin
* @return
*/
@Override
public List<ALCHistoricalCostItem> search(ProductGroup productGroup, Incoterm incoterm, ShippingMode shippingMode, PlaceOfLoading placeOfLoading,
PlaceOfDischarge placeOfDischarge, Country countryOfOrigin) {
productGroup = (ProductGroup) getSessionCustom().merge(productGroup);
Criteria criteria = getSessionCustom().createCriteria(getPersistentClass());
criteria.add(Restrictions.eq("productGroup", productGroup));
criteria.add(Restrictions.eq("incoterm", incoterm));
criteria.add(Restrictions.eq("shippingMode", shippingMode));
criteria.add(Restrictions.eq("placeOfLoading", placeOfLoading));
criteria.add(Restrictions.eq("placeOfDischarge", placeOfDischarge));
if (countryOfOrigin != null) {
Criteria productCriteria = criteria.createCriteria("product");
productCriteria.add(Restrictions.eq("countryOfOrigin", countryOfOrigin));
}
return criteria.list();
}
}