#!/usr/bin/perl

use lib 'd:/Programs/Perl/lib';

use strict;
#use warnings;
use CSV;
use SQLDB;
use Text::CSV::Simple;
use Class::CSV;
use Text::CSV::Unicode;
use Text::CSV_XS;
use Jcode;
use Utils;

my $InputFile = "d:\\MeisiDB.csv";
my $TableName = "MeisiDB.csv";
my $OutBMPDir = "d:\\MyWebs\\NameCard";
my $UseCSVModule = 0;
my $UseDB  = 0;
my $UseCSV = 1;

if($UseCSVModule) {
#	my $csv = Text::CSV_XS->new;
	my $csv = Text::CSV::Unicode->new();# { binary => 1 } );
	local $" = '|';

my $line = "Abhijit Chatterjee,ｱﾌﾞｼﾞｯﾄ ﾁｬﾃｼﾞ ,Abhijit,ｱﾌﾞｼﾞｯﾄ,Chatterjee,ﾁｬﾃｼﾞ,アクセルリス株式会社(accelrys),,,,,,achatterjee\@accelrys.com,3-3-INishishinbashiMinat\@-ku,http://accelrys.co.jp,NishishinbashiTSBld9.11F,,,,,,,,,,,,,,,,,,,,,70105-0003,3-3578-3873,,,,,,,3-3578-3861,,,,,,,2008年02月06日,2008年02月06日,,,,,0,0,0,0,0,0,,,G:\\MyWebs\\NameCard\\名刺DB\\Image\\L100000344.img,";

#Jcode::convert(\$line, "utf8", "sjis");


	open(IN, $InputFile);
	while (1) {
		$line = <IN>;
		last if(!defined $line);
		$line .= <IN> while ($line =~ tr/"// % 2 and !eof(IN));

		$line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
		my @values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_}
					($line =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
		print "@values\n";
	}
exit;

	$csv->parse("a,b,c,ｶﾐﾔ,");#$line);
	my @fields = $csv->fields();
print "@fields\n";


$line = "Abhijit Chatterjee,ｱﾌﾞｼﾞｯﾄ ﾁｬﾃｼﾞ ,Abhijit,ｱﾌﾞｼﾞｯﾄ,Chatterjee,アクセルリス,";
print "line: $line";
	$csv->parse($line);
	@fields = $csv->fields();
print "@fields\n";

	close(IN);
exit;



	my $csv = Text::CSV::Unicode->new( { binary => 1 } );
# then use methods from Text::CSV::Base (= Text::CSV 0.01)
	my $version = Text::CSV::Unicode->version();   # get the module version
	$csv = Text::CSV::Unicode->new();   # create a new object
	my @columns;
	my $status = $csv->combine(@columns);  # combine columns into a string
	my $line = $csv->string();             # get the combined string
	$status = $csv->parse($line);       # parse a CSV string into fields
	@columns = $csv->fields();          # get the parsed fields
	$status = $csv->status();           # get the most recent status
	my $bad_argument = $csv->error_input();# get the most recent bad argument
exit;


	my $parser = Text::CSV::Simple->new;
	my @data = $parser->read_file($InputFile);
	print @$_ foreach @data;
#	for(my $i = 0 ; $i < @data ; $i++) {
#		my $pData = $data[$i];
#		print "$i: $pData->[0]\n";
#		print "$i: $pData->[0]: $pData->[6]: $pData->[65]\n";
#	}
# Map the fields to a hash?
#	$parser->field_map(qw/氏名 会社名 名刺画像/);
#	my @data = $parser->read_file($InputFile);}
}

if($UseDB) {
	my $DB = new SQLDB("CSV");
	$DB->Open("localhost", "", "", "", undef, 0, 0);
	my $ret = $DB->Search($TableName, "", "");
	unless($ret) {
		print("Error: selelct!!");
		return 0;
	}
	my $nHit = $DB->nHit();
	print "nHit: $nHit\n";
	if($nHit == 0){
		print("Error: No hit\n");
		return 0;
	}
	for(my $i = 0 ; $i < 10 ; $i++) {
		my %Hit = $DB->GetNextHit();
		last unless(defined %Hit);
		my $Name = $Hit{'氏名'};
		print "Name: $Name\n";
	}
}

if($UseCSV) {
	my $csv = new CSV;
	if($csv->Read($InputFile, 0)) {
		print("  Read [$InputFile]\n");
	}
	else {
		print("  Error!!: Can not read [$InputFile]\n");
		return -1;
	}
	my $pLabelArray = $csv->LabelArray();
	print "la: $pLabelArray\n";
	my $pDataArray  = $csv->DataArray();
	my $nDataRow    = @$pDataArray;
	my $pData0      = $pDataArray->[0];
	my $nData       = @$pData0;
	print "nDataRow: $nDataRow\n";
	print "nData   : $nData\n";
	for(my $i = 0 ; $i < $nData ; $i++) {
		my $pHash = $csv->HashByIndex($i);
		my $Name    = $pHash->{'氏名'};
		my $Company = $pHash->{'会社名'};
		my $Image   = $pHash->{'名刺画像'};
		print "$i: $Name, $Company, $Image\n";
#		$Name =~ s/\s//g;
#		$Name =~ s/　//g;
		my $OutFileName;
#		$Name =~ s/\\/\\\\/g;
#		$Company =~ s/\\/\\\\/g;
		for(my $i = 1 ; ; $i++) {
			$OutFileName = Deps::MakePath($OutBMPDir, "${Name}_$Company$i.jpg", 0);
			last if(!-e $OutFileName);
		}
#		print "  => $OutFileName\n";
		my $cmd = "convert \"$Image\" \"jpeg:$OutBMPDir\\a.jpg\"";
		print "  => $cmd\n";
		system($cmd);
		rename("$OutBMPDir\\a.jpg", $OutFileName);
	}
}

exit;