SearchControllerImpl.java
// license-header java merge-point
package org.andromda.timetracker.web.timecardsearch;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.andromda.timetracker.domain.TimecardStatus;
import org.andromda.timetracker.service.TimeTrackingServiceDelegate;
import org.andromda.timetracker.service.UserServiceDelegate;
import org.andromda.timetracker.vo.TimecardSearchCriteriaVO;
import org.andromda.timetracker.vo.TimecardSummaryVO;
import org.andromda.timetracker.vo.UserVO;
import org.andromda.timetracker.vo.UserVOComparator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @see org.andromda.timetracker.web.timecardsearch.SearchController
*/
public class SearchControllerImpl
extends SearchController
{
private static final long serialVersionUID = 1465722497189650491L;
private Log logger = LogFactory.getLog(SearchControllerImpl.class);
private static final String ALL_STRING = "-- All --";
/**
* @see org.andromda.timetracker.web.timecardsearch.SearchController#populateSearchScreen(java.lang.Long submitter, java.lang.Long approver, java.lang.String status, java.util.Date startDateMinimum, java.util.Date startDateMaximum)
*/
public void populateSearchScreen(PopulateSearchScreenForm form)
{
// form.setSubmitterValueList(new Object[] {"submitter-1", "submitter-2", "submitter-3", "submitter-4", "submitter-5"});
// form.setSubmitterLabelList(form.getSubmitterValueList());
// form.setApproverValueList(new Object[] {"approver-1", "approver-2", "approver-3", "approver-4", "approver-5"});
// form.setApproverLabelList(form.getApproverValueList());
// form.setStatusValueList(new Object[] {"status-1", "status-2", "status-3", "status-4", "status-5"});
// form.setStatusLabelList(form.getStatusValueList());
if (logger.isDebugEnabled())
{
logger.debug("form: " + form);
}
// Get the list of users and add the "All" option at the top
UserVO[] users = null;
UserServiceDelegate usd = null;
try
{
usd = new UserServiceDelegate();
users = usd.getAllUsers();
}
finally
{
usd.close();
}
if (users != null)
{
Arrays.sort(users, new UserVOComparator());
List userList = new ArrayList(Arrays.asList(users));
userList.add(0, new UserVO(Long.valueOf(0), ALL_STRING, null, null));
// Populate the submitter and approver dropdowns
form.setSubmitterBackingList(userList, "id", "username");
form.setApproverBackingList(userList, "id", "username");
}
// Populate the status dropdown
List statusLabels = new ArrayList(TimecardStatus.literals());
List statusValues = new ArrayList(TimecardStatus.literals());
statusLabels.add(0, ALL_STRING);
statusValues.add(0, "");
form.setStatusLabelList(statusLabels.toArray());
form.setStatusValueList(statusValues.toArray());
TimecardStatus status = null;
if (form.getStatus() != null && form.getStatus().length() > 0)
{
status = TimecardStatus.fromString(form.getStatus());
}
// Populate timecard summaries
TimecardSearchCriteriaVO criteria = new TimecardSearchCriteriaVO(
form.getSubmitter(),
form.getApprover(),
status,
form.getStartDateMinimum(),
form.getStartDateMaximum());
TimeTrackingServiceDelegate tsd = null;
try
{
tsd = new TimeTrackingServiceDelegate();
TimecardSummaryVO[] timecards = tsd.findTimecards(criteria);
form.setTimecardSummaries(timecards);
}
catch (Exception e)
{
logger.error("failed finding timecards", e);
}
finally
{
tsd.close();
}
}
/**
* @see org.andromda.timetracker.web.timecardsearch.SearchController#initializeTimecardId(org.andromda.timetracker.web.timecardsearch.InitializeTimecardIdForm)
*/
public void initializeTimecardId(InitializeTimecardIdForm form)
{
form.setTimecardId(form.getId());
}
}