package com.ssbusy.checkout.dao;
import java.util.List;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.broadleafcommerce.common.encryption.EncryptionModule;
import org.broadleafcommerce.common.persistence.EntityConfiguration;
import org.broadleafcommerce.core.payment.domain.Referenced;
import org.springframework.stereotype.Repository;
import com.ssbusy.payment.service.type.IntegrlPaymentInfo;
@Repository("blIntegrlSecurePaymentInfoDao")
public class InSecurePaymentInfoDaoImpl implements InSecurePaymentInfoDao {
@PersistenceContext(unitName = "blSecurePU")
protected EntityManager em;
@Resource(name = "blEncryptionModule")
protected EncryptionModule encryptionModule;
@Resource(name = "blEntityConfiguration")
protected EntityConfiguration entityConfiguration;
@SuppressWarnings("unchecked")
@Override
public IntegrlPaymentInfo findInInfo(String referenceNumber) {
Query query = em.createNamedQuery("BC_READ_BANK_ACCOUNT_BY_REFERENCE_NUMBER");
query.setParameter("referenceNumber", referenceNumber);
List<IntegrlPaymentInfo> infos = query.getResultList();
IntegrlPaymentInfo response = (infos == null || infos.size() == 0) ? null : infos.get(0);
if (response != null) {
response.setEncryptionModule(encryptionModule);
}
return response;
}
@Override
public IntegrlPaymentInfo createInPaymentInfo() {
IntegrlPaymentInfo response = (IntegrlPaymentInfo) entityConfiguration.createEntityInstance("com.ssbusy.payment.service.type.IntegrlPaymentInfo");
response.setEncryptionModule(encryptionModule);
return response;
}
@Override
public Referenced save(Referenced securePaymentInfo) {
return em.merge(securePaymentInfo);
}
@Override
public void delete(Referenced securePaymentInfo) {
if (!em.contains(securePaymentInfo)) {
securePaymentInfo = em.find(securePaymentInfo.getClass(), securePaymentInfo.getId());
}
em.remove(securePaymentInfo);
}
}