#!/bin/bash

# Changing directory
echo "${0%/*}"
cd "${0%/*}"

WRITE=0
OVERWRITE=0
INSERT=0
PROCESS=0

for i in "$@"
do
case $i in
    (-w|--write)
     WRITE=1
     echo "WRITE option set"
     ;;
    (-o|--overwrite)
     OVERWRITE=1
     echo "OVERWRITE option set"
     ;;
    (-i|--insert)
     INSERT=1
     echo "Data will be inserted"
     ;;
    (-p|--process)
     PROCESS=1
     echo "Data will be processed"
     ;;
    (*)
     # unknown option
     ;;
esac
done

# Import batches into database
#
ts=$(date "+%Y-%m-%dT%H:%M:%S%z")
source=$(uname -n)

for var in "$@"
do
if [[ $var =~ [A-Za-z0-9_]+.xml$ ]] 
  then
    t1=$(date +%s.%N)
    if [ $INSERT -eq 1 ]
      then
        echo "Importing task $var..."
        uuid=$(xmllint --xpath 'string(/machines/machine[1]/@uuid)' $var)
        
        docrel=$(xmllint --xpath 'string(/machines/machine[1]/@document)' $var)
        docabs="$(dirname $var)/$docrel"
        if [[ -f $docabs && -e $docabs ]]
        then
          echo "Document found $docabs..."
          format="${docabs##*.}"
          cat $docabs | xxd -pu | tr -d \\n | tr '[:lower:]' '[:upper:]' > doc.hex
          echo "
          INSERT INTO med (med_id, med_des, med_format, med_med, med_date, med_visa)
          VALUES ('$docrel', '$uuid', '$format', x'$(cat doc.hex)', NOW(), 'SYS')
          ON DUPLICATE KEY UPDATE
            med_des=VALUES(med_des),
            med_format=VALUES(med_format),
            med_med=VALUES(med_med),
            med_date=VALUES(med_date),
            med_visa=VALUES(med_visa);
          " > doc.sql
          mysql -u F5VksfQsYW -pmWaq9FiGC6 -h 192.168.10.10 dfnesa < doc.sql
          sql="
          SELECT med_id, med_des, LENGTH(med_med) med_size, med_date, med_visa
          FROM med WHERE med_id='$docrel'
          "
          mysql -u F5VksfQsYW -pmWaq9FiGC6 -h 192.168.10.10 dfnesa --raw --execute="$sql"
          echo $?
        fi

        # Hexadecimal representation of the batch
        cat $var | xxd -pu | tr -d \\n | tr '[:lower:]' '[:upper:]' > batch.hex
        sha=$(shasum -a 1 $var | awk '{ print $1 }' | tr '[:lower:]' '[:upper:]')
        sql="
        INSERT INTO pickups (uuid, created_on, batch_hash, source, raw_data) 
        VALUES ('$uuid', NOW(), '$sha', '$(uname -n)', x'$(cat batch.hex)')
        ON DUPLICATE KEY UPDATE 
          uuid=VALUES(uuid),
          updated_on=NOW(),
          version=version+1,
          batch_hash=VALUES(batch_hash), 
          raw_data=VALUES(raw_data);
        CALL import_pickups('$sha', $OVERWRITE, $WRITE, $PROCESS)\G
        "
        mysql -u F5VksfQsYW -pmWaq9FiGC6 -h 192.168.10.10 dfnesa --raw --execute="$sql"
        echo $?
    fi
    t2=$(date +%s.%N)
    printf "done (%1.5f s)." $(echo "$t2 - $t1" | bc)
fi
done

# Cleanup
rm -f batch.hex
rm -f doc.hex doc.sql
