diff options
Diffstat (limited to 'lib/Travelynx')
| -rwxr-xr-x | lib/Travelynx/Model/Journeys.pm | 17 | ||||
| -rw-r--r-- | lib/Travelynx/Model/Stations.pm | 20 | 
2 files changed, 22 insertions, 15 deletions
| diff --git a/lib/Travelynx/Model/Journeys.pm b/lib/Travelynx/Model/Journeys.pm index d9e17f0..2bbc0bc 100755 --- a/lib/Travelynx/Model/Journeys.pm +++ b/lib/Travelynx/Model/Journeys.pm @@ -34,19 +34,6 @@ sub epoch_to_dt {  	);  } -sub grep_unknown_stations { -	my ( $self, @stations ) = @_; - -	my @unknown_stations; -	for my $station (@stations) { -		my $station_info = $self->{stations}->get_by_name($station); -		if ( not $station_info ) { -			push( @unknown_stations, $station ); -		} -	} -	return @unknown_stations; -} -  sub new {  	my ( $class, %opt ) = @_; @@ -917,8 +904,8 @@ sub sanity_check {  	}  	if ( $journey->{edited} & 0x0010 and not $lax ) {  		my @unknown_stations -		  = $self->grep_unknown_stations( map { $_->[0] } -			  @{ $journey->{route} } ); +		  = $self->{stations} +		  ->grep_unknown( map { $_->[0] } @{ $journey->{route} } );  		if (@unknown_stations) {  			return 'Unbekannte Station(en): ' . join( ', ', @unknown_stations );  		} diff --git a/lib/Travelynx/Model/Stations.pm b/lib/Travelynx/Model/Stations.pm index 6c898b1..62504d3 100644 --- a/lib/Travelynx/Model/Stations.pm +++ b/lib/Travelynx/Model/Stations.pm @@ -62,6 +62,16 @@ sub get_by_name {  }  # Slow +sub get_by_names { +	my ( $self, @names ) = @_; + +	my @ret +	  = $self->{pg}->db->select( 'stations', '*', { name => { '=', \@names } } ) +	  ->hashes->each; +	return @ret; +} + +# Slow  sub get_by_ds100 {  	my ( $self, $ds100, %opt ) = @_; @@ -85,4 +95,14 @@ sub search {  	  // $self->get_by_name( $identifier, %opt );  } +# Slow +sub grep_unknown { +	my ( $self, @stations ) = @_; + +	my %station = map { $_->{name} => 1 } $self->get_by_names(@stations); +	my @unknown_stations = grep { not $station{$_} } @stations; + +	return @unknown_stations; +} +  1; | 
