class DataQueryParams {

    public Date getEarliestStartDate()
    {
        Date earliestStartDate = new Date( Long.MAX_VALUE );

        if ( startDate != null && startDate.before( earliestStartDate ) )
        {
            earliestStartDate = startDate;
        }

        for ( DimensionalItemObject object : getAllPeriods() )
        {
            Period period = (Period) object;

            earliestStartDate = period.getStartDate().before( earliestStartDate ) ? period.getStartDate() : earliestStartDate;
        }

        return earliestStartDate;
    }

    protected  DataQueryParams();

}