package com.thingtrack.konekti.dao.impl.internal;
import java.util.List;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import com.thingtrack.konekti.dao.api.ServiceDao;
import com.thingtrack.konekti.dao.template.JpaDao;
import com.thingtrack.konekti.domain.Organization;
import com.thingtrack.konekti.domain.Service;
/**
* @author Thingtrack S.L.
*
*/
@Repository
public class ServiceDaoImpl extends JpaDao<Service, Integer> implements
ServiceDao {
@Override
public Service getByCode(String code) throws Exception {
// Retrieve existing code
Service service = (Service) getEntityManager()
.createQuery(
"SELECT p FROM " + getEntityName()
+ " p WHERE p.code = :code")
.setParameter("code", code).getSingleResult();
return service;
}
@Override
public List<Service> getAll(Organization organization) throws Exception {
String queryString;
// Retrieve existing code
queryString = "SELECT DISTINCT sv";
queryString += " FROM Service sv";
queryString += " JOIN sv.routes rt";
queryString += " JOIN rt.stops st";
queryString += " WHERE sv.organization = :organization";
TypedQuery<Service> query = getEntityManager().createQuery(queryString, Service.class).
setParameter("organization", organization);
return query.getResultList();
}
@Override
public List<Service> getAllTemplates(Organization organization) throws Exception {
String queryString;
// Retrieve existing code
queryString = "SELECT DISTINCT sv";
queryString += " FROM Service sv";
queryString += " JOIN sv.routes rt";
queryString += " JOIN rt.stops st";
queryString += " WHERE sv.organization = :organization";
TypedQuery<Service> query = getEntityManager().createQuery(queryString, Service.class).
setParameter("organization", organization);
return query.getResultList();
}
}