/*   -*- coding: utf-8 -*-  */

/*************************************************
*
*        Module   : Inist
*        Commande : InistAffiliationSetCountry
*        Fichier  : InistAffiliationSetCountry.c
*
******************************/

#include <stdio.h>     /* for printf */
#include <stdlib.h>    /* for exit */
#include <getopt.h>
#include "SxPath.h"
#include "Buffer.h"
#include "WicriPaysFromEn.h"

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

SxPathResult *teiPathAffiliation;
SxPathResult *teiPathAffiliationOld;

SxmlNode * affiliation;
SxmlNode *fA14;
/* StrSearchTable *tablePays; */
SxmlNode *docInput;

SxmlNode *listAffiliations;


SxmlNode *inistElem;
SxmlNode *pA;
SxmlNode *fA11;

SxmlNode *author;
SxmlNode *dc;
SxmlNode *creator;

void proceedAffiliation()
{
 if ((fA14=SxmlGetFirstChildByTagName(affiliation,"inist:fA14")))
   {
     SxmlNode *s3;
     if ((s3=SxmlGetFirstChildByTagName(fA14,"s3"))) 
       {
	 char *pays;
	 char *codeC3;
	 codeC3=SxmlLeafText(s3);
	 /*	 if((pays=StrSearch(tablePays,SxmlLeafText(s3)))) */
	 if ((pays=WicriPaysFromIsoC3(codeC3)))
	   {
	     SxmlAppendChild(affiliation,SxmlLeafCreate("country", pays));
	     SxmlSetAttribute(affiliation, "wicri:level","1");
	   }
	 else if ((pays=WicriPaysFromOldIsoC3(codeC3)))
	   {
	     SxmlNode *countryNode;
	     SxmlAppendChild(affiliation,countryNode=SxmlLeafCreate("country", pays));
	     SxmlSetAttribute(countryNode, "wicri:auto", codeC3);  
	     SxmlSetAttribute(affiliation, "wicri:level","1");
	   }
	 else  SxmlAppendChild(affiliation,SxmlLeafCreate("wicri:noCountry", codeC3));
       }
     else
       {
	 SxmlNode *s1;
	 /* if ((s1=SxmlGetFirstChildByTagName(fA14,"s1"))) WicriSetPaysInAffEn(SxmlLeafText(s1), affiliation); */
	 if ((s1=SxmlGetFirstChildByTagName(fA14,"s1"))) WicriAffiliationSetPaysFromFieldEn(affiliation, SxmlLeafText(s1)); 
	 else  SxmlAppendChild(affiliation,SxmlLeafCreate("wicri:noCountry", "no s1"));
       }
   }
}

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


 teiPathAffiliationOld=SxPathSetCompile("TEI/teiHeader/fileDesc/titleStmt/author/affiliation");
 teiPathAffiliation=SxPathSetCompile("TEI/teiHeader/fileDesc/sourceDesc/biblStruct/analytic/author/affiliation");

 while ((docInput=SxmlInputNextDocumentElement()))
   {      
     if ((SxmlNodeHasName(docInput,"record")))
       {
	 SxmlNode *inistPart;
	 if ((inistPart=SxmlGetFirstChildByTagName(docInput,"inist")))
	   {
	     SxmlNode *server;
	     if ((server=SxmlGetFirstChildByTagName(inistPart,"server")))
	       {
		 SxmlFree(server);
	       }
	   }
	 if ((listAffiliations=SxPathSetResultListCreate(teiPathAffiliation, docInput)))
	   {
	     while((affiliation=SxmlNodeListNextNode(listAffiliations)))
	       {
		 proceedAffiliation();
	       }
	   }
	 if ((listAffiliations=SxPathSetResultListCreate(teiPathAffiliationOld, docInput)))
	   {
	     while((affiliation=SxmlNodeListNextNode(listAffiliations)))
	       {
		 proceedAffiliation();
	       }
	   }
       }
     SxmlPrint (SxmlInputRecord);
   }
  exit(EXIT_SUCCESS);
}
