/* Ara - capture species and specimen data
*
* Copyright (C) 2009 INBio (Instituto Nacional de Biodiversidad)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.inbio.ara.eao.germplasm.impl;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.inbio.ara.eao.germplasm.*;
import javax.ejb.Stateless;
import javax.persistence.Query;
import org.inbio.ara.eao.BaseEAOImpl;
import org.inbio.ara.persistence.germplasm.SemenGathering;
/**
*
* @author dasolano
*/
@Stateless
public class SemenGatheringEAOImpl extends BaseEAOImpl<SemenGathering, Long> implements SemenGatheringEAOLocal {
public Long countAllBySementalId(Long sementalId) {
Query q = em.createQuery(
" Select count(s.sementalId) " +
" from SemenGathering as s " +
" where s.sementalId = :sementalId "
);
q.setParameter("sementalId", sementalId);
return (Long)q.getSingleResult();
}
public List<SemenGathering> findAllBySementalId(Long sementalId, int firstResult, int maxtResult) {
Query q = em.createQuery(
" from SemenGathering as s " +
" where s.sementalId = :sementalId " +
" order by s.semenGatheringDate"
);
q.setParameter("sementalId", sementalId);
q.setFirstResult(firstResult);
q.setMaxResults(maxtResult);
return q.getResultList();
}
public List<Long> findBySemenGatheringDate(Calendar semenGatheringDate, Calendar finalSemenGatheringDate, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.semenGatheringDate >= :semenGatheringDate and " +
" s.semenGatheringDate <= :finalSemenGatheringDate and" +
" s.sementalId = :sementalId"
);
q.setParameter("semenGatheringDate", semenGatheringDate);
q.setParameter("finalSemenGatheringDate", finalSemenGatheringDate);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findBySemenGatheringTime(String time, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.semenGatheringTime = '"+time +"' and " +
" s.sementalId = :sementalId"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByVolume(Double volume, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.volume = :volume and " +
" s.sementalId = :sementalId"
);
q.setParameter("volume", volume);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByMotility(Long motility, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.motility = :motility and " +
" s.sementalId = :sementalId"
);
q.setParameter("motility", motility);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByConcentration(Long concentration, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.concentration = :concentration and " +
" s.sementalId = :sementalId"
);
q.setParameter("concentration", concentration);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByStrawQuantity(Long strawQuantity, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.strawQuantity = :strawQuantity and " +
" s.sementalId = :sementalId"
);
q.setParameter("strawQuantity", strawQuantity);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByDilution(String dilution, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.dilution like '%"+ dilution+ "%' and " +
" s.sementalId = :sementalId"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByTankNumber(Long tankNumber, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.tankNumber = :tankNumber and " +
" s.sementalId = :sementalId"
);
q.setParameter("tankNumber", tankNumber);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByCanisterNumber(Long canisterNumber, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.canisterNumber = :canisterNumber and " +
" s.sementalId = :sementalId"
);
q.setParameter("canisterNumber", canisterNumber);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByGobletNumber(Long gobletNumber, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.gobletNumber = :gobletNumber and " +
" s.sementalId = :sementalId"
);
q.setParameter("gobletNumber", gobletNumber);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByStrawColor(String strawColor, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.strawColor like '%"+strawColor + "%'"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByPostThawMotility(Long postThawMotility, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.postThawMotility = :postThawMotility and " +
" s.sementalId = :sementalId"
);
q.setParameter("postThawMotility", postThawMotility);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByActiveDoses(Long activeDoses, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.activeDoses = :activeDoses and " +
" s.sementalId = :sementalId"
);
q.setParameter("activeDoses", activeDoses);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByStrawSize(Double strawSize, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.strawSize = :strawSize and " +
" s.sementalId = :sementalId"
);
q.setParameter("strawSize", strawSize);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findBySemenGatheringMethod(Long semenGatheringMethod, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering s, SemenGatheringMethod sgm " +
" where s.semenGatheringMethodId = sgm.semenGatheringMethodId and " +
" sgm.semenGatheringMethod = '"+semenGatheringMethod+" and " +
" s.sementalId = :sementalId"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByConsistency(String consistence, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.consistence = '"+consistence+"' and " +
" s.sementalId = :sementalId"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findBySemenColor(String semenColor, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.semenColor like '%"+semenColor+"%' and " +
" s.sementalId = :sementalId"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByPH(Long ph, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.ph = :ph and " +
" s.sementalId = :sementalId"
);
q.setParameter("ph", ph);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findByMassMotility(Long massMotility, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering as s " +
" where s.massMotility = :massMotility and" +
" s.sementalId = :sementalId"
);
q.setParameter("massMotility", massMotility);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public List<Long> findBySolvent(Long solvent, Long sementalId) {
Query q = em.createQuery(
" Select s.semenGatheringId " +
" from SemenGathering s, Solvent so " +
" where s.solventId = so.solventId and " +
" so.name = '"+solvent+"' and "+
" so.sementalId = :sementalId"
);
q.setParameter("sementalId", sementalId);
return q.getResultList();
}
public Long countCumulativeStrawQuantity(Long sementalId)
{
Query q = em.createQuery(
" Select sum(s.currentStrawQuantity) " +
" from SemenGathering as s " +
" where s.sementalId = :sementalId "
);
q.setParameter("sementalId", sementalId);
return (Long)q.getSingleResult();
}
}