makeFileDatabase.pl

  1. $START_DIRECTORY='/Zvon/ZvonXMLSource';
  2. $DATABASE_DIRECTORY = '/Zvon/FileCentral';
  3. $ROOT_WEB = 'C:/Zvon';
  4. $ID_PREFIX='zvon';
  5. use File::Path;
  6. use File::Basename;
  7. use Cwd;
  8. use Zvon::XML_ID;
  9. sub directory
  10. {
  11. my (@list, $item);
  12. opendir DIR,".";
  13. @list = readdir DIR;
  14. #remove . and ..
  15. shift(@list);
  16. shift(@list);
  17. foreach $item (@list)
  18. {
  19. if (-f $item) {file($item);}
  20. if (-d $item) {
  21. chdir($item);
  22. directory($item);
  23. chdir ("..");
  24. }
  25. }
  26. }
  27. sub file
  28. {
  29. if($_[0]=~/\.xml/) {
  30. if(!(open FILE, $_[0])){print "Open \n$_[0] failed";}
  31. read FILE, $xmlFile, 10000; #the id is somewhere at the start
  32. if ($xmlFile=~/$ID_PREFIX\d{17}/)
  33. {
  34. $id=$&;
  35. $idFile = XML_ID::getIDFilefromID($&);
  36. $fileDir = cwd();
  37. $fileDir =~ s/$ROOT_WEB//;
  38. $idList{$idFile}= "$idList{$idFile}$id=$fileDir/$_[0]\n";
  39. }
  40. else
  41. {
  42. print "\n File $_[0] does not have an ID";
  43. }
  44. }
  45. }
  46. chdir $START_DIRECTORY;
  47. directory();
  48. print "\n\n";
  49. while ( ($idFile, $value) = each %idList)
  50. {
  51. $idDir=dirname($idFile);
  52. if(!(-d $idDir)) {mkpath($idDir,"true");};
  53. open OUT, ">$idFile";
  54. print OUT $value;
  55. close OUT;
  56. }