TimecardDaoImpl.java
// license-header java merge-point
/**
* This is only generated once! It will never be overwritten.
* You can (and have to!) safely modify it by hand.
*/
package org.andromda.timetracker.domain;
import java.util.List;
import org.andromda.timetracker.vo.TimecardSearchCriteriaVO;
import org.andromda.timetracker.vo.TimecardSummaryVO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.criterion.Restrictions;
/**
* @see Timecard
*/
public class TimecardDaoImpl
extends TimecardDaoBase
{
private Log logger = LogFactory.getLog(TimecardDaoImpl.class);
/**
* @see TimecardDao#findByCriteria(TimecardSearchCriteriaVO)
*/
@Override
protected List handleFindByCriteria(TimecardSearchCriteriaVO criteria)
{
// Create the timecard criteria
Criteria timecardCriteria = this.hibernateSession.createCriteria(Timecard.class);
timecardCriteria.setFetchMode("submitter", FetchMode.JOIN);
timecardCriteria.setFetchMode("approver", FetchMode.JOIN);
// Add submitter criteria
if (criteria.getSubmitterId() != null)
{
timecardCriteria.createCriteria("submitter").add(Restrictions.idEq(criteria.getSubmitterId()));
}
// Add approver criteria
if (criteria.getApproverId() != null)
{
timecardCriteria.createCriteria("approver").add(Restrictions.idEq(criteria.getApproverId()));
}
// Add status criteria
if (criteria.getStatus() != null)
{
timecardCriteria.add(Restrictions.eq("status", criteria.getStatus()));
}
// Add startDateMin criteria
if (criteria.getStartDateMin() != null)
{
timecardCriteria.add(Restrictions.ge("startDate", criteria.getStartDateMin()));
}
// Add startDateMax criteria
if (criteria.getStartDateMax() != null)
{
timecardCriteria.add(Restrictions.le("startDate", criteria.getStartDateMax()));
}
List timecards = timecardCriteria.list();
if (this.logger.isDebugEnabled())
{
this.logger.debug(timecards.size() + " timecards found");
}
return timecards;
}
/**
* @see TimecardDao#toTimecardSummaryVO(Timecard, TimecardSummaryVO)
*/
@Override
public void toTimecardSummaryVO(
Timecard sourceEntity,
TimecardSummaryVO targetVO)
{
// TODO verify behavior of toTimecardSummaryVO
super.toTimecardSummaryVO(sourceEntity, targetVO);
// add the related entities
targetVO.setSubmitterName(sourceEntity.getSubmitter().getUsername());
if (sourceEntity.getApprover() != null)
{
targetVO.setApproverName(sourceEntity.getApprover().getUsername());
}
}
/**
* @see TimecardDao#toTimecardSummaryVO(Timecard)
*/
@Override
public TimecardSummaryVO toTimecardSummaryVO(final Timecard entity)
{
// TODO verify behavior of toTimecardSummaryVO
return super.toTimecardSummaryVO(entity);
}
/**
* Retrieves the entity object that is associated with the specified value object
* from the object store. If no such entity object exists in the object store,
* a new, blank entity is created
*/
@SuppressWarnings("static-method")
private Timecard loadTimecardFromTimecardSummaryVO(TimecardSummaryVO timecardSummaryVO)
{
// TODO implement loadTimecardFromTimecardSummaryVO
throw new java.lang.UnsupportedOperationException("loadTimecardFromTimecardSummaryVO(TimecardSummaryVO) not yet implemented.");
/* A typical implementation looks like this:
Timecard timecard = this.load(timecardSummaryVO.getId());
if (timecard == null)
{
timecard = Timecard.Factory.newInstance();
}
return timecard;
*/
}
/**
* @see TimecardDao#timecardSummaryVOToEntity(TimecardSummaryVO)
*/
@Override
public Timecard timecardSummaryVOToEntity(TimecardSummaryVO timecardSummaryVO)
{
// TODO verify behavior of timecardSummaryVOToEntity
Timecard entity = this.loadTimecardFromTimecardSummaryVO(timecardSummaryVO);
this.timecardSummaryVOToEntity(timecardSummaryVO, entity, true);
return entity;
}
/**
* @see TimecardDao#timecardSummaryVOToEntity(TimecardSummaryVO, Timecard, boolean)
*/
@Override
public void timecardSummaryVOToEntity(
TimecardSummaryVO sourceVO,
Timecard targetEntity,
boolean copyIfNull)
{
// TODO verify behavior of timecardSummaryVOToEntity
super.timecardSummaryVOToEntity(sourceVO, targetEntity, copyIfNull);
}
}