package qa.qcri.aidr.trainer.api.dao.impl;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import qa.qcri.aidr.trainer.api.dao.ClientAppDao;
import qa.qcri.aidr.trainer.api.entity.ClientApp;
import qa.qcri.aidr.trainer.api.store.StatusCodeType;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: jilucas
* Date: 9/18/13
* Time: 6:31 PM
* To change this template use File | Settings | File Templates.
*/
@Repository
public class ClientAppDaoImpl extends AbstractDaoImpl<ClientApp, String> implements ClientAppDao {
protected ClientAppDaoImpl(){
super(ClientApp.class);
}
@Override
public ClientApp findClientAppByID(String columnName, Long id) {
ClientApp appCfg = findByCriterionID(Restrictions.eq(columnName, id));
return appCfg; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public ClientApp findClientAppByCriteria(String columnName, String value) {
ClientApp appCfg = findByCriterionID(Restrictions.eq(columnName, value));
return appCfg; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public List<ClientApp> findAllClientApp(Long clientID) {
List<ClientApp> clientAppList = findByCriteria(Restrictions.eq("clientID", clientID));
return clientAppList; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public List<ClientApp> findAllClientAppByCrisisID(Long crisisID) {
return findByCriteria(Restrictions.eq("crisisID", crisisID)); //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public List<ClientApp> findAllClientAppByStatus(Integer status) {
return findByCriteria(Restrictions.eq("status", status)); //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public List<ClientApp> findClientAppByCrisisAndAttribute(Long crisisID, Long attributeID) {
return findByCriteria(Restrictions.conjunction()
.add(Restrictions.eq("crisisID",crisisID))
.add(Restrictions.eq("nominalAttributeID",attributeID)));
}
@Override
public void updateClientAppStatus(ClientApp clientApp, Integer status) {
//To change body of implemented methods use File | Settings | File Templates.
ClientApp thisClientApp = findClientAppByID("clientAppID", clientApp.getClientAppID());
if(thisClientApp!= null){
thisClientApp.setStatus(status);
saveOrUpdate(thisClientApp);
}
}
@Override
public List<ClientApp> getAllActiveClientApp() {
return findByCriteria(Restrictions.disjunction()
.add(Restrictions.eq("status", StatusCodeType.AIDR_ONLY))
.add(Restrictions.eq("status", StatusCodeType.MICROMAPPER_ONLY))
.add(Restrictions.eq("status", StatusCodeType.AIDR_MICROMAPPER_BOTH)));
}
@Override
public List<ClientApp> findClientAppByAppType(String columnName, Integer typeID) {
return findByCriteria(Restrictions.conjunction()
.add(Restrictions.eq("appType",typeID))
.add(Restrictions.not(Restrictions.eq("status",0))));
}
}