IntegratedOrderRepositoryImpl.java

package com.tradecloud.repository.impl;

import com.tradecloud.domain.integration.IntegratedOrder;
import com.tradecloud.domain.integration.IntegratedMD5;
import com.tradecloud.repository.IntegratedOrderRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository(value = "integratedOrderRepository")
public class IntegratedOrderRepositoryImpl extends RepositoryBaseImpl<IntegratedOrder, Object> implements IntegratedOrderRepository {

    @Override
    public List<IntegratedOrder> findAllSortedById() {
        return (List<IntegratedOrder>) getNamedQuery("findAllSortedById");
    }

    @Override
    public IntegratedOrder findOldest() {
        Query query = getSession().createQuery("from IntegratedOrder io order by io.id asc");
        query.setMaxResults(1);
        return (IntegratedOrder) query.uniqueResult();
    }

    @Override
    public String getLastMD5ForOrder(String reference) {
        Query query = getSession().createQuery("from IntegratedMD5 where reference =:reference and type =:type order by created desc");
        query.setMaxResults(1);
        query.setParameter("reference", reference);
        query.setParameter("type", IntegratedMD5.type.ORDER);
        IntegratedMD5 md5 = (IntegratedMD5) query.uniqueResult();
        if (md5 != null) {
            return md5.getMd5();
        }
        return null;
    }

    @Override
    public void storeLastMD5ForOrder(IntegratedMD5 integratedMD5) {
        getCurrentSession().persist(integratedMD5);
    }
}