package com.thingtrack.konekti.dao.sensor.impl.internal;
import java.util.List;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import com.thingtrack.konekti.dao.sensor.api.SensorLocationDao;
import com.thingtrack.konekti.dao.template.JpaDao;
import com.thingtrack.konekti.domain.sensor.Sensor;
import com.thingtrack.konekti.domain.sensor.SensorLocation;
/**
* @author Thingtrack S.L.
*
*/
@Repository
public class SensorLocationDaoImpl extends JpaDao<SensorLocation, Integer> implements SensorLocationDao {
@Override
public SensorLocation getByCode(String code) throws Exception {
SensorLocation sensorLocation = (SensorLocation)getEntityManager()
.createQuery("SELECT p FROM " + getEntityName() + " p WHERE p.code = :code")
.setParameter("code", code).getSingleResult();
return sensorLocation;
}
@Override
public SensorLocation getByMac(String mac) throws Exception {
SensorLocation sensorLocation = (SensorLocation)getEntityManager()
.createQuery("SELECT p FROM " + getEntityName() + " p WHERE p.mac = :mac")
.setParameter("mac", mac).getSingleResult();
return sensorLocation;
}
@Override
@SuppressWarnings("unchecked")
public List<SensorLocation> getAllActive() throws Exception {
String queryString = "SELECT sl";
queryString += " FROM SensorLocation sl";
queryString += " JOIN sl.sensorStatus ss";
queryString += " WHERE ss.code = :code";
Query query = (Query) getEntityManager()
.createQuery(queryString)
.setParameter("code", Sensor.STATUS.ACTIVE.name());
return (List<SensorLocation>)query.getResultList();
}
}