#!/usr/bin/env perl

use strict;
use warnings;


BEGIN {
    die "GSDLHOME not set\n" unless defined $ENV{'GSDLHOME'};
    die "GSDLOS not set\n" unless defined $ENV{'GSDLOS'};
    unshift (@INC, "$ENV{'GSDLHOME'}/perllib/cpan");

    if (defined $ENV{'GSDLEXTS'}) {
	my @extensions = split(/:/,$ENV{'GSDLEXTS'});
	foreach my $e (@extensions) {
	    my $ext_prefix = "$ENV{'GSDLHOME'}/ext/$e";

	    unshift (@INC, "$ext_prefix/perllib/cpan");
	}
    }
    if (defined $ENV{'GSDL3EXTS'}) {
	my @extensions = split(/:/,$ENV{'GSDL3EXTS'});
	foreach my $e (@extensions) {
	    my $ext_prefix = "$ENV{'GSDL3SRCHOME'}/ext/$e";

	    unshift (@INC, "$ext_prefix/perllib/cpan");
	}
    }
}

use Text::CSV qw( csv );
use JSON;

if (scalar(@ARGV) != 2) {
    print STDERR "Error: incorrect command-line arguments\n";
    print STDERR "Usage: $0 input-csv-file output-json-file\n";
    exit(1);
}

my $input_csv_filename   = $ARGV[0];
my $output_json_filename = $ARGV[1];

my $array_of_hash = csv (in => $input_csv_filename, headers => "auto");   

my $arousal_label = "arousal_sample_26500ms";
my $valence_label = "valence_sample_26500ms";


my $arousal_val_array = [];
my $valence_val_array = [];

foreach my $row_hashmap (@$array_of_hash) {
    my $arousal_val = $row_hashmap->{$arousal_label};
    my $valence_val = $row_hashmap->{$valence_label};

    push(@$arousal_val_array,$arousal_val);
    push(@$valence_val_array,$valence_val);
}

my $av_hashmap = { 
    "arousal" => $arousal_val_array,
    "valence" => $valence_val_array
};
		       


my $av_hashmap_stringify = encode_json($av_hashmap);

open my $fh, ">", $output_json_filename || die "$!";
print $fh $av_hashmap_stringify;
close $fh;
