#!/bin/bash
#
# Holt die Briefdateien, die in PDFs umgewandelt wurden, in Arbeitsverzeichnis.
# Holt die Maildateien der taeglichen sias-Mails.
# Wandelt die PDFs in einzelne htmls um
# Benoetigt pdftohtml von http://pdftohtml.sourceforge.net/
# 
# Das Ergebnis soll durchsuchbar im Webserver darstellbar sein.
# Dazu gibt es ein Perlscript, welches den Sub-Baum durchsucht
#
# michael.schaarwaechter@ub.uni-dortmund.de, 9/07
#

# Quellverzeichnis, in dem pro Tag ein Verzeichnis fuer Briefe existiert
# Syntax der Unterverzeichnisse dort: yyyy.mm.dd
QUELLE=/var/spool/sisis/avserver/batch/alist

# Zielverzeichnis, in dem die konvertierten Dateien landen. 
# Hier werden analoge Unterverzeichnisse angelegt
ZIEL=/var/spool/sisis/avserver/batch/alist/briefe4apache

# Anzahl der neuesten Verzeichnisse, die aufgehoben werden sollen
KEEPDAYS=21

# Wo ist pdftohtml?
PDFTOHTML="/usr/local/bin/pdftohtml"

# Los gehts ....

# Kopieren der Dateien, wenn Verzeichnisse noch nicht da
# Verzeichnisse, die schon existieren, werden nicht angefasst
for PFAD in `ls -d $QUELLE/????.??.??|tail -$KEEPDAYS` ; do
   DIR=`basename $PFAD`
   if [ ! -d $ZIEL/$DIR ]; then
      echo Kopiere neue Dateien nach $ZIEL/$DIR
      mkdir $ZIEL/$DIR
      cd $ZIEL/$DIR
      cp $QUELLE/$DIR/BRF.EXT.*.pdf $ZIEL/$DIR
      cp $QUELLE/$DIR/BRF.INT.*.pdf $ZIEL/$DIR
      cp $QUELLE/$DIR/BRF.MTA.*     $ZIEL/$DIR
   fi
done

# Schauen, ob alter Kram geloescht werden muss
ANZDIR=`ls -d $ZIEL/????.??.?? | wc -l`
TODELETE=`expr $ANZDIR - $KEEPDAYS`
if [ $TODELETE -gt 0 ]; then
   for DEL in `ls -d $ZIEL/????.??.??|head -$TODELETE`; do
      echo Loesche altes $DEL
      rm  $DEL/*
      rmdir $DEL
   done
fi

# Konvertieren der PDFs wo es noch noetig ist (d.h. wo noch keine passende .html vorh. ist)
for DIR in `ls -d $ZIEL/????.??.??`; do
   cd $DIR
   for BRF in `ls BRF.*.pdf`; do
      HTMLDAT=`echo $BRF|tr .pdf .htm`l
      if [ ! -e $HTMLDAT ]; then
         echo Konvertiere $DIR/$BRF
         $PDFTOHTML -q -c $BRF
      fi
   done
done

# Konvertieren der E-Mails in einzelne Dateien wo es noch noetig ist (d.h. wo noch keine BRF.MTA.??.??.1.txt liegt)
for DIR in `ls -d $ZIEL/????.??.??`; do
   cd $DIR
   MAILDATEI=`ls BRF.MTA.??.??` || MAILDATEI="LEER"
   if [ -e $MAILDATEI ]; then
      if [ ! -e $MAILDATEI.1.txt ]; then
         echo Konvertiere $DIR/$MAILDATEI
         # Jetzt muessen wir ein bisschen perl bemuehen. Andere Loesungen willkommen, wenn eleganter!
          perl -e  '
             ($f)=@ARGV;
             exit if (not -e $f);
             undef $/;open F,"$f";$c=<F>;close F;
             $counter=0;
             $sep=("-"x79)."\n";
             while ($c=~/(.*?\n)$sep/sg) {
                $t=$1;$t=~s/^\n//g;
                $counter++;
                open O,">$f.$counter.txt";print O $t;close O;
             }
          ' $MAILDATEI 
      fi
   fi
done


