#!/usr/bin/perl -w

use strict;
use Getopt::Long;
use DBI;
use DBD::Oracle;
use aims2server::conf;
use aims2server::db;
my($key, $value, %code);
my $verbose = 0;

##############################################
my %opts = (
##############################################
   'key=s'		=> \$key,
   'value=s'		=> \$value,
   'verbose'		=> \$verbose
);
my $options = GetOptions(%opts);

##############################################
sub dbconnect
##############################################
{
   my $dbh = aims2db::connect;
   unless($dbh){
      die "Error: Cannot establish database connection. Exiting...\n";
   }
   $dbh;
}

##############################################
$code{'create'} = sub()
##############################################
{
   unless($key){
      die "Error: Key required.\n";
   }

   unless($value){
      die "Error: Value required.\n";
   }

   my $dbh = dbconnect;

   my $conf = aims2conf->new($dbh);
   $conf->create($key, $value);

   print "Key $key created with value $value.\n";

};

##############################################
$code{'remove'} = sub()
##############################################
{
   unless($key){
      die "Error: Key required to remove value.\n";
   }

   my $dbh = dbconnect;

   my $conf = aims2conf->new($dbh);
   $conf->remove($key);

   print "$key removed.\n";

};

##############################################
$code{'update'} = sub()
##############################################
{
   unless($key){
      die "Error: Key required.\n";
   }

   unless($value){
      die "Error: Value required.\n";
   }

   my $dbh = dbconnect;

   my $conf = aims2conf->new($dbh);
   $conf->update($key, $value);

   print "Key $key set to $value\n";

};

##############################################
$code{'show'} = sub()
##############################################
{
   unless($key){
      die "Error: Cannot query without key.\n";
   }

   my $dbh = dbconnect;

   my $conf = aims2conf->new($dbh);
   print "Value of $key is ".$conf->get_value($key)."\n";

};

##############################################
$code{'get'} = sub()
##############################################
{
   my $dbh = dbconnect;
   my $conf = aims2conf->new($dbh);
   my %conf = $conf->get;
   while(my ($k, $v) = each(%conf)){
      print "$k => $v\n";
   }
};

##############################################
sub init
##############################################
{

   if(!@ARGV){ 
      print "Usage: $0 get|create|remove|update [--key|--value]\n";
      exit 1;
   } 

   my $cmd = shift @ARGV;
   unless($cmd){
      exit 0;
   }

   $key =~ tr/[a-z]/[A-Z]/ if $key;

   if($code{$cmd}) {
         $code{$cmd}->(); # Go!
   } else {
        exit 1;
   }
}

init;
