package cn.com.liandisys.ycjt.ggcx.airline.service.impl;


import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;

import cn.com.liandisys.ycjt.ggcx.airline.dao.AirLineDao;
import cn.com.liandisys.ycjt.ggcx.airline.model.AirLineEntity;
import cn.com.liandisys.ycjt.ggcx.airline.service.AirLineService;
import cn.com.liandisys.ycjt.ggcx.airline.vo.AirLine;
import cn.com.liandisys.ycjt.ggcx.common.util.StringUtil;

/**
 * 
 *     
 * 项目名称：ycjt-ggcx    
 * 类名称：AirLineServiceImpl    
 * 类描述：    
 * 创建人：yangd    
 * 创建时间：2016年11月25日 上午9:45:25    
 * 修改人：yangd    
 * 修改时间：2016年11月25日 上午9:45:25    
 * 修改备注：    
 * @version     
 *
 */
@Service
public class AirLineServiceImpl implements AirLineService{
    private Logger logger = LoggerFactory.getLogger(AirLineServiceImpl.class);

    @Resource(name = "airLineDao")
    private AirLineDao dao;

    @Override
    public Page<AirLineEntity> findAll(Specification<AirLineEntity> spec, Pageable pageable) {

        return dao.findAll(spec,pageable);
    }
    
    /**
     * 动态查询条件拼接
     * @param queryParam
     * @return
     */
    public Specification<AirLineEntity> getSpecification(AirLine queryParam) {

        final String type = queryParam.getType();

        return new Specification<AirLineEntity>() {

            @Override
            public Predicate toPredicate(Root<AirLineEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

                Predicate predicate = cb.conjunction();
                //通过名称查找
                if (!StringUtil.isEmpty(type)) {
                    predicate.getExpressions().add(cb.equal((root.get("TYPE").as(String.class)), type));
                }
                return predicate;
            }
        };
    }


}
