package info.ozkan.vipera.dao.administrator;
import info.ozkan.vipera.business.administrator.AdministratorManagerResult;
import info.ozkan.vipera.business.administrator.AdministratorManagerStatus;
import info.ozkan.vipera.entities.Administrator;
import java.util.List;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
* {@link AdministratorDao} arayüzü implementasyonu
*
* @author Ömer Özkan
*
*/
@Named("administratorDao")
public class AdministratorDaoImpl implements AdministratorDao {
/**
* Veritabanında kayıtlı bütün yöneticileri dönderen JQL sorgusu
*/
private static final String JQL_SELECT_ALL = "from Administrator";
/**
* Entitiy manager
*/
private EntityManager em;
public AdministratorManagerResult getAll() {
AdministratorManagerResult result;
final Query query = em.createQuery(JQL_SELECT_ALL);
final List<Administrator> list = query.getResultList();
result = createSuccessResult();
result.setAdministrators(list);
return result;
}
/**
* Başarılı bir sonuç nesnesi üretir
*
* @return
*/
private AdministratorManagerResult createSuccessResult() {
AdministratorManagerResult result;
result = new AdministratorManagerResult();
result.setStatus(AdministratorManagerStatus.SUCCESS);
return result;
}
/**
* @param entityManager
* the entityManager to set
*/
@PersistenceContext
public void setEntityManager(final EntityManager entityManager) {
em = entityManager;
}
public AdministratorManagerResult update(final Administrator administrator) {
em.merge(administrator);
return createSuccessResult();
}
public AdministratorManagerResult add(final Administrator administrator) {
return update(administrator);
}
public AdministratorManagerResult delete(final Administrator administrator) {
em.remove(em.merge(administrator));
return createSuccessResult();
}
}