26. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/25/2019 8:58:01 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

26.1 Files compared

# Location File Last Modified
1 C:\AraxisMergeCompare\Pri_un\IMAG_Source\VISA\Java\FederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource FederationDataSourceProvider.java Mon Mar 18 20:39:06 2019 UTC
2 C:\AraxisMergeCompare\Pri_re\IMAG_Source\VISA\Java\FederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource FederationDataSourceProvider.java Tue Mar 19 12:03:36 2019 UTC

26.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 3 1632
Changed 2 4
Inserted 0 0
Removed 0 0

26.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

26.4 Active regular expressions

No regular expressions were active.

26.5 Comparison detail

  1   /**
  2    * 
  3     Package:  MAG - Vis tA Imaging
  4     WARNING:  Per VHA D irective 2 004-038, t his routin e should n ot be modi fied.
  5     Date Cre ated: Mar  3, 2008
  6     Site Nam e:  Washin gton OI Fi eld Office , Silver S pring, MD
  7       Developer:     DN S      WERFEJ
  8     Descript ion: 
  9  
  10           ;;  +-------- ---------- ---------- ---------- ---------- ---------- ---------- +
  11           ;;  Property  of the US  Government .
  12           ;;  No permis sion to co py or redi stribute t his softwa re is give n.
  13           ;;  Use of un released v ersions of  this soft ware requi res the us er
  14           ;;   to execu te a writt en test ag reement wi th the Vis tA Imaging
  15           ;;   Developm ent Office  of the De partment o f Veterans  Affairs,
  16           ;;   telephon e (301) 73 4-0100.
  17           ;;
  18           ;;  The Food  and Drug A dministrat ion classi fies this  software a s
  19           ;;  a Class I I medical  device.  A s such, it  may not b e changed
  20           ;;  in any wa y.  Modifi cations to  this soft ware may r esult in a n
  21           ;;  adulterat ed medical  device un der 21CFR8 20, the us e of which
  22           ;;  is consid ered to be  a violati on of US F ederal Sta tutes.
  23           ;;  +-------- ---------- ---------- ---------- ---------- ---------- ---------- +
  24  
  25    */
  26   package go v.va.med.i maging.fed erationdat asource;
  27  
  28   import gov .va.med.im aging.data source.Doc umentDataS ourceSpi;
  29   import gov .va.med.im aging.data source.Doc umentSetDa taSourceSp i;
  30   import gov .va.med.im aging.data source.Ext ernalPacka geDataSour ceSpi;
  31   import gov .va.med.im aging.data source.Ext ernalSyste mOperation sDataSourc eSpi;
  32   import gov .va.med.im aging.data source.Ima geAccessLo ggingSpi;
  33   import gov .va.med.im aging.data source.Ima geAnnotati onDataSour ceSpi;
  34   import gov .va.med.im aging.data source.Ima geDataSour ceSpi;
  35   import gov .va.med.im aging.data source.Pas sthroughDa taSourceSp i;
  36   import gov .va.med.im aging.data source.Pat ientArtifa ctDataSour ceSpi;
  37   import gov .va.med.im aging.data source.Pat ientDataSo urceSpi;
  38   import gov .va.med.im aging.data source.Pro vider;
  39   import gov .va.med.im aging.data source.Pro viderServi ce;
  40   import gov .va.med.im aging.data source.Stu dyGraphDat aSourceSpi ;
  41   import gov .va.med.im aging.data source.Use rDataSourc eSpi;
  42   import gov .va.med.im aging.data source.Vis taRadDataS ourceSpi;
  43   import gov .va.med.im aging.data source.Vis taRadImage DataSource Spi;
  44   import gov .va.med.im aging.data source.Wor kListDataS ourceSpi;
  45   import gov .va.med.im aging.fede ration.pro xy.Federat ionProxyUt ilities;
  46   import gov .va.med.im aging.fede rationdata source.con figuration .Federatio nConfigura tion;
  47   import gov .va.med.im aging.fede rationdata source.v5. Federation DocumentDa taSourceSe rviceV5;
  48   import gov .va.med.im aging.fede rationdata source.v5. Federation DocumentSe tDataSourc eServiceV5 ;
  49   import gov .va.med.im aging.fede rationdata source.v5. Federation ExternalPa ckageDataS ourceServi ceV5;
  50   import gov .va.med.im aging.fede rationdata source.v5. Federation ExternalSy stemOperat ionDataSou rceService V5;
  51   import gov .va.med.im aging.fede rationdata source.v5. Federation ImageAcces sLoggingDa taSourceSe rviceV5;
  52   import gov .va.med.im aging.fede rationdata source.v5. Federation ImageAnnot ationDataS ourceServi ceV5;
  53   import gov .va.med.im aging.fede rationdata source.v5. Federation ImageDataS ourceServi ceV5;
  54   import gov .va.med.im aging.fede rationdata source.v5. Federation Passthroug hDataSourc eServiceV5 ;
  55   import gov .va.med.im aging.fede rationdata source.v5. Federation PatientArt ifactDataS ourceServi ceV5;
  56   import gov .va.med.im aging.fede rationdata source.v5. Federation PatientDat aSourceSer viceV5;
  57   import gov .va.med.im aging.fede rationdata source.v5. Federation StudyGraph DataSource ServiceV5;
  58   import gov .va.med.im aging.fede rationdata source.v5. Federation UserDataSo urceServic eV5;
  59   import gov .va.med.im aging.fede rationdata source.v5. Federation VistaRadDa taSourceSe rviceV5;
  60   import gov .va.med.im aging.fede rationdata source.v5. Federation VistaRadIm ageDataSou rceService V5;
  61   import gov .va.med.im aging.fede rationdata source.v6. Federation ExternalPa ckageDataS ourceServi ceV6;
  62   import gov .va.med.im aging.fede rationdata source.v6. Federation PatientDat aSourceSer viceV6;
  63   import gov .va.med.im aging.fede rationdata source.v6. Federation UserDataSo urceServic eV6;
  64   import gov .va.med.im aging.fede rationdata source.v7. Federation ImageAcces sLoggingDa taSourceSe rviceV7;
  65   import gov .va.med.im aging.fede rationdata source.v8. Federation DocumentDa taSourceSe rviceV8;
  66   import gov .va.med.im aging.fede rationdata source.v8. Federation DocumentSe tDataSourc eServiceV8 ;
  67   import gov .va.med.im aging.fede rationdata source.v8. Federation ExternalPa ckageDataS ourceServi ceV8;
  68   import gov .va.med.im aging.fede rationdata source.v8. Federation ExternalSy stemOperat ionDataSou rceService V8;
  69   import gov .va.med.im aging.fede rationdata source.v8. Federation ImageAcces sLoggingDa taSourceSe rviceV8;
  70   import gov .va.med.im aging.fede rationdata source.v8. Federation ImageAnnot ationDataS ourceServi ceV8;
  71   import gov .va.med.im aging.fede rationdata source.v8. Federation ImageDataS ourceServi ceV8;
  72   import gov .va.med.im aging.fede rationdata source.v8. Federation Passthroug hDataSourc eServiceV8 ;
  73   import gov .va.med.im aging.fede rationdata source.v8. Federation PatientArt ifactDataS ourceServi ceV8;
  74   import gov .va.med.im aging.fede rationdata source.v8. Federation PatientDat aSourceSer viceV8;
  75   import gov .va.med.im aging.fede rationdata source.v8. Federation StudyGraph DataSource ServiceV8;
  76   import gov .va.med.im aging.fede rationdata source.v8. Federation UserDataSo urceServic eV8;
  77   import gov .va.med.im aging.fede rationdata source.v8. Federation VistaRadDa taSourceSe rviceV8;
  78   import gov .va.med.im aging.fede rationdata source.v8. Federation VistaRadIm ageDataSou rceService V8;
  79   import gov .va.med.im aging.fede rationdata source.v9. Federation ExternalPa ckageDataS ourceServi ceV9;
  80  
  81   import jav a.util.Col lections;
  82   import jav a.util.Sor tedSet;
  83   import jav a.util.Tre eSet;
  84  
  85   import org .apache.lo gging.log4 j.LogManag er;
  86   import org .apache.lo gging.log4 j.Logger;
  87  
  88   /**
  89    * @author   DN S      WERFEJ
  90    * 
  91    */
  92   public cla ss Federat ionDataSou rceProvide r extends  Provider
  93   {
  94           pr ivate stat ic final S tring PROV IDER_NAME  = "Federat ionDataSou rce";
  95           pr ivate stat ic final d ouble PROV IDER_VERSI ON = 1.0d;
  96           pr ivate stat ic final S tring PROV IDER_INFO  = "Impleme nts: \nStu dyGraphDat aSource, I mageDataSo urce SPI \ n backed b y a Federa tion data  store.";
  97  
  98           pr ivate stat ic final l ong serial VersionUID  = 1L;
  99           pr ivate fina l static L ogger logg er = LogMa nager.getL ogger(Fede rationData SourceProv ider.class );
  100           pr ivate stat ic Federat ionConfigu ration fed erationCon figuration  = null;
  101           pr ivate fina l SortedSe t<Provider Service> s ervices;
  102  
  103           /* *
  104            *  The publi c "nullary " construc tor that i s used by  the Servic eLoader cl ass
  105            *  to create  instances .
  106            * /
  107           pu blic Feder ationDataS ourceProvi der()
  108           {
  109                    this (PROVIDER_ NAME, PROV IDER_VERSI ON, PROVID ER_INFO);
  110           }
  111           
  112           /* *
  113            *  A special  construct or that is  only used  for creat ing a conf iguration
  114            *  file.
  115            *  
  116            *  @param ex changeConf iguration
  117            * /
  118           pr ivate Fede rationData SourceProv ider(Feder ationConfi guration f ederationC onfigurati on) 
  119           {
  120                    this ();
  121                    Fede rationData SourceProv ider.feder ationConfi guration =  federatio nConfigura tion;
  122           }
  123  
  124           /* *
  125            *  @param na me
  126            *  @param ve rsion
  127            *  @param in fo
  128            * /
  129           pr ivate Fede rationData SourceProv ider(Strin g name, do uble versi on, String  info)
  130           {
  131                    supe r(name, ve rsion, inf o);
  132  
  133                    serv ices = new  TreeSet<P roviderSer vice>();
  134                    // v ersion 1 a nd version  2 are no  longer ava ilable bec ause they  do not han dle the Ba se32 conve rsions pro perly (ver sion 3 han dles this  correctly)
  135                    /*
  136                    serv ices.add(
  137                             new Pr ovider.Ser vice(
  138                                      DataSour ceServices .StudyGrap hDataSourc e,
  139                                      Federati onStudyGra phDataSour ceService. SUPPORTED_ PROTOCOL,
  140                                      1.0F,
  141                                      Federati onStudyGra phDataSour ceService. class)
  142                    );
  143                    serv ices.add(
  144                             new Pr ovider.Ser vice(
  145                                      DataSour ceServices .StudyGrap hDataSourc e,
  146                                      Federati onStudyGra phDataSour ceServiceV 2.SUPPORTE D_PROTOCOL ,
  147                                      2.0F,
  148                                      Federati onStudyGra phDataSour ceServiceV 2.class)
  149                    );*/
  150                    serv ices.add(
  151                             new Pr oviderServ ice(
  152                                      this, 
  153                                      StudyGra phDataSour ceSpi.clas s,
  154                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  155                                      3.0F,
  156                                      Federati onStudyGra phDataSour ceServiceV 3.class)
  157                    );
  158                    /*
  159                    serv ices.add(
  160                             new Pr ovider.Ser vice(
  161                                      DataSour ceServices .ImageData Source,
  162                                      Federati onImageDat aSourceSer vice.SUPPO RTED_PROTO COL,
  163                                      1.0F,
  164                                      Federati onImageDat aSourceSer vice.class )
  165                    );
  166                    serv ices.add(
  167                             new Pr ovider.Ser vice(
  168                                      DataSour ceServices .ImageData Source,
  169                                      Federati onImageDat aSourceSer viceV2.SUP PORTED_PRO TOCOL,
  170                                      2.0F,
  171                                      Federati onImageDat aSourceSer viceV2.cla ss)
  172                    );*/
  173                    serv ices.add(
  174                             new Pr oviderServ ice(
  175                                      this, 
  176                                      ImageDat aSourceSpi .class,
  177                                      Abstract Federation ImageDataS ourceServi ce.SUPPORT ED_PROTOCO L,
  178                                      3.0F,
  179                                      Federati onImageDat aSourceSer viceV3.cla ss)
  180                    );
  181                    /*
  182                    serv ices.add(
  183                             new Pr ovider.Ser vice(
  184                                      DataSour ceServices .ImageAcce ssLoggingD ataSource,
  185                                      Federati onImageAcc essLogging DataSource Service.SU PPORTED_PR OTOCOL,
  186                                      1.0F,
  187                                      Federati onImageAcc essLogging DataSource Service.cl ass)
  188                    );
  189                    serv ices.add(
  190                             new Pr ovider.Ser vice(
  191                                      DataSour ceServices .ImageAcce ssLoggingD ataSource,
  192                                      Federati onImageAcc essLogging DataSource ServiceV2. SUPPORTED_ PROTOCOL,
  193                                      2.0F,
  194                                      Federati onImageAcc essLogging DataSource ServiceV2. class)
  195                    );*/
  196                    serv ices.add(
  197                             new Pr oviderServ ice(
  198                                      this, 
  199                                      ImageAcc essLogging Spi.class,
  200                                      Federati onImageAcc essLogging DataSource ServiceV3. SUPPORTED_ PROTOCOL,
  201                                      3.0F,
  202                                      Federati onImageAcc essLogging DataSource ServiceV3. class)
  203                    );
  204                    /*
  205                    serv ices.add(
  206                             new Pr ovider.Ser vice(
  207                                      DataSour ceServices .PatientDa taSource,
  208                                      Federati onPatientD ataSourceS ervice.SUP PORTED_PRO TOCOL,
  209                                      1.0F,
  210                                      Federati onPatientD ataSourceS ervice.cla ss)
  211                    );
  212                    serv ices.add(
  213                             new Pr ovider.Ser vice(
  214                                      DataSour ceServices .PatientDa taSource,
  215                                      Federati onPatientD ataSourceS erviceV2.S UPPORTED_P ROTOCOL,
  216                                      2.0F,
  217                                      Federati onPatientD ataSourceS erviceV2.c lass)
  218                    );*/
  219                    serv ices.add(
  220                             new Pr oviderServ ice(
  221                                      this, 
  222                                      PatientD ataSourceS pi.class,
  223                                      Federati onPatientD ataSourceS erviceV3.S UPPORTED_P ROTOCOL,
  224                                      3.0F,
  225                                      Federati onPatientD ataSourceS erviceV3.c lass)
  226                    );
  227                    /*
  228                     //  version 2  and 3 of t he Externa lPackageDa taSource f or Federat ion is no  longer use d because
  229                     //  it contain s a bug th at will on ly retriev e some of  the possib le images  associated  with a 
  230                     //  CPRS ident ifier, to  prevent th is bug fro m occuring , these da ta sources  are disab led and
  231                     //  version 4  must be us ed
  232                    serv ices.add(
  233                             new Pr ovider.Ser vice(
  234                                      DataSour ceServices .ExternalP ackageData Source,
  235                                      Federati onExternal PackageDat aSourceSer viceV2.SUP PORTED_PRO TOCOL,
  236                                      2.0F,
  237                                      Federati onExternal PackageDat aSourceSer viceV2.cla ss)
  238                    );
  239                    serv ices.add(
  240                             new Pr ovider.Ser vice(
  241                                      DataSour ceServices .ExternalP ackageData Source,
  242                                      Federati onExternal PackageDat aSourceSer viceV3.SUP PORTED_PRO TOCOL,
  243                                      3.0F,
  244                                      Federati onExternal PackageDat aSourceSer viceV3.cla ss)
  245                    );*/
  246                    // v ersion 1 o f the Docu ment and D ocumentSet  data sour ce for Fed eration ar e disabled  because
  247                    // t hey do not  support b ase32 conv ersions pr operly (se e comment  above abou t versions  1 and 2)
  248                    /*
  249                    serv ices.add(
  250                             new Pr ovider.Ser vice(
  251                                      DataSour ceServices .DocumentD ataSource,
  252                                      Federati onDocument DataSource Service.SU PPORTED_PR OTOCOL,
  253                                      1.0F,
  254                                      Federati onDocument DataSource Service.cl ass)
  255                    );
  256                    serv ices.add(
  257                             new Pr ovider.Ser vice(
  258                                      DataSour ceServices .DocumentS etDataSour ce,
  259                                      Federati onDocument SetDataSou rceService .SUPPORTED _PROTOCOL,
  260                                      1.0F,
  261                                      Federati onDocument SetDataSou rceService .class)
  262                    );*/
  263                    serv ices.add(
  264                             new Pr oviderServ ice(
  265                                      this, 
  266                                      Document SetDataSou rceSpi.cla ss,
  267                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  268                                      3.0F,
  269                                      Federati onDocument SetDataSou rceService V3.class)
  270                    );
  271                    serv ices.add(
  272                                      new Prov iderServic e(
  273                                               this, 
  274                                               DocumentDa taSourceSp i.class,
  275                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  276                                               3.0F,
  277                                               Federation DocumentDa taSourceSe rviceV3.cl ass)
  278                             );               
  279                    serv ices.add(
  280                             new Pr oviderServ ice(
  281                                      this, 
  282                                      VistaRad DataSource Spi.class,
  283                                      Abstract Federation VistaRadDa taSourceSe rvice.SUPP ORTED_PROT OCOL,
  284                                      3.0F,
  285                                      Federati onVistaRad DataSource ServiceV3. class)
  286                    );
  287                    serv ices.add(
  288                             new Pr oviderServ ice(
  289                                      this, 
  290                                      VistaRad ImageDataS ourceSpi.c lass,
  291                                      Abstract Federation ImageDataS ourceServi ce.SUPPORT ED_PROTOCO L,
  292                                      3.0F,
  293                                      Federati onVistaRad ImageDataS ourceServi ceV3.class )
  294                    );
  295                    serv ices.add(
  296                             new Pr oviderServ ice(
  297                                      this, 
  298                                      Passthro ughDataSou rceSpi.cla ss,
  299                                      Abstract Federation Passthroug hDataSourc eService.S UPPORTED_P ROTOCOL,
  300                                      3.0F,
  301                                      Federati onPassthro ughDataSou rceService V3.class)
  302                    );
  303                    serv ices.add(
  304                             new Pr oviderServ ice(
  305                                      this,
  306                                      PatientA rtifactDat aSourceSpi .class,
  307                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  308                                      3.0F,
  309                                      Federati onPatientA rtifactDat aSourceSer viceV3.cla ss)
  310                    );
  311                    
  312                    // J MW disable  REST web  services f or now, en able for P atch 104
  313                    ///*
  314                    serv ices.add(
  315                                      new Prov iderServic e(
  316                                               this, 
  317                                               DocumentSe tDataSourc eSpi.class ,
  318                                               Federation DocumentSe tDataSourc eServiceV4 .SUPPORTED _PROTOCOL,
  319                                               4.0F,
  320                                               Federation DocumentSe tDataSourc eServiceV4 .class)
  321                             );
  322                             
  323                             servic es.add(
  324                                      new Prov iderServic e(
  325                                               this, 
  326                                               DocumentDa taSourceSp i.class,
  327                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  328                                               4.0F,
  329                                               Federation DocumentDa taSourceSe rviceV4.cl ass)
  330                             );
  331                    serv ices.add(
  332                                      new Prov iderServic e(
  333                                               this, 
  334                                               StudyGraph DataSource Spi.class,
  335                                               Federation StudyGraph DataSource ServiceV4. SUPPORTED_ PROTOCOL,
  336                                               4.0F,
  337                                               Federation StudyGraph DataSource ServiceV4. class)
  338                             );               
  339                    
  340                    serv ices.add(
  341                                      new Prov iderServic e(
  342                                               this, 
  343                                               PatientDat aSourceSpi .class,
  344                                               Federation PatientDat aSourceSer viceV4.SUP PORTED_PRO TOCOL,
  345                                               4.0F,
  346                                               Federation PatientDat aSourceSer viceV4.cla ss)
  347                             );
  348                    
  349                    serv ices.add(
  350                                      new Prov iderServic e(
  351                                               this, 
  352                                               StudyGraph DataSource Spi.class,
  353                                               Federation StudyGraph DataSource ServiceV4. SUPPORTED_ PROTOCOL,
  354                                               4.0F,
  355                                               Federation StudyGraph DataSource ServiceV4. class)
  356                             );
  357                    
  358                    serv ices.add(
  359                                      new Prov iderServic e(
  360                                               this, 
  361                                               Passthroug hDataSourc eSpi.class ,
  362                                               AbstractFe derationPa ssthroughD ataSourceS ervice.SUP PORTED_PRO TOCOL,
  363                                               4.0F,
  364                                               Federation Passthroug hDataSourc eServiceV4 .class)
  365                             );
  366                    
  367                    serv ices.add(
  368                                      new Prov iderServic e(
  369                                               this, 
  370                                               VistaRadDa taSourceSp i.class,
  371                                               AbstractFe derationVi staRadData SourceServ ice.SUPPOR TED_PROTOC OL,
  372                                               4.0F,
  373                                               Federation VistaRadDa taSourceSe rviceV4.cl ass)
  374                             );
  375                    
  376                    serv ices.add(
  377                                      new Prov iderServic e(
  378                                               this, 
  379                                               ImageAcces sLoggingSp i.class,
  380                                               Federation ImageAcces sLoggingDa taSourceSe rviceV4.SU PPORTED_PR OTOCOL,
  381                                               4.0F,
  382                                               Federation ImageAcces sLoggingDa taSourceSe rviceV4.cl ass)
  383                             );
  384                    
  385                    serv ices.add(
  386                                      new Prov iderServic e(
  387                                               this, 
  388                                               ImageDataS ourceSpi.c lass,
  389                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  390                                               4.0F,
  391                                               Federation ImageDataS ourceServi ceV4.class )
  392                             );
  393                    
  394                    serv ices.add(
  395                                      new Prov iderServic e(
  396                                               this, 
  397                                               ExternalPa ckageDataS ourceSpi.c lass,
  398                                               Federation ExternalPa ckageDataS ourceServi ceV4.SUPPO RTED_PROTO COL,
  399                                               4.0F,
  400                                               Federation ExternalPa ckageDataS ourceServi ceV4.class )
  401                             );
  402                                              
  403                    serv ices.add(
  404                                      new Prov iderServic e(
  405                                               this, 
  406                                               VistaRadIm ageDataSou rceSpi.cla ss,
  407                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  408                                               4.0F,
  409                                               Federation VistaRadIm ageDataSou rceService V4.class)
  410                             );                                 
  411                    
  412                    serv ices.add(
  413                                      new Prov iderServic e(
  414                                               this, 
  415                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  416                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  417                                               4.0F,
  418                                               Federation ExternalSy stemOperat ionDataSou rceService V4.class)
  419                             );       
  420                    serv ices.add(
  421                             new Pr oviderServ ice(
  422                                      this,
  423                                      PatientA rtifactDat aSourceSpi .class,
  424                                      Federati onPatientA rtifactDat aSourceSer viceV4.SUP PORTED_PRO TOCOL,
  425                                      4.0F,
  426                                      Federati onPatientA rtifactDat aSourceSer viceV4.cla ss)
  427                             );
  428                    
  429                    // v ersion 5 s ervices
  430                    serv ices.add(
  431                                      new Prov iderServic e(
  432                                               this,
  433                                               DocumentDa taSourceSp i.class,
  434                                               Federation DocumentDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  435                                               5.0F,
  436                                               Federation DocumentDa taSourceSe rviceV5.cl ass)
  437                                      );
  438                    serv ices.add(
  439                                      new Prov iderServic e(
  440                                               this,
  441                                               DocumentSe tDataSourc eSpi.class ,
  442                                               Federation DocumentSe tDataSourc eServiceV5 .SUPPORTED _PROTOCOL,
  443                                               5.0F,
  444                                               Federation DocumentSe tDataSourc eServiceV5 .class)
  445                                      );
  446                    serv ices.add(
  447                                      new Prov iderServic e(
  448                                               this,
  449                                               ExternalPa ckageDataS ourceSpi.c lass,
  450                                               Federation ExternalPa ckageDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  451                                               5.0F,
  452                                               Federation ExternalPa ckageDataS ourceServi ceV5.class )
  453                                      );
  454                    serv ices.add(
  455                                      new Prov iderServic e(
  456                                               this,
  457                                               ImageAcces sLoggingSp i.class,
  458                                               Federation ImageAcces sLoggingDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  459                                               5.0F,
  460                                               Federation ImageAcces sLoggingDa taSourceSe rviceV5.cl ass)
  461                                      );
  462                    serv ices.add(
  463                                      new Prov iderServic e(
  464                                               this,
  465                                               ImageAnnot ationDataS ourceSpi.c lass,
  466                                               Federation ImageAnnot ationDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  467                                               5.0F,
  468                                               Federation ImageAnnot ationDataS ourceServi ceV5.class )
  469                                      );
  470                    serv ices.add(
  471                                      new Prov iderServic e(
  472                                               this,
  473                                               ImageDataS ourceSpi.c lass,
  474                                               Federation ImageDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  475                                               5.0F,
  476                                               Federation ImageDataS ourceServi ceV5.class )
  477                                      );
  478                    serv ices.add(
  479                                      new Prov iderServic e(
  480                                               this,
  481                                               Passthroug hDataSourc eSpi.class ,
  482                                               Federation Passthroug hDataSourc eServiceV5 .SUPPORTED _PROTOCOL,
  483                                               5.0F,
  484                                               Federation Passthroug hDataSourc eServiceV5 .class)
  485                                      );
  486                    serv ices.add(
  487                                      new Prov iderServic e(
  488                                               this,
  489                                               PatientArt ifactDataS ourceSpi.c lass,
  490                                               Federation PatientArt ifactDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  491                                               5.0F,
  492                                               Federation PatientArt ifactDataS ourceServi ceV5.class )
  493                                      );
  494                    serv ices.add(
  495                                      new Prov iderServic e(
  496                                               this,
  497                                               PatientDat aSourceSpi .class,
  498                                               Federation PatientDat aSourceSer viceV5.SUP PORTED_PRO TOCOL,
  499                                               5.0F,
  500                                               Federation PatientDat aSourceSer viceV5.cla ss)
  501                                      );
  502                    serv ices.add(
  503                                      new Prov iderServic e(
  504                                               this,
  505                                               StudyGraph DataSource Spi.class,
  506                                               Federation StudyGraph DataSource ServiceV5. SUPPORTED_ PROTOCOL,
  507                                               5.0F,
  508                                               Federation StudyGraph DataSource ServiceV5. class)
  509                                      );
  510                    serv ices.add(
  511                                      new Prov iderServic e(
  512                                               this,
  513                                               UserDataSo urceSpi.cl ass,
  514                                               Federation UserDataSo urceServic eV5.SUPPOR TED_PROTOC OL,
  515                                               5.0F,
  516                                               Federation UserDataSo urceServic eV5.class)
  517                                      );
  518                    serv ices.add(
  519                                      new Prov iderServic e(
  520                                               this,
  521                                               VistaRadDa taSourceSp i.class,
  522                                               Federation VistaRadDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  523                                               5.0F,
  524                                               Federation VistaRadDa taSourceSe rviceV5.cl ass)
  525                                      );
  526                    serv ices.add(
  527                                      new Prov iderServic e(
  528                                               this,
  529                                               VistaRadIm ageDataSou rceSpi.cla ss,
  530                                               Federation VistaRadIm ageDataSou rceService V5.SUPPORT ED_PROTOCO L,
  531                                               5.0F,
  532                                               Federation VistaRadIm ageDataSou rceService V5.class)
  533                                      );
  534                    serv ices.add(
  535                                      new Prov iderServic e(
  536                                               this, 
  537                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  538                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  539                                               5.0F,
  540                                               Federation ExternalSy stemOperat ionDataSou rceService V5.class)
  541                             );       
  542                    
  543                    // v ersion 6 s ervices
  544                    serv ices.add(
  545                                      new Prov iderServic e(
  546                                               this,
  547                                               PatientDat aSourceSpi .class,
  548                                               Federation PatientDat aSourceSer viceV6.SUP PORTED_PRO TOCOL,
  549                                               6.0F,
  550                                               Federation PatientDat aSourceSer viceV6.cla ss)
  551                                      );
  552                    serv ices.add(
  553                                      new Prov iderServic e(
  554                                               this,
  555                                               UserDataSo urceSpi.cl ass,
  556                                               Federation UserDataSo urceServic eV6.SUPPOR TED_PROTOC OL,
  557                                               6.0F,
  558                                               Federation UserDataSo urceServic eV6.class)
  559                                      );
  560                    serv ices.add(
  561                                      new Prov iderServic e(
  562                                               this, 
  563                                               ExternalPa ckageDataS ourceSpi.c lass,
  564                                               Federation ExternalPa ckageDataS ourceServi ceV6.SUPPO RTED_PROTO COL,
  565                                               6.0F,
  566                                               Federation ExternalPa ckageDataS ourceServi ceV6.class )
  567                                      );
  568           
  569                    // v ersion 7 s ervices
  570                    serv ices.add(
  571                                      new Prov iderServic e(
  572                                               this, 
  573                                               ImageAcces sLoggingSp i.class,
  574                                               Federation ImageAcces sLoggingDa taSourceSe rviceV7.SU PPORTED_PR OTOCOL,
  575                                               7.0F,
  576                                               Federation ImageAcces sLoggingDa taSourceSe rviceV7.cl ass)
  577                             );       
  578                    
  579                    // v ersion 8 s ervices
  580                    // S ince these  services  use differ ent Http11  Non-Block inbg Proto col,
  581                    // a ll service s in this  version mu st be impl emented 
  582                    serv ices.add(
  583                                      new Prov iderServic e(
  584                                               this,
  585                                               DocumentDa taSourceSp i.class,
  586                                               Federation DocumentDa taSourceSe rviceV8.SU PPORTED_PR OTOCOL,
  587                                               8.0F,
  588                                               Federation DocumentDa taSourceSe rviceV8.cl ass)
  589                                      );
  590                    serv ices.add(
  591                                      new Prov iderServic e(
  592                                               this,
  593                                               DocumentSe tDataSourc eSpi.class ,
  594                                               Federation DocumentSe tDataSourc eServiceV8 .SUPPORTED _PROTOCOL,
  595                                               8.0F,
  596                                               Federation DocumentSe tDataSourc eServiceV8 .class)
  597                                      );
  598                    serv ices.add(
  599                                      new Prov iderServic e(
  600                                               this,
  601                                               ImageAnnot ationDataS ourceSpi.c lass,
  602                                               Federation ImageAnnot ationDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  603                                               8.0F,
  604                                               Federation ImageAnnot ationDataS ourceServi ceV8.class )
  605                                      );
  606                    serv ices.add(
  607                                      new Prov iderServic e(
  608                                               this,
  609                                               ImageDataS ourceSpi.c lass,
  610                                               Federation ImageDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  611                                               8.0F,
  612                                               Federation ImageDataS ourceServi ceV8.class )
  613                                      );
  614                    serv ices.add(
  615                                      new Prov iderServic e(
  616                                               this,
  617                                               Passthroug hDataSourc eSpi.class ,
  618                                               Federation Passthroug hDataSourc eServiceV8 .SUPPORTED _PROTOCOL,
  619                                               8.0F,
  620                                               Federation Passthroug hDataSourc eServiceV8 .class)
  621                                      );
  622                    serv ices.add(
  623                                      new Prov iderServic e(
  624                                               this,
  625                                               StudyGraph DataSource Spi.class,
  626                                               Federation StudyGraph DataSource ServiceV8. SUPPORTED_ PROTOCOL,
  627                                               8.0F,
  628                                               Federation StudyGraph DataSource ServiceV8. class)
  629                                      );
  630                    serv ices.add(
  631                                      new Prov iderServic e(
  632                                               this,
  633                                               VistaRadDa taSourceSp i.class,
  634                                               Federation VistaRadDa taSourceSe rviceV8.SU PPORTED_PR OTOCOL,
  635                                               8.0F,
  636                                               Federation VistaRadDa taSourceSe rviceV8.cl ass)
  637                                      );
  638                    serv ices.add(
  639                                      new Prov iderServic e(
  640                                               this,
  641                                               VistaRadIm ageDataSou rceSpi.cla ss,
  642                                               Federation VistaRadIm ageDataSou rceService V8.SUPPORT ED_PROTOCO L,
  643                                               8.0F,
  644                                               Federation VistaRadIm ageDataSou rceService V8.class)
  645                                      );
  646                    serv ices.add(
  647                                      new Prov iderServic e(
  648                                               this, 
  649                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  650                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  651                                               8.0F,
  652                                               Federation ExternalSy stemOperat ionDataSou rceService V8.class)
  653                             );       
  654                    serv ices.add(
  655                                      new Prov iderServic e(
  656                                               this,
  657                                               PatientDat aSourceSpi .class,
  658                                               Federation PatientDat aSourceSer viceV8.SUP PORTED_PRO TOCOL,
  659                                               8.0F,
  660                                               Federation PatientDat aSourceSer viceV8.cla ss)
  661                                      );
  662                    serv ices.add(
  663                                      new Prov iderServic e(
  664                                               this,
  665                                               UserDataSo urceSpi.cl ass,
  666                                               Federation UserDataSo urceServic eV8.SUPPOR TED_PROTOC OL,
  667                                               8.0F,
  668                                               Federation UserDataSo urceServic eV8.class)
  669                                      );
  670                    serv ices.add(
  671                                      new Prov iderServic e(
  672                                               this, 
  673                                               ExternalPa ckageDataS ourceSpi.c lass,
  674                                               Federation ExternalPa ckageDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  675                                               8.0F,
  676                                               Federation ExternalPa ckageDataS ourceServi ceV8.class )
  677                                      );
  678                    serv ices.add(
  679                                      new Prov iderServic e(
  680                                               this, 
  681                                               ImageAcces sLoggingSp i.class,
  682                                               Federation ImageAcces sLoggingDa taSourceSe rviceV8.SU PPORTED_PR OTOCOL,
  683                                               8.0F,
  684                                               Federation ImageAcces sLoggingDa taSourceSe rviceV8.cl ass)
  685                             );       
  686                    serv ices.add(
  687                                      new Prov iderServic e(
  688                                               this,
  689                                               PatientArt ifactDataS ourceSpi.c lass,
  690                                               Federation PatientArt ifactDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  691                                               8.0F,
  692                                               Federation PatientArt ifactDataS ourceServi ceV8.class )
  693                             );
  694                    serv ices.add(
  695                                      new Prov iderServic e(
  696                                               this,
  697                                               ExternalPa ckageDataS ourceSpi.c lass,
  698                                               Federation ExternalPa ckageDataS ourceServi ceV9.SUPPO RTED_PROTO COL,
  699                                               9.0F,
  700                                               Federation ExternalPa ckageDataS ourceServi ceV9.class )
  701                             );
  702  
  703                    // l oad the Fe derationCo nfiguratio n if it ex ists
  704                    sync hronized(F ederationD ataSourceP rovider.cl ass)
  705                {
  706                             try
  707                             {
  708                                      if(feder ationConfi guration = = null)
  709                                      {
  710                                               federation Configurat ion = (Fed erationCon figuration )loadConfi guration() ;
  711                                               if(federat ionConfigu ration !=  null)
  712                                               {
  713                                                       Fe derationPr oxyUtiliti es.configu reFederati onCertific ate(federa tionConfig uration);
  714                                               }
  715                                      }
  716                             }
  717                             catch( ClassCastE xception c cX)
  718                             {
  719                                      logger.e rror("Unab le to load  configura tion becau se the con figuration  file is i nvalid.",  ccX);
  720                             }
  721                }
  722           }
  723           
  724           /* *
  725            *  
  726            * /
  727           @O verride
  728           pu blic void  storeConfi guration()
  729       {
  730                storeCon figuration (getFedera tionConfig uration()) ;
  731       }
  732           
  733           /* *
  734            *  A package  level met hod for SP I implemen tation to  get the
  735            *  Configura tion.
  736            *  
  737            *  @return
  738            * /
  739           st atic Feder ationConfi guration g etFederati onConfigur ation()
  740           {
  741                    if(f ederationC onfigurati on == null )
  742                             logger .error("Fe derationCo nfiguratio n is null,  possibly  called bef ore Federa tionDataSo urceProvid er was ins tantiated. ");
  743                    
  744                    retu rn federat ionConfigu ration;
  745           }
  746  
  747           @O verride
  748           pu blic Sorte dSet<Provi derService > getServi ces()
  749           {
  750                    retu rn Collect ions.unmod ifiableSor tedSet(ser vices);
  751           }
  752           
  753           /* *
  754            *  Main func tion to cr eate a Fed eration Da ta Source  configurat ion file. 
  755            *  The trust store pass word and t he keystor e password  must be p rovided, a ll other p arameters  are option al.
  756            *  Required  Arguments:
  757            *       -tru ststorePas sword <tru ststore pa ssword>
  758            *   -keystor ePassword  <keystore  password>
  759            *  
  760            *  Optional  arguments  include:
  761            *   -keystor eUrl <keys tore URL>
  762            *   -trustst oreUrl <tr uststore U RL>
  763            *   -federat ionSslProt ocol <Fede ration SSL  protocol>
  764            *  
  765            *  @param ar gs Argumen ts shown a bove
  766            * /
  767           pu blic stati c void mai n(String [ ] args)
  768           {
  769                    Syst em.out.pri ntln("Crea ting excha nge dataso urce confi guration f ile");
  770                    
  771                    Stri ng trustst orePasswor d = null;
  772                    Stri ng keystor ePassword  = null;
  773                    Stri ng trustst oreUrl = n ull;
  774                    Stri ng keystor eUrl = nul l;
  775                    Stri ng federat ionSslProt ocol = nul l;
  776                    int  metadataTi meout = 0;
  777                    bool ean addCom pression =  true;
  778                    for( int i = 0;  i < args. length; i+ +)
  779                    {
  780                             if("-t ruststoreP assword".e quals(args [i]))
  781                             {
  782                                      truststo rePassword  = args[++ i];
  783                             }
  784                             else i f("-keysto rePassword ".equals(a rgs[i]))
  785                             {
  786                                      keystore Password =  args[++i] ;
  787                             }
  788                             else i f("-keysto reUrl".equ als(args[i ]))
  789                             {
  790                                      keystore Url = args [++i];
  791                             }
  792                             else i f("-trusts toreUrl".e quals(args [i]))
  793                             {
  794                                      truststo reUrl = ar gs[++i];
  795                             }
  796                             else i f("-federa tionSslPro tocol".equ als(args[i ]))
  797                             {
  798                                      federati onSslProto col = args [++i];
  799                             }
  800                             else i f("-metada taTimeout" .equalsIgn oreCase(ar gs[i]))
  801                             {
  802                                      metadata Timeout =  Integer.pa rseInt(arg s[++i]);
  803                             }
  804                             else i f("-addCom pression". equalsIgno reCase(arg s[i]))
  805                             {
  806                                      addCompr ession = B oolean.par seBoolean( args[++i]) ;
  807                             }
  808                    }
  809                    Fede rationConf iguration  fedConfigu ration = F ederationC onfigurati on.createC onfigurati on(keystor eUrl, 
  810                                      keystore Password,  truststore Url, trust storePassw ord, feder ationSslPr otocol);
  811                    if(m etadataTim eout > 0)          
  812                             fedCon figuration .setMetada taTimeoutM s(metadata Timeout);
  813                    fedC onfigurati on.setAddC ompression ForImageRe quests(add Compressio n);
  814                    Fede rationData SourceProv ider provi der = new  Federation DataSource Provider(f edConfigur ation);
  815                    prov ider.store Configurat ion();
  816                    Syst em.out.pri ntln("Conf iguration  file saved  to '" + p rovider.ge tConfigura tionFileNa me() + "'. ");
  817           }
  818   }