/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition 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; version 3 of the License.
//
// This community edition 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.projectforge.timesheet;
import java.io.Serializable;
import java.util.Date;
import org.projectforge.calendar.TimePeriod;
import org.projectforge.core.BaseSearchFilter;
import org.projectforge.core.OrderDirection;
import org.projectforge.task.TaskDependentFilter;
/**
*
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class TimesheetFilter extends BaseSearchFilter implements Serializable, TaskDependentFilter
{
private static final long serialVersionUID = -1449906331186225597L;
private TimePeriod timePeriod;
private Integer userId;
private Integer taskId;
private boolean marked;
private boolean longFormat = false;
private boolean recursive = true;
private OrderDirection orderType = OrderDirection.DESC;
public TimesheetFilter()
{
}
public TimesheetFilter(final BaseSearchFilter filter)
{
super(filter);
}
public Integer getTaskId()
{
return taskId;
}
public void setTaskId(final Integer taskId)
{
this.taskId = taskId;
}
public Integer getUserId()
{
return userId;
}
public void setUserId(final Integer userId)
{
this.userId = userId;
}
/**
* @return the startTime
*/
public Date getStartTime()
{
return getTimePeriod().getFromDate();
}
/**
* @param startTime the startTime to set
*/
public void setStartTime(final Date startTime)
{
getTimePeriod().setFromDate(startTime);
}
/**
* @return the stopTime
*/
public Date getStopTime()
{
return getTimePeriod().getToDate();
}
/**
* @param stopTime the stopTime to set
*/
public void setStopTime(final Date stopTime)
{
getTimePeriod().setToDate(stopTime);
}
/**
* Gets start and stop time from timePeriod.
* @param timePeriod
*/
public void setTimePeriod(final TimePeriod timePeriod)
{
setStartTime(timePeriod.getFromDate());
setStopTime(timePeriod.getToDate());
}
/**
* Is this time sheet marked? (Currently marked time sheets are time sheets with time period overlap (collision) with another time sheet
* of the same user.)
* @return
*/
public boolean isMarked()
{
return marked;
}
public void setMarked(final boolean marked)
{
this.marked = marked;
}
/**
* Show description abbreviated or in long format.
* @return
*/
public boolean isLongFormat()
{
return longFormat;
}
public void setLongFormat(final boolean longFormat)
{
this.longFormat = longFormat;
}
/**
* If recursive flag is false then only the time sheets of the chosen task are selected, otherwise the time sheets of the chosen task
* including all sub task are selected.
* @return
*/
public boolean isRecursive()
{
return recursive;
}
public void setRecursive(final boolean recursive)
{
this.recursive = recursive;
}
/**
* Should the result set ordered descendant (default)?
* @return
*/
public OrderDirection getOrderType()
{
return orderType;
}
public void setOrderType(final OrderDirection orderType)
{
this.orderType = orderType;
}
private TimePeriod getTimePeriod()
{
if (timePeriod == null) {
timePeriod = new TimePeriod();
}
return timePeriod;
}
}