package Analizo::Batch::Directories;
use strict;
use warnings;

use parent qw(Analizo::Batch Class::Accessor::Fast);
use Analizo::Batch::Job::Directories;

__PACKAGE__->mk_accessors(qw(directories));

sub new {
  my ($class, @directories) = @_;
  my $self = $class->SUPER::new;
  if (@directories < 1) {
    @directories = glob('*');
  }
  @directories = grep { -d $_ } @directories;
  $self->directories(\@directories);
  $self->{index} = 0;
  return $self;
}

sub fetch_next {
  my ($self) = @_;
  my $next_directory = $self->{directories}->[$self->{index}];
  if ($next_directory) {
    my $next_job = Analizo::Batch::Job::Directories->new($next_directory);
    $self->{index} += 1;
    return $next_job;
  }
  return undef;
}

sub count {
  my ($self) = @_;
  return scalar(@{$self->{directories}});
}

1;