/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * 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 Lesser General Public License for more details. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.mantle.client.dialogs.scheduling.validators; import org.pentaho.gwt.widgets.client.utils.StringUtils; import org.pentaho.gwt.widgets.client.utils.TimeUtil; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor.DailyRecurrenceEditor; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor.HourlyRecurrenceEditor; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor.MinutelyRecurrenceEditor; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor.MonthlyRecurrenceEditor; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor.WeeklyRecurrenceEditor; import org.pentaho.mantle.client.dialogs.scheduling.RecurrenceEditor.YearlyRecurrenceEditor; /** * * @author Steven Barkdull * */ @SuppressWarnings( "deprecation" ) public class RecurrenceEditorValidator implements IUiValidator { private RecurrenceEditor recurrenceEditor = null; protected DateRangeEditorValidator dateRangeEditorValidator = null; public RecurrenceEditorValidator( RecurrenceEditor recurrenceEditor ) { this.recurrenceEditor = recurrenceEditor; this.dateRangeEditorValidator = new DateRangeEditorValidator( recurrenceEditor.getDateRangeEditor() ); } public boolean isValid() { boolean isValid = true; switch ( recurrenceEditor.getTemporalState() ) { case SECONDS: RecurrenceEditor.SecondlyRecurrenceEditor sEd = recurrenceEditor.getSecondlyEditor(); String seconds = sEd.getValue(); if ( !StringUtils.isPositiveInteger( seconds ) || ( Integer.parseInt( seconds ) <= 0 ) || Integer.parseInt( seconds ) > TimeUtil.MAX_SECOND_BY_MILLISEC ) { isValid = false; } break; case MINUTES: MinutelyRecurrenceEditor mEd = recurrenceEditor.getMinutelyEditor(); String minutes = mEd.getValue(); if ( !StringUtils.isPositiveInteger( minutes ) || ( Integer.parseInt( minutes ) <= 0 ) || Integer.parseInt( minutes ) > TimeUtil.MAX_MINUTE_BY_MILLISEC ) { isValid = false; } break; case HOURS: HourlyRecurrenceEditor hEd = recurrenceEditor.getHourlyEditor(); String hours = hEd.getValue(); if ( !StringUtils.isPositiveInteger( hours ) || ( Integer.parseInt( hours ) <= 0 ) || Integer.parseInt( hours ) > TimeUtil.MAX_HOUR_BY_MILLISEC ) { isValid = false; } break; case DAILY: DailyRecurrenceEditor dEd = recurrenceEditor.getDailyEditor(); if ( dEd.isEveryNDays() ) { String days = dEd.getRepeatValue(); if ( !StringUtils.isPositiveInteger( days ) || ( Integer.parseInt( days ) <= 0 ) ) { isValid = false; } } break; case WEEKLY: WeeklyRecurrenceEditor wEd = recurrenceEditor.getWeeklyEditor(); if ( wEd.getNumCheckedDays() < 1 ) { isValid = false; } break; case MONTHLY: MonthlyRecurrenceEditor monthlyEd = recurrenceEditor.getMonthlyEditor(); if ( monthlyEd.isDayNOfMonth() ) { String dayNOfMonth = monthlyEd.getDayOfMonth(); if ( !StringUtils.isPositiveInteger( dayNOfMonth ) || !TimeUtil.isDayOfMonth( Integer.parseInt( dayNOfMonth ) ) ) { isValid = false; } } break; case YEARLY: YearlyRecurrenceEditor yearlyEd = recurrenceEditor.getYearlyEditor(); if ( yearlyEd.isEveryMonthOnNthDay() ) { String dayNOfMonth = yearlyEd.getDayOfMonth(); if ( !StringUtils.isPositiveInteger( dayNOfMonth ) || !TimeUtil.isDayOfMonth( Integer.parseInt( dayNOfMonth ) ) ) { isValid = false; } } break; default: } isValid &= dateRangeEditorValidator.isValid(); return isValid; } public void clear() { recurrenceEditor.getSecondlyEditor().setValueError( null ); recurrenceEditor.getMinutelyEditor().setValueError( null ); recurrenceEditor.getHourlyEditor().setValueError( null ); recurrenceEditor.getDailyEditor().setRepeatError( null ); recurrenceEditor.getWeeklyEditor().setEveryDayOnError( null ); recurrenceEditor.getMonthlyEditor().setDayNOfMonthError( null ); recurrenceEditor.getYearlyEditor().setDayOfMonthError( null ); dateRangeEditorValidator.clear(); } }