#------------------------------------------------------------
# Copyright (C) 2010 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package MediaServe::BookPub::Processor;
use strict;
use warnings;

use File::Basename;

use lib '/app/tools/common/lib';
use Common::Assert;

use lib '/app/tools/mediaserve/lib';
use MediaServe::Server;
use MediaServe::SFTP;
use MediaServe::BookPub::Converter;
use MediaServe::BookPub::Matcher;

use lib '/app/tools/bookpub/lib';

use base 'MediaServe::ImageProcessor';

sub _assetMatcherObject { return new MediaServe::BookPub::Matcher() }
sub _converterObject    { return new MediaServe::BookPub::Converter() }
sub _dbClass            { 'MediaServe::DB::Item::BookProductImageFile' }

sub _imageDir { '/app/data/images' }

sub _writeImages {
    my $self      = shift;
    my $converter = shift;
    my $dir       = shift;

    $converter->write_original($dir);
    $converter->write_web_thumbnail($dir);
    $converter->write_web_image($dir);
}

sub _addFile {
    my $self       = shift;
    my $converter  = shift;
    my $media_file = shift;
    my $file       = shift;
    my $type       = shift;

    $media_file->addBookProductFile(
        type     => $type,
        filename => $converter->outputFilename( $file, $type )
    );
}

#sub convertImages {
#    my $self       = shift;
#    my $client_id  = Common::RSApp::GetClientID();
#    my $converter  = $self->_converterObject();
#    my $media_file = new MediaServe::MediaFile();
#
#    assert($self);
#
#    my $dir   = $self->_imageDir . "/$client_id";
#    my @files = $self->_getFiles("upload");
#
#    $self->debug("- Starting image conversion");
#
#    foreach my $file (@files) {
#        $self->debug("  + file to convert: $file");
#
#        next unless ( $self->_importAllowed() );
#
#        my $uploadFile = "$dir/upload/$file";
#
#        # Let's also skip improperly named files here.
#        unless ( $converter->read("$dir/upload/$file") && $converter->validate() && $file =~ /^\d{10,13}\.\w{3,4}$/i ) {
#            print STDERR "Failed to read input file: $dir/upload/$file\n";
#            print STDERR "   - " . $converter->{_error} . "\n";
#
#            system("mkdir -p $dir/errors");
#            system("mv $uploadFile $dir/errors/$file");
#
#            next;
#        }
#
#        # Added new file records if needed.
#        foreach my $type ( $converter->getFileTypes() ) {
#            $self->_addFile( $converter, $media_file, $file, $type );
#        }
#
#        # Convert Files and move them to the transfer directory
#        system("mkdir -p $dir/transfer");
#
#        assert( -d "$dir/transfer", "Directory doesn't exist" );
#
#        ## clear previous errors for files already processed
#        $converter->{'_error'} = undef;
#
#        $self->_writeImages( $converter, "$dir/transfer" );
#		
#		## delete source files after tranfer 
#
#        #if ( not $converter->_error ) {
#            #$self->debug("- Unlink: $uploadFile");
#            #unlink($uploadFile) if -e "$dir/transfer/$file";
#        #} else {
#            #print STDERR "- " . $converter->{_error} . "\n";
#        #}
#    }
#}

sub _getWebProductionClientIDs {
    return Common::RSDB::GetBookPubClientIDsByHost( Common::RSApp::GetRealHostname() );
}

sub _getProductionClientIDs {
    return Common::RSDB::GetAllBookPubClientIDs( Common::RSApp::GetRealHostname() );
}

sub _getLocalClientIDs {
    return Common::RSDB::GetLocalBookPubClientIDs();
}

sub _isValidClientType {
    my $self = shift;
    Common::RSDB::_isBookPubClient(shift);
}

1;
