package com.github.windbender.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.windbender.domain.Project;
import com.github.windbender.domain.Species;
import com.yammer.dropwizard.hibernate.AbstractDAO;
public class SpeciesDAO extends AbstractDAO<Species>{
Logger logger = LoggerFactory.getLogger(SpeciesDAO.class);
public SpeciesDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public Species findById(long speciesId) {
return get(speciesId);
}
public List<Species> findAll() {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Species.class);
logger.info("the criteria is " + crit.toString());
List<Species> findList = (List<Species>) crit.list();
return findList;
}
public Species findByNameContains(String string) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Species.class);
crit.add(Restrictions.or(
Restrictions.like("name", "%"+string+"%"),
Restrictions.like("latinName", "%"+string+"%")
));
logger.info("the criteria is " + crit.toString());
List<Species> findList = (List<Species>) crit.list();
if(findList.size() ==1) return findList.get(0);
if(findList.size() ==0) {
logger.error("done for for speces query for "+string);
return null;
}
logger.error("more than one species for "+string+" found");
return null;
}
}