/*   -*- coding: utf-8 -*-  */
/***********************************************************************
 
   Module   : Getty
   Commande : GettyExplorShell
   Fichier  : GettyExplorShell.c
   Auteur   : DUCLOY
   Date     : 2013
 
************************************************************************/

#include <stdio.h>     /* for printf */
#include <stdlib.h>    /* for exit */
#include "Explor.h"

extern char *optarg;
extern int   optind;
int getopt();

SxmlNode *ExplorStepNode;
SxmlNode *streamListSteps;
 
void generBhaShellCorpusBiblio()
{
  char *bhaImportFile;
  printf("<?dilib file=\"%s/bin/%sCorpusBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("#   \n");
  printf ("# This shell is generated by GettyBhaExplorDataShells command  \n");
  printf ("#   \n");
  bhaImportFile=ExplorGetFromDictK4("Area", ExplorStreamCode, "Corpus", "Getty:bhaUsmarcImportFile");
  printf ("cat %s/Import/%s   \\\n", ExplorAreaDir, bhaImportFile);
  printf ("   | Iso2709SplitFile   \\\n");
  printf ("   | Iso2709ToSxml -u   \\\n");
  printf ("   | MarcXmlFromIso2709   \\\n");
  printf ("   | UsMarcToTei -e   \\\n");
  printf ("   | HfdBuild -h %s/Data/%s/Corpus/biblio\n\n",ExplorAreaDir, ExplorStreamCode);

  printf (" echo \"==== \" %s, step Corpus, biblio done\n", ExplorStreamCode);
  printf (" HfdCat %s/Data/%s/Corpus/biblio.hfd | wc \n", ExplorAreaDir, ExplorStreamCode);

}

void generBhaShellCurationBiblio()
{
  SxmlNode *previousStep;
  char *codePrevious;
  printf("<?dilib file=\"%s/bin/%sCurationBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("#   \n");
  printf ("# This shell is generated by GettyBhaExplorDataShells command  \n");
  printf ("#   \n");
  previousStep=SxmlPreviousSibling(ExplorStepNode);
  codePrevious=SxmlLeafText(previousStep);
  printf (" HfdCat %s/Data/%s/%s/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode, codePrevious);
  printf ("   | SgmlFast -c 1  \\\n");
  printf ("   | TeiPutRefToIdno -t wicri:Area/%s/Curation  \\\n", ExplorStreamCode );
  printf ("   | HfdBuild -h %s/Data/%s/Curation/biblio\n\n",ExplorAreaDir, ExplorStreamCode);

  printf (" echo \"==== \" %s, step Curation, biblio done\n", ExplorStreamCode);
  printf (" HfdCat %s/Data/%s/Curation/biblio.hfd | wc \n", ExplorAreaDir, ExplorStreamCode);
}

void generBhaShellAnalysisBiblio()
{
  SxmlNode *previousStep;
  char *codePrevious;
  printf("<?dilib file=\"%s/bin/%sAnalysisBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("#   \n");
  printf ("# This shell is generated by GettyBhaExplorDataShells command  \n");
  printf ("#   \n");
  previousStep=SxmlPreviousSibling(ExplorStepNode);
  codePrevious=SxmlLeafText(previousStep);
  printf (" HfdCat %s/Data/%s/%s/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode, codePrevious);
  printf ("   | SgmlFast -c 1  \\\n");
  printf ("   | TeiPutRefToIdno -t wicri:Area/%s/Analysis  \\\n", ExplorStreamCode );
  printf ("   | HfdBuild -h %s/Data/%s/Curation/biblio\n\n",ExplorAreaDir, ExplorStreamCode);

  printf (" echo \"==== \" %s, step Analysis, biblio done\n", ExplorStreamCode);
  printf (" HfdCat %s/Data/%s/Analysis/biblio.hfd | wc \n", ExplorAreaDir, ExplorStreamCode);
}


int main (int argc, char **argv) {
  int cOption;

  char *pathParamFile;

  pathParamFile=NULL;
  
   while((cOption=getopt(argc,argv,"s:t:"))!=EOF)
     {switch (cOption)
	 {
	 case 's':
	   ExplorStreamCode=optarg;
	   break;
	 case 't':
	   pathParamFile=optarg;
	   break;
	 }
     }

   ExplorParamInit(pathParamFile);
   streamListSteps=SxmlFromString(ExplorGetFromDictK3("Area", ExplorStreamCode, "listSteps"));
   ExplorGenerShellCreateData( ExplorStreamCode, streamListSteps);

   SxmlReset(streamListSteps);
   while ((ExplorStepNode=SxmlNextNode(streamListSteps)))
    {
      char *stepCode;
      stepCode=SxmlLeafText(ExplorStepNode);
      if(strcmp(stepCode, "Corpus")==0)
	{
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  generBhaShellCorpusBiblio();
	  continue;
	}
      
      if(strcmp(stepCode, "Curation")==0)
	{
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  generBhaShellCurationBiblio();
	  continue;
	}

      if(strcmp(stepCode, "Analysis")==0)
	{
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  generBhaShellAnalysisBiblio();
	  continue;
	}
    }
   ExplorGenerAllShellsIndex(ExplorStreamCode);
  exit (EXIT_SUCCESS);
}

