private void markDateInvocation() {

    _updatePreviousDates = !_dateGivenInGroup;
    _dateGivenInGroup = true;
    _dateGroup.setDateInferred(false);

    if(_firstDateInvocationInGroup) {
      // if a time has been given within the current date group, 
      // we capture the current time before resetting the calendar
      if(_timeGivenInGroup) {
        int hours = _calendar.get(Calendar.HOUR_OF_DAY);
        int minutes = _calendar.get(Calendar.MINUTE);
        int seconds = _calendar.get(Calendar.SECOND);
        resetCalendar();
        _calendar.set(Calendar.HOUR_OF_DAY, hours);
        _calendar.set(Calendar.MINUTE, minutes);
        _calendar.set(Calendar.SECOND, seconds);
      }
      else {
        resetCalendar();
      }
      _firstDateInvocationInGroup = false;
    }
  }
private void markDateInvocation ( ) { _updatePreviousDates = ! _dateGivenInGroup ; _dateGivenInGroup = true ; _dateGroup . setDateInferred ( false ) ; if ( _firstDateInvocationInGroup ) { if ( _timeGivenInGroup ) { int hours = _calendar . get ( Calendar . HOUR_OF_DAY ) ; int minutes = _calendar . get ( Calendar . MINUTE ) ; int seconds = _calendar . get ( Calendar . SECOND ) ; resetCalendar ( ) ; _calendar . set ( Calendar . HOUR_OF_DAY , hours ) ; _calendar . set ( Calendar . MINUTE , minutes ) ; _calendar . set ( Calendar . SECOND , seconds ) ; } else { resetCalendar ( ) ; } _firstDateInvocationInGroup = false ; } }
ensures that the first invocation of a date seeking
rule is captured