sub _ProcessParam_time { my ($self, $time) = @_; $self->_AddSQL( 's.date_obs BETWEEN ? AND ?', $self->format_date( $time->{'start'} ), $self->format_date( $time->{'end'},1 ), ); return; } ... sub _ProcessParam_nickname { my ($self, $nicknames) = @_; if (!ref($nicknames)) { $nicknames = [$nicknames] } # deal with scalar values (should be an array) my %nicks = map { $_ => undef } @$nicknames; if ( %nicks ) { my %obsdirs = map { $_ => 1 } qw( FG FGSIQUV SP4D FGNG FGDG FGIV FGFOCUS FGSIV100 FGSIV200 FGSIV CL FGIQUV ); my @obs = grep { $obsdirs{$_} } @$nicknames; if ( @obs ) { $self->_AddSQL( 'obsdir IN ('.join(',',('?')x@obs).')', @obs ); delete @nicks{@obs}; } # everything else, we try to match against 'wave'. $self->_AddSQL( '('.join(' OR ', ('wave LIKE ?') x (keys %nicks)).')', map { "%$_%" } ( keys %nicks ) ); } return; } ... sub _ProcessParam_wave { my ($self, $wave) = @_; if (defined($wave->{'wavetype'})) { # return $self->_ProcessParam_wave_type( $wave->{'wavetype'} ); $self->_ProcessParam_wave_type( $wave->{'wavetype'} ); } # force the wave to Angstrom $wave = $self->_WaveConversion($wave) unless $wave->{'waveunit'} eq 'Angstrom'; if ($wave->{'waveunit'} ne 'Angstrom') { # conversion to Angstrom failed for some reason return $self->_PackageResults ( undef, [], debug => 'unknown waveunit' ); } if (defined($wave->{'wavemin'})) { $self->_AddSQL( 'l.wavemax >= ?', $wave->{'wavemin'}, ); } if (defined($wave->{'wavemax'})) { $self->_AddSQL( 'l.wavemin <= ?', $wave->{'wavemax'}, ); } return; }