/*   -*- coding: utf-8 -*-  */
/***********************************************************************
 
   Module   : Inist
   Commande : InistExplorShell
   Fichier  : InistExplorShell.c
   Auteur   : DUCLOY
   Date     : 2012
 
************************************************************************/

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

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

char *streamSubType;

SxmlNode *ExplorStepNode;

SxmlNode *streamListSteps;
  char *ExplorAreaDir;
  char *inistStd;
  char *inistServer;
  char *corpusCode;
  char *pubmed;

void generInistShellCreateData()
{
  SxmlNode *stepNode;
  printf("<?dilib file=\"%s/bin/%sCreateData.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("\n");
  printf ("echo \"---- Executing sh %s/bin/%sCreateData.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  SxmlReset(streamListSteps);
  while ((stepNode=SxmlNextNode(streamListSteps)))
    {
      char *stepCode;
      stepCode=SxmlLeafText(stepNode);
      printf("sh %s/bin/%sCreate%s.sh \n", ExplorAreaDir, ExplorStreamCode, stepCode );
    }
}

void generInistShellCreateCorpus()
{
  SxmlNode *corpusListIndexes;
  SxmlNode *indexNode;

  printf("<?dilib file=\"%s/bin/%sCreateCorpus.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("\n");
  printf ("echo \"---- Executing sh %s/bin/%sCreateCorpus.sh\" \n", ExplorAreaDir, ExplorStreamCode );

  printf("sh %s/bin/%sCorpusBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );

  if((corpusListIndexes=SxmlFromString(ExplorGetFromDictK4("Area", ExplorStreamCode, "Corpus", "listIndexes"))))
    {
      SxmlReset (corpusListIndexes);
      while ((indexNode=SxmlNextNode(corpusListIndexes)))
	{
	  char *index;
	  char *indexCode;
	  index=SxmlLeafText(indexNode);
	  printf("sh %s/bin/%sCorpusIndex%s.sh\n", ExplorAreaDir, ExplorStreamCode, index);
	}
    }
}

void generInistShellCreateCuration()
{
  SxmlNode *curationListIndexes;
  SxmlNode *indexNode;

  printf("<?dilib file=\"%s/bin/%sCreateCuration.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("\n");
  printf ("echo \"---- Executing sh %s/bin/%sCreateCuration.sh\" \n", ExplorAreaDir, ExplorStreamCode );

  printf("sh %s/bin/%sCurationBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  if((curationListIndexes=SxmlFromString(ExplorGetFromDictK4("Area", ExplorStreamCode, "Curation", "listIndexes"))))
    {
      SxmlReset (curationListIndexes);
      while ((indexNode=SxmlNextNode(curationListIndexes)))
	{
	  char *index;
	  index=SxmlLeafText(indexNode);
	  printf("sh %s/bin/%sCurationIndex%s.sh\n", ExplorAreaDir, ExplorStreamCode, index);
	}
    }
  ExplorGenerMakeStep(ExplorStreamCode, "Curation") ;
}

void generInistShellCreateExploration()
{
  SxmlNode *explorerListIndexes;
  SxmlNode *indexNode;

  printf("<?dilib file=\"%s/bin/%sCreateExploration.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("\n");
  printf ("echo \"---- Executing sh %s/bin/%sCreateExploration.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  
  printf("sh %s/bin/%sExplorationBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );

  if((explorerListIndexes=SxmlFromString(ExplorGetFromDictK4("Area", ExplorStreamCode, "Exploration", "listIndexes"))))
    {
      SxmlReset (explorerListIndexes);
      while ((indexNode=SxmlNextNode(explorerListIndexes)))
	{
	  char *index;;
	  index=SxmlLeafText(indexNode);
	  printf("sh %s/bin/%sExplorationIndex%s.sh\n", ExplorAreaDir, ExplorStreamCode, index);
	}
    }
}

void generInistShellCorpusBiblio()
{
  printf("<?dilib file=\"%s/bin/%sCorpusBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("# This file is generated by Dilib / Inist / InistExplorDataShells \n");
  printf ("echo \"---- Executing sh %s/bin/%sCorpusBiblio.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  ExplorGenerDeleteHfd(ExplorStreamCode, "Corpus", "biblio");
  printf ("(\n");

  printf ("cat %s/Import/%s   \\\n", ExplorAreaDir, inistStd);
  printf ("   | InistIlib2Sxml  \\\n");
  printf ("   | HcsSxmlRecordPutKey  \n\n");
  printf ("cat %s/Import/%s   \\\n", ExplorAreaDir, inistServer);
  printf ("   | InistServer2Sxml  \\\n");
  /* printf ("   | SxmlRecordPutKey -b inist \n"); */
  printf ("   | HcsSxmlRecordPutKey \n"); 
  printf (") | sort \\\n");
  printf ("   | IndexBuildRec   \\\n");
  printf ("   | InistSgml2utf8   \\\n");
  printf ("   | InistPair2Tei -t %s/Input/AreaParam.data.tab -s %s   \\\n", ExplorAreaDir, ExplorStreamCode);
  printf ("   | TeiPutRefToIdno -t wicri:Area/%s/Corpus  \\\n", ExplorStreamCode );
  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);
   
  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells / generInistShellCorpusBiblio()  \n");
  printf("$(EXPLOR_AREA)/Make/%s/Corpus/biblio: \\\n ", ExplorStreamCode);
  printf("                $(EXPLOR_AREA)/Import/%s \\\n", inistServer);
  printf("                $(EXPLOR_AREA)/Import/%s \n", inistStd);
  printf("\tsh %s/bin/%sCorpusBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Corpus/biblio\n\n", ExplorAreaDir, ExplorStreamCode);

}

void generInistShellExtractionBiblio()
{
  char *strExtractionCommand;
  SxmlNode *extractionCommand;
  SxmlNode *extractionNode;
  char *extractionItem;
  char *indexPath;
  char *biblioPath;
  static Buffer *bufPath=NULL;
  
  if (!bufPath)bufPath=NewBuffer();

  printf("<?dilib file=\"%s/bin/%sExtractionBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("# This file is generated by Dilib / Inist / InistExplorDataShells \n");
  printf ("echo \"---- Executing sh %s/bin/%sExtractionBiblio.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  ExplorGenerDeleteHfd(ExplorStreamCode, "Extraction", "biblio");

  strExtractionCommand=ExplorGetFromDictK4("Area", ExplorStreamCode, "Extraction", "selectOrCommand");
  extractionCommand=SxmlFromString(strExtractionCommand);
  printf (" ( \n");
  while ((extractionNode=SxmlNextNode(extractionCommand)))
    {
      extractionItem=SxmlLeafText(extractionNode);
      if (extractionItem[0]==':')
	{
	  if (extractionItem[1]=='/')
	    {
	      char *posSlash;
	      indexPath=extractionItem+2;
	      posSlash=strrchr(indexPath, '/');
	      BufferStrncpy(bufPath, indexPath, posSlash-indexPath);
	      biblioPath=BufferString(bufPath);
	      printf ("    ( \n");
	    }
	}
      else
	{
	  printf ("     HfdIndexSelect -h %s -Sk \"%s\"  \n", indexPath, extractionItem);
	  if (!(SxmlNextSibling(extractionNode)))
	    {
	      printf ("   )  | HfdSelect -h %s/biblio \n", biblioPath);
	    }
	}
    }
  printf (" ) |sort -u  \\\n");
  printf ("   | TeiPutRefToIdno -t wicri:Area/%s/Extraction  \\\n", ExplorStreamCode );
  printf ("   | HfdBuild -h %s/Data/%s/Extraction/biblio\n\n",ExplorAreaDir, ExplorStreamCode);

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

  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells / generInistShellExplorationBiblio()  \n");
  printf("%s/Make/%s/Extraction/biblio: \n", ExplorAreaDir, ExplorStreamCode);
  printf("\tsh %s/bin/%sExtractionBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Extraction/biblio\n\n", ExplorAreaDir, ExplorStreamCode);

}

void generInistShellCurationBiblio()
{
  SxmlNode *previousStep;
  char *codePrevious;

  printf("<?dilib file=\"%s/bin/%sCurationBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("# This shell has been generated by InistExplorDataShells \n");
  printf ("echo \"---- Executing sh %s/bin/%sCurationBiblio.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  previousStep=SxmlPreviousSibling(ExplorStepNode);
  codePrevious=SxmlLeafText(previousStep);
  ExplorGenerDeleteHfd(ExplorStreamCode, "Curation", "biblio");
  printf (" HfdCat %s/Data/%s/%s/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode, codePrevious);
  printf ("   | SgmlFast -c 1  \\\n");
  ExplorCurationRecordOperations(ExplorStreamCode, "Curation");
  printf ("   | TeiPutRefToIdno -t wicri:Area/%s/%s  \\\n", ExplorStreamCode, "Curation" );
  /*  printf ("   | InistAffiliationSetCountry -t $DILIB/data/Wicri/GeoTables/Pays/IsoC3ToPays.tab   \\\n"); */
  printf ("   | InistAffiliationSetCountry   \\\n"); 
  printf ("   | TeiKeywordsFromTable -s Pascal -m $DILIB/data/Inist/FrancisPers.tab -S Wicri -T person -L fr \\\n");
  printf ("   | TeiKeywordsFromTable -s Pascal -m $DILIB/data/Inist/PascalGeo.tab -S Wicri -T geographic -L fr \\\n");
  printf ("   | TeiKeywordsFromTable -s Pascal -m $DILIB/data/Inist/PascalConceptFr.tab -S Wicri -T topic -L fr \\\n");
  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);

  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells /  generInistShellCurationBiblio() \n");
  printf("%s/Make/%s/Curation/biblio: \\\n", ExplorAreaDir, ExplorStreamCode);
  printf("                $(DILIB)/data/Wicri/GeoTables/Pays/IsoC3ToPays.tab \\\n");
  printf("                $(DILIB)/data/Inist/FrancisPers.tab \\\n");
  printf("                $(DILIB)/data/Inist/PascalGeo.tab \\\n");
  printf("                $(DILIB)/data/Inist/PascalConceptFr.tab \\\n");
  printf("                %s/Make/%s/%s.step \n", ExplorAreaDir, ExplorStreamCode, codePrevious);
  printf("\tsh %s/bin/%sCurationBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Curation/biblio\n\n", ExplorAreaDir, ExplorStreamCode);
}

void generInistShellExplorationBiblio()
{
  printf("<?dilib file=\"%s/bin/%sExplorationBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("# This shell has been generated by InistExplorDataShells / generInistShellExplorationBiblio \n");
  printf ("echo \"---- Executing sh %s/bin/%sExplorationBiblio.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  ExplorGenerDeleteHfd(ExplorStreamCode, "Exploration", "biblio");
  printf (" HfdCat %s/Data/%s/Curation/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode);
  /* printf ("   | SgmlFast -c 1  \\\n"); */
  ExplorCurationRecordOperations(ExplorStreamCode, "Exploration");
  printf ("   | InistCurationCountry   \\\n");
  ExplorExplorationCommonOperations(ExplorStreamCode, "Exploration", 1);
  printf ("   | TeiBuildAffiliationTree    \\\n");
  ExplorGenerBuildBiblio(ExplorStreamCode, "Exploration", NULL);
 
  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells /  generInistShellCurationBiblio() \n");
  printf("%s/Make/%s/Exploration/biblio: \\\n", ExplorAreaDir, ExplorStreamCode);
  printf("                %s/Make/%s/%s.step \n", ExplorAreaDir, ExplorStreamCode, "Curation");
  printf("\tsh %s/bin/%sExplorationBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Exploration/biblio\n\n", ExplorAreaDir, ExplorStreamCode);

}

void generInistShellRepositoryBiblio()
{
  printf("<?dilib file=\"%s/bin/%sRepositoryBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");

  printf (" HfdCat %s/Data/%s/Corpus/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode);
  /* printf ("   | SgmlFast -c 1  \\\n"); */
  printf ("   | SgmlSelect -g record/inist/standard/pA/fA47 -p @g1 -p @2   \\\n");
  printf ("   | sort | IndexBuildRec   \\\n");
  printf ("   | InistMergeBiblioFromIdx   \\\n");
  ExplorCurationRecordOperations(ExplorStreamCode, "Repository");
  /* printf ("   | InistAffiliationSetCountry -t $DILIB/data/Wicri/GeoTables/Pays/IsoC3ToPays.tab   \\\n"); */
  printf ("   | InistAffiliationSetCountry  \\\n");
  printf ("   | TeiKeywordsFromTable -s Pascal -m $DILIB/data/Inist/FrancisPers.tab -S Wicri -T person -L fr \\\n");
  printf ("   | TeiKeywordsFromTable -s Pascal -m $DILIB/data/Inist/PascalGeo.tab -S Wicri -T geographic -L fr \\\n");
  printf ("   | TeiKeywordsFromTable -s Pascal -m $DILIB/data/Inist/PascalConceptFr.tab -S Wicri -T concept -L fr \\\n");
  printf ("   | InistCurationCountry   \\\n");
  printf ("   | TeiCurationPers -p $DILIB/data/Wicri/pers.dict -o $DILIB/data/Wicri/org.dict  \\\n");
  printf ("   | SxmlSelect -g record/TEI/teiHeader/fileDesc/publicationStmt/date/1 -p @g1 -p @1 \\\n");
  printf ("   | sort -rn \\\n");
  printf ("   | SgmlFast -c 1  \\\n");
  printf ("   | TeiPutRefToIdno -t wicri:Area/%s/%s  \\\n", ExplorStreamCode, "Repository" );

  printf ("   | HfdBuild -h %s/Data/%s/Repository/biblio\n\n",ExplorAreaDir, ExplorStreamCode);

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

  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells /  generInistShellRepositoryBiblio() \n");
  printf("%s/Make/%s/Repository/biblio: \\\n", ExplorAreaDir, ExplorStreamCode);
  printf("                %s/Make/%s/%s.step \n", ExplorAreaDir, ExplorStreamCode, "Corpus");
  printf("\tsh %s/bin/%sRepositoryBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Repository/biblio\n\n", ExplorAreaDir, ExplorStreamCode);
}


void generInistShellCheckpointBiblio()
{
  printf("<?dilib file=\"%s/bin/%sCheckpointBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("# This shell has been generated by InistExplorDataShells / generInistShellExplorationBiblio \n");
  printf ("echo \"---- Executing sh %s/bin/%sCheckpointBiblio.sh\" \n", ExplorAreaDir, ExplorStreamCode );
  ExplorGenerDeleteHfd(ExplorStreamCode, "Checkpoint", "biblio");
  printf (" HfdCat %s/Data/%s/Curation/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode);
  printf ("   | InistCurationCountry   \\\n");

  ExplorExplorationCommonOperations(ExplorStreamCode, "Checkpoint", 1);
  printf ("   | TeiBuildAffiliationTree    \\\n");
  ExplorGenerBuildBiblio(ExplorStreamCode, "Checkpoint", NULL);
  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells /  generInistShellCheckpointBiblio() \n");
  printf("%s/Make/%s/Checkpoint/biblio: \\\n", ExplorAreaDir, ExplorStreamCode);
  printf("                %s/Make/%s/%s.step \n", ExplorAreaDir, ExplorStreamCode, "Curation");
  printf("\tsh %s/bin/%sCheckpointBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Checkpoint/biblio\n\n", ExplorAreaDir, ExplorStreamCode);
}

void generInistShellMergeBiblio()
{
  printf("<?dilib file=\"%s/bin/%sMergeBiblio.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode );
  printf ("#!/bin/sh\n");
  printf ("# This shell has been generated by InistExplorDataShells \n");
  printf ("echo \"---- Executing sh %s/bin/%sMergeBiblio.sh\" \n", ExplorAreaDir, ExplorStreamCode );

  ExplorGenerDeleteHfd(ExplorStreamCode, "Merge", "biblio");

  printf (" HfdCat %s/Data/%s/Corpus/biblio.hfd \\\n", ExplorAreaDir, ExplorStreamCode);
  printf ("   | SgmlSelect -g record/inist/standard/pA/fA47 -p @g1 -p @2   \\\n");
  printf ("   | sort | IndexBuildRec   \\\n");
  /* printf ("   | SgmlSelect -g idx/l/e/record -p @g1   \\\n"); */
  printf ("   | InistMergeBiblioFromIdx   \\\n");
  printf ("   | HfdBuild -h %s/Data/%s/Merge/biblio\n\n",ExplorAreaDir, ExplorStreamCode);

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

  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells /  generInistShellCurationBiblio() \n");
  printf("%s/Make/%s/Merge/biblio: \\\n", ExplorAreaDir, ExplorStreamCode);
  printf("                %s/Make/%s/Corpus.step \n", ExplorAreaDir, ExplorStreamCode);
  printf("\tsh %s/bin/%sMergeBiblio.sh \n", ExplorAreaDir, ExplorStreamCode );
  printf("\ttouch %s/Make/%s/Merge/biblio\n\n", ExplorAreaDir, ExplorStreamCode);
}

void generIndexAutAff(char *step)
{
  printf("<?dilib file=\"%s/bin/%s%sIndexAutAff.i.sh\" ?>\n", ExplorAreaDir, ExplorStreamCode, step );
  printf ("#!/bin/sh\n");
 printf ("#  This shell is generated by InistExplorDataShells / generIndexAutAff\n");
  ExplorGenerDeleteHfd(ExplorStreamCode, step, "AutAff.i");
  printf (" HfdCat %s/Data/%s/%s/biblio.hfd\\\n", ExplorAreaDir, ExplorStreamCode, step);
  printf ("  | SgmlSelect -s record/TEI/teiHeader/fileDesc/titleStmt/author -p @S -p @1  \\\n");
  printf ("  | SgmlSelect -s author/name@uniqKey@# -p @s1 -g author/name# -p @g1   \\\n");
  printf (" -s author/affiliation/inist:fA14 author/affiliation/wicri:noCountry -p @s2  -p @2       \\\n");
  printf ("  | sort      \\\n");
  printf ("  | SxmlGrouping | HfdBuild -h %s/Data/%s/%s/AutAff.i   \n",  ExplorAreaDir,  ExplorStreamCode, step );

  printf (" IndexBuildHid -h %s/Data/%s/%s/AutAff.i -e k   \n", ExplorAreaDir, ExplorStreamCode, step);

  printf (" HfdCat %s/Data/%s/%s/AutAff.i.hfd     \\\n", ExplorAreaDir, ExplorStreamCode, step);
  printf ("      |  SgmlSelect -g g/t# -g g/k# -p @g1 -p \"<idx><kw>@g2</kw><f>@g1</f></idx>\"     \\\n");
  printf ("      | sort -rn    \\\n");
  printf ("      | SgmlFast -c 1     \\\n");
  printf ("      | head -500 > %s/Data/%s/%s/AutAff.i.sort    \n", ExplorAreaDir, ExplorStreamCode, step);

  printf (" echo \"==== \" %s, step %s, index aut-aff done\n", ExplorStreamCode, step);
  printf (" HfdCat %s/Data/%s/%s/AutAff.i.hfd | wc \n", ExplorAreaDir, ExplorStreamCode, step);

  printf("<?dilib appendFile=\"%s/bin/area.mk\" ?>\n", ExplorAreaDir );
  printf("# This part is generated by InistExplorDataShells / generIndexAutAff \n");
  printf("%s/Make/%s/%s/AutAff.i.index:  \\\n ", ExplorAreaDir, ExplorStreamCode, step);
  printf("                %s/Make/%s/%s/biblio \n", ExplorAreaDir, ExplorStreamCode, step);
  printf("\tsh %s/bin/%s%sIndexAutAff.i.sh \n", ExplorAreaDir, ExplorStreamCode, step );
  printf("\ttouch %s/Make/%s/%s/AutAff.i.index \n\n", ExplorAreaDir, ExplorStreamCode, step);
}

void generInistAllShellsIndex()
{
  char *step;
  SxmlNode *stepNode;
  char *index;
  SxmlNode *stepListIndexes;
  SxmlNode *indexNode;

  ExplorGenerAllShellsIndex(ExplorStreamCode);
  SxmlReset (streamListSteps);
  while ((stepNode=SxmlNextNode(streamListSteps)))
    {
      step=SxmlLeafText(stepNode);
      if((stepListIndexes=SxmlFromString(ExplorGetFromDictK4("Area",ExplorStreamCode, step, "listIndexes"))))
	{
	  SxmlReset (stepListIndexes);
	  while ((indexNode=SxmlNextNode(stepListIndexes)))
	    {
	      char *indexTypeStr;
	      char *indexCode;
	      SxmlNode *indexTypeNode;
	      SxmlNode *nodeType;
	      indexCode=SxmlLeafText(indexNode);
	      indexTypeStr=ExplorGetFromDictK5 ("Area", ExplorStreamCode, step, indexCode, "indexType");
	      indexTypeNode=SxmlFromString(indexTypeStr);
	      if (strcmp(SxmlLeafText(nodeType=SxmlFirstChild(indexTypeNode)), "builtin")==0)
		{
		  if (strcmp(indexCode,"AutAff.i")==0)generIndexAutAff(step);
		}
	    }
	}
    }
}

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

  char *pathParamFile;

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

   ExplorParamInit(pathParamFile);

   streamSubType=ExplorGetFromDictK2(ExplorStreamCode,"subType");
   streamListSteps=SxmlFromString(ExplorGetFromDictK3("Area", ExplorStreamCode, "listSteps"));
   inistStd=ExplorGetFromDictK3("Area", ExplorStreamCode,    "Corpus/Inist:standardImportFile");
   inistServer=ExplorGetFromDictK3("Area", ExplorStreamCode, "Corpus/Inist:serveurImportFile");
   if (!inistServer) 
     {
       ExceptSetError("InistExplorDataShell", "UN" , "Corpus/Inist:serveurImportFile" , "undefined", NULL,2);
     }

   generInistShellCreateData();

   SxmlReset(streamListSteps);
   while ((ExplorStepNode=SxmlNextNode(streamListSteps)))
    {
      char *stepCode;
      stepCode=SxmlLeafText(ExplorStepNode);
      if(strcmp(stepCode, "Corpus")==0)
	{
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  generInistShellCorpusBiblio();
	  continue;
	}
      if(strcmp(stepCode, "Extraction")==0)
	{
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  generInistShellExtractionBiblio();
	  continue;
	}
      if(strcmp(stepCode, "Curation")==0)
	{
	  generInistShellCreateCuration();
	  generInistShellCurationBiblio();
	  continue;
	}
      if(strcmp(stepCode, "Merge")==0)
	{
	  generInistShellMergeBiblio(); 
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  continue;
	}
      if(strcmp(stepCode, "Checkpoint")==0)
	{
	  generInistShellCheckpointBiblio(); 
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  continue;
	}
      if(strcmp(stepCode, "Exploration")==0)
	{
	  generInistShellExplorationBiblio(); 
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  continue;
	}
      if(strcmp(stepCode, "Repository")==0)
	{
	  generInistShellRepositoryBiblio(); 
	  ExplorGenerShellCreateStep(ExplorStreamCode , stepCode);
	  continue;
	}
    }
   generInistAllShellsIndex();
   exit(EXIT_SUCCESS);
}
