package com.bizofficer.apiweb.cachehub;

import java.util.Iterator;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.TypedQuery;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.crossstore.ChangeSetPersister.NotFoundException;
import org.springframework.stereotype.Service;

import com.bizofficer.hibernate.entity.PgprepCacheTemplate;


@Service
public class CacheTemplateService{
	
	private static final Logger logger = Logger.getLogger(CacheTemplateService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	public Object doExecute(Object obj) throws NotFoundException{
		BeanCache objBean = (BeanCache) obj; 	
		CacheTemplateResponseBean responseObj = new CacheTemplateResponseBean();
		
		try {
			
			responseObj.setResponseTxt("failed");
			
			logger.info( "TemplateId >>> " +  objBean.getTemplateId() );
			
			if(objBean.getTemplateId()==null) {
				return responseObj;
			}

			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();

    		TypedQuery<PgprepCacheTemplate> querySCT = (TypedQuery<PgprepCacheTemplate>) entityManager.createQuery("from "+PgprepCacheTemplate.class.getName()+" where templateId=:templateId ", PgprepCacheTemplate.class);
			querySCT.setParameter("templateId", objBean.getTemplateId());
			querySCT.setFirstResult(0);
			querySCT.setMaxResults(1);
			List<?> resultListSCT = querySCT.getResultList();
			Iterator<?> iteratorSCT=resultListSCT.iterator();
			if(iteratorSCT.hasNext()) {				
				PgprepCacheTemplate myObjCache = (PgprepCacheTemplate)iteratorSCT.next();
				
				responseObj.setTopicTree(myObjCache.getTopicTree());
				responseObj.setTopicList(myObjCache.getTopicList());
				responseObj.setKeywordList(myObjCache.getKeywordList());
				responseObj.setTopicTreeLearning(myObjCache.getTopicTreeLearning());
				responseObj.setTopicListLearning(myObjCache.getTopicListLearning());
				responseObj.setKeywordListLearning(myObjCache.getKeywordListLearning());
				responseObj.setTopicTreeTest(myObjCache.getTopicTreeTest());
				responseObj.setTopicListTest(myObjCache.getTopicListTest());
				responseObj.setSmartLearningJson(myObjCache.getSmartLearning());
				responseObj.setMockTestJson(myObjCache.getMockTest());

			}	            					

			entityManager.getTransaction().commit();
			entityManager.close();
			
			responseObj.setResponseTxt("success");
			
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		///logger.info( "dataList >>> " +  dataList );
			
		return responseObj;
	}
	
	
	
}
