package com.bizofficer.teacher.association;



import java.util.ArrayList;
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.PgprepSubjects;
import com.bizofficer.hibernate.repository.PgprepSchoolUsersRepository;
import com.bizofficer.school.subjects.SubjectResponseBean;


@Service
public class SubjectTeachService{
	
	private static final Logger logger = Logger.getLogger(SubjectTeachService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	@Autowired
	PgprepSchoolUsersRepository adminRepo;
	
	public Object execute(Object obj) throws NotFoundException{
//		SubjectBean objBean = (SubjectBean) obj;
		List<SubjectResponseBean> responseListObj = new ArrayList<SubjectResponseBean>();
		
		try {
			
			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();
			
			TypedQuery<PgprepSubjects> query = (TypedQuery<PgprepSubjects>) entityManager.createQuery("from "+PgprepSubjects.class.getName()+" order by subject ", PgprepSubjects.class);
			query.setFirstResult(0);
			query.setMaxResults(500);
			List<?> resultList = query.getResultList();
			logger.info("Subjects resultList Count: "+resultList.size());
			Iterator<?> iterator=resultList.iterator();	
			SubjectResponseBean responseBeanObj;
			while(iterator.hasNext()){
				PgprepSubjects myObj = (PgprepSubjects)iterator.next();		
				
				responseBeanObj = new SubjectResponseBean();
				responseBeanObj.setId(myObj.getId());
				responseBeanObj.setSubject(myObj.getSubject());
				
				responseListObj.add(responseBeanObj);
			}

			logger.info("Subjects Count: "+responseListObj.size());
				
			entityManager.getTransaction().commit();
			entityManager.close();
		        
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		
		return responseListObj;
	}
	

	
	

	
	
}
