192. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 12/5/2017 12:06:41 PM Central Standard 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.

192.1 Files compared

# Location File Last Modified
1 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\FederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource FederationDataSourceProvider.java Mon Dec 4 21:34:40 2017 UTC
2 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\FederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource FederationDataSourceProvider.java Mon Dec 4 22:00:32 2017 UTC

192.2 Comparison summary

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

192.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

192.4 Active regular expressions

No regular expressions were active.

192.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:          
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.fede ration.pro xy.Federat ionProxyUt ilities;
  45   import gov .va.med.im aging.fede rationdata source.con figuration .Federatio nConfigura tion;
  46   import gov .va.med.im aging.fede rationdata source.v5. Federation DocumentDa taSourceSe rviceV5;
  47   import gov .va.med.im aging.fede rationdata source.v5. Federation DocumentSe tDataSourc eServiceV5 ;
  48   import gov .va.med.im aging.fede rationdata source.v5. Federation ExternalPa ckageDataS ourceServi ceV5;
  49   import gov .va.med.im aging.fede rationdata source.v5. Federation ExternalSy stemOperat ionDataSou rceService V5;
  50   import gov .va.med.im aging.fede rationdata source.v5. Federation ImageAcces sLoggingDa taSourceSe rviceV5;
  51   import gov .va.med.im aging.fede rationdata source.v5. Federation ImageAnnot ationDataS ourceServi ceV5;
  52   import gov .va.med.im aging.fede rationdata source.v5. Federation ImageDataS ourceServi ceV5;
  53   import gov .va.med.im aging.fede rationdata source.v5. Federation Passthroug hDataSourc eServiceV5 ;
  54   import gov .va.med.im aging.fede rationdata source.v5. Federation PatientArt ifactDataS ourceServi ceV5;
  55   import gov .va.med.im aging.fede rationdata source.v5. Federation PatientDat aSourceSer viceV5;
  56   import gov .va.med.im aging.fede rationdata source.v5. Federation StudyGraph DataSource ServiceV5;
  57   import gov .va.med.im aging.fede rationdata source.v5. Federation UserDataSo urceServic eV5;
  58   import gov .va.med.im aging.fede rationdata source.v5. Federation VistaRadDa taSourceSe rviceV5;
  59   import gov .va.med.im aging.fede rationdata source.v5. Federation VistaRadIm ageDataSou rceService V5;
  60   import gov .va.med.im aging.fede rationdata source.v6. Federation ExternalPa ckageDataS ourceServi ceV6;
  61   import gov .va.med.im aging.fede rationdata source.v6. Federation PatientDat aSourceSer viceV6;
  62   import gov .va.med.im aging.fede rationdata source.v6. Federation UserDataSo urceServic eV6;
  63   import gov .va.med.im aging.fede rationdata source.v7. Federation ImageAcces sLoggingDa taSourceSe rviceV7;
  64   import gov .va.med.im aging.fede rationdata source.v8. Federation DocumentDa taSourceSe rviceV8;
  65   import gov .va.med.im aging.fede rationdata source.v8. Federation DocumentSe tDataSourc eServiceV8 ;
  66   import gov .va.med.im aging.fede rationdata source.v8. Federation ExternalPa ckageDataS ourceServi ceV8;
  67   import gov .va.med.im aging.fede rationdata source.v8. Federation ExternalSy stemOperat ionDataSou rceService V8;
  68   import gov .va.med.im aging.fede rationdata source.v8. Federation ImageAcces sLoggingDa taSourceSe rviceV8;
  69   import gov .va.med.im aging.fede rationdata source.v8. Federation ImageAnnot ationDataS ourceServi ceV8;
  70   import gov .va.med.im aging.fede rationdata source.v8. Federation ImageDataS ourceServi ceV8;
  71   import gov .va.med.im aging.fede rationdata source.v8. Federation Passthroug hDataSourc eServiceV8 ;
  72   import gov .va.med.im aging.fede rationdata source.v8. Federation PatientArt ifactDataS ourceServi ceV8;
  73   import gov .va.med.im aging.fede rationdata source.v8. Federation PatientDat aSourceSer viceV8;
  74   import gov .va.med.im aging.fede rationdata source.v8. Federation StudyGraph DataSource ServiceV8;
  75   import gov .va.med.im aging.fede rationdata source.v8. Federation UserDataSo urceServic eV8;
  76   import gov .va.med.im aging.fede rationdata source.v8. Federation VistaRadDa taSourceSe rviceV8;
  77   import gov .va.med.im aging.fede rationdata source.v8. Federation VistaRadIm ageDataSou rceService V8;
  78   import gov .va.med.im aging.fede rationdata source.v9. Federation ExternalPa ckageDataS ourceServi ceV9;
  79   import jav a.util.Col lections;
  80   import jav a.util.Sor tedSet;
  81   import jav a.util.Tre eSet;
  82  
  83   import org .apache.lo gging.log4 j.LogManag er;
  84   import org .apache.lo gging.log4 j.Logger;
  85  
  86   /**
  87    * @author         
WERFEJ
  88    * 
  89    */
  90   public cla ss Federat ionDataSou rceProvide r extends  Provider
  91   {
  92           pr ivate stat ic final S tring PROV IDER_NAME  = "Federat ionDataSou rce";
  93           pr ivate stat ic final d ouble PROV IDER_VERSI ON = 1.0d;
  94           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.";
  95  
  96           pr ivate stat ic final l ong serial VersionUID  = 1L;
  97           pr ivate fina l static L ogger logg er = LogMa nager.getL ogger(Fede rationData SourceProv ider.class );
  98           pr ivate stat ic Federat ionConfigu ration fed erationCon figuration  = null;
  99           pr ivate fina l SortedSe t<Provider Service> s ervices;
  100  
  101           /* *
  102            *  The publi c "nullary " construc tor that i s used by  the Servic eLoader cl ass
  103            *  to create  instances .
  104            * /
  105           pu blic Feder ationDataS ourceProvi der()
  106           {
  107                    this (PROVIDER_ NAME, PROV IDER_VERSI ON, PROVID ER_INFO);
  108           }
  109           
  110           /* *
  111            *  A special  construct or that is  only used  for creat ing a conf iguration
  112            *  file.
  113            *  
  114            *  @param ex changeConf iguration
  115            * /
  116           pr ivate Fede rationData SourceProv ider(Feder ationConfi guration f ederationC onfigurati on) 
  117           {
  118                    this ();
  119                    Fede rationData SourceProv ider.feder ationConfi guration =  federatio nConfigura tion;
  120           }
  121  
  122           /* *
  123            *  @param na me
  124            *  @param ve rsion
  125            *  @param in fo
  126            * /
  127           pr ivate Fede rationData SourceProv ider(Strin g name, do uble versi on, String  info)
  128           {
  129                    supe r(name, ve rsion, inf o);
  130  
  131                    serv ices = new  TreeSet<P roviderSer vice>();
  132                    // 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)
  133                    /*
  134                    serv ices.add(
  135                             new Pr ovider.Ser vice(
  136                                      DataSour ceServices .StudyGrap hDataSourc e,
  137                                      Federati onStudyGra phDataSour ceService. SUPPORTED_ PROTOCOL,
  138                                      1.0F,
  139                                      Federati onStudyGra phDataSour ceService. class)
  140                    );
  141                    serv ices.add(
  142                             new Pr ovider.Ser vice(
  143                                      DataSour ceServices .StudyGrap hDataSourc e,
  144                                      Federati onStudyGra phDataSour ceServiceV 2.SUPPORTE D_PROTOCOL ,
  145                                      2.0F,
  146                                      Federati onStudyGra phDataSour ceServiceV 2.class)
  147                    );*/
  148                    serv ices.add(
  149                             new Pr oviderServ ice(
  150                                      this, 
  151                                      StudyGra phDataSour ceSpi.clas s,
  152                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  153                                      3.0F,
  154                                      Federati onStudyGra phDataSour ceServiceV 3.class)
  155                    );
  156                    /*
  157                    serv ices.add(
  158                             new Pr ovider.Ser vice(
  159                                      DataSour ceServices .ImageData Source,
  160                                      Federati onImageDat aSourceSer vice.SUPPO RTED_PROTO COL,
  161                                      1.0F,
  162                                      Federati onImageDat aSourceSer vice.class )
  163                    );
  164                    serv ices.add(
  165                             new Pr ovider.Ser vice(
  166                                      DataSour ceServices .ImageData Source,
  167                                      Federati onImageDat aSourceSer viceV2.SUP PORTED_PRO TOCOL,
  168                                      2.0F,
  169                                      Federati onImageDat aSourceSer viceV2.cla ss)
  170                    );*/
  171                    serv ices.add(
  172                             new Pr oviderServ ice(
  173                                      this, 
  174                                      ImageDat aSourceSpi .class,
  175                                      Abstract Federation ImageDataS ourceServi ce.SUPPORT ED_PROTOCO L,
  176                                      3.0F,
  177                                      Federati onImageDat aSourceSer viceV3.cla ss)
  178                    );
  179                    /*
  180                    serv ices.add(
  181                             new Pr ovider.Ser vice(
  182                                      DataSour ceServices .ImageAcce ssLoggingD ataSource,
  183                                      Federati onImageAcc essLogging DataSource Service.SU PPORTED_PR OTOCOL,
  184                                      1.0F,
  185                                      Federati onImageAcc essLogging DataSource Service.cl ass)
  186                    );
  187                    serv ices.add(
  188                             new Pr ovider.Ser vice(
  189                                      DataSour ceServices .ImageAcce ssLoggingD ataSource,
  190                                      Federati onImageAcc essLogging DataSource ServiceV2. SUPPORTED_ PROTOCOL,
  191                                      2.0F,
  192                                      Federati onImageAcc essLogging DataSource ServiceV2. class)
  193                    );*/
  194                    serv ices.add(
  195                             new Pr oviderServ ice(
  196                                      this, 
  197                                      ImageAcc essLogging Spi.class,
  198                                      Federati onImageAcc essLogging DataSource ServiceV3. SUPPORTED_ PROTOCOL,
  199                                      3.0F,
  200                                      Federati onImageAcc essLogging DataSource ServiceV3. class)
  201                    );
  202                    /*
  203                    serv ices.add(
  204                             new Pr ovider.Ser vice(
  205                                      DataSour ceServices .PatientDa taSource,
  206                                      Federati onPatientD ataSourceS ervice.SUP PORTED_PRO TOCOL,
  207                                      1.0F,
  208                                      Federati onPatientD ataSourceS ervice.cla ss)
  209                    );
  210                    serv ices.add(
  211                             new Pr ovider.Ser vice(
  212                                      DataSour ceServices .PatientDa taSource,
  213                                      Federati onPatientD ataSourceS erviceV2.S UPPORTED_P ROTOCOL,
  214                                      2.0F,
  215                                      Federati onPatientD ataSourceS erviceV2.c lass)
  216                    );*/
  217                    serv ices.add(
  218                             new Pr oviderServ ice(
  219                                      this, 
  220                                      PatientD ataSourceS pi.class,
  221                                      Federati onPatientD ataSourceS erviceV3.S UPPORTED_P ROTOCOL,
  222                                      3.0F,
  223                                      Federati onPatientD ataSourceS erviceV3.c lass)
  224                    );
  225                    /*
  226                     //  version 2  and 3 of t he Externa lPackageDa taSource f or Federat ion is no  longer use d because
  227                     //  it contain s a bug th at will on ly retriev e some of  the possib le images  associated  with a 
  228                     //  CPRS ident ifier, to  prevent th is bug fro m occuring , these da ta sources  are disab led and
  229                     //  version 4  must be us ed
  230                    serv ices.add(
  231                             new Pr ovider.Ser vice(
  232                                      DataSour ceServices .ExternalP ackageData Source,
  233                                      Federati onExternal PackageDat aSourceSer viceV2.SUP PORTED_PRO TOCOL,
  234                                      2.0F,
  235                                      Federati onExternal PackageDat aSourceSer viceV2.cla ss)
  236                    );
  237                    serv ices.add(
  238                             new Pr ovider.Ser vice(
  239                                      DataSour ceServices .ExternalP ackageData Source,
  240                                      Federati onExternal PackageDat aSourceSer viceV3.SUP PORTED_PRO TOCOL,
  241                                      3.0F,
  242                                      Federati onExternal PackageDat aSourceSer viceV3.cla ss)
  243                    );*/
  244                    // v ersion 1 o f the Docu ment and D ocumentSet  data sour ce for Fed eration ar e disabled  because
  245                    // t hey do not  support b ase32 conv ersions pr operly (se e comment  above abou t versions  1 and 2)
  246                    /*
  247                    serv ices.add(
  248                             new Pr ovider.Ser vice(
  249                                      DataSour ceServices .DocumentD ataSource,
  250                                      Federati onDocument DataSource Service.SU PPORTED_PR OTOCOL,
  251                                      1.0F,
  252                                      Federati onDocument DataSource Service.cl ass)
  253                    );
  254                    serv ices.add(
  255                             new Pr ovider.Ser vice(
  256                                      DataSour ceServices .DocumentS etDataSour ce,
  257                                      Federati onDocument SetDataSou rceService .SUPPORTED _PROTOCOL,
  258                                      1.0F,
  259                                      Federati onDocument SetDataSou rceService .class)
  260                    );*/
  261                    serv ices.add(
  262                             new Pr oviderServ ice(
  263                                      this, 
  264                                      Document SetDataSou rceSpi.cla ss,
  265                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  266                                      3.0F,
  267                                      Federati onDocument SetDataSou rceService V3.class)
  268                    );
  269                    serv ices.add(
  270                                      new Prov iderServic e(
  271                                               this, 
  272                                               DocumentDa taSourceSp i.class,
  273                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  274                                               3.0F,
  275                                               Federation DocumentDa taSourceSe rviceV3.cl ass)
  276                             );               
  277                    serv ices.add(
  278                             new Pr oviderServ ice(
  279                                      this, 
  280                                      VistaRad DataSource Spi.class,
  281                                      Abstract Federation VistaRadDa taSourceSe rvice.SUPP ORTED_PROT OCOL,
  282                                      3.0F,
  283                                      Federati onVistaRad DataSource ServiceV3. class)
  284                    );
  285                    serv ices.add(
  286                             new Pr oviderServ ice(
  287                                      this, 
  288                                      VistaRad ImageDataS ourceSpi.c lass,
  289                                      Abstract Federation ImageDataS ourceServi ce.SUPPORT ED_PROTOCO L,
  290                                      3.0F,
  291                                      Federati onVistaRad ImageDataS ourceServi ceV3.class )
  292                    );
  293                    serv ices.add(
  294                             new Pr oviderServ ice(
  295                                      this, 
  296                                      Passthro ughDataSou rceSpi.cla ss,
  297                                      Abstract Federation Passthroug hDataSourc eService.S UPPORTED_P ROTOCOL,
  298                                      3.0F,
  299                                      Federati onPassthro ughDataSou rceService V3.class)
  300                    );
  301                    serv ices.add(
  302                             new Pr oviderServ ice(
  303                                      this,
  304                                      PatientA rtifactDat aSourceSpi .class,
  305                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  306                                      3.0F,
  307                                      Federati onPatientA rtifactDat aSourceSer viceV3.cla ss)
  308                    );
  309                    
  310                    // J MW disable  REST web  services f or now, en able for P atch 104
  311                    ///*
  312                    serv ices.add(
  313                                      new Prov iderServic e(
  314                                               this, 
  315                                               DocumentSe tDataSourc eSpi.class ,
  316                                               Federation DocumentSe tDataSourc eServiceV4 .SUPPORTED _PROTOCOL,
  317                                               4.0F,
  318                                               Federation DocumentSe tDataSourc eServiceV4 .class)
  319                             );
  320                             
  321                             servic es.add(
  322                                      new Prov iderServic e(
  323                                               this, 
  324                                               DocumentDa taSourceSp i.class,
  325                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  326                                               4.0F,
  327                                               Federation DocumentDa taSourceSe rviceV4.cl ass)
  328                             );
  329                    serv ices.add(
  330                                      new Prov iderServic e(
  331                                               this, 
  332                                               StudyGraph DataSource Spi.class,
  333                                               Federation StudyGraph DataSource ServiceV4. SUPPORTED_ PROTOCOL,
  334                                               4.0F,
  335                                               Federation StudyGraph DataSource ServiceV4. class)
  336                             );               
  337                    
  338                    serv ices.add(
  339                                      new Prov iderServic e(
  340                                               this, 
  341                                               PatientDat aSourceSpi .class,
  342                                               Federation PatientDat aSourceSer viceV4.SUP PORTED_PRO TOCOL,
  343                                               4.0F,
  344                                               Federation PatientDat aSourceSer viceV4.cla ss)
  345                             );
  346                    
  347                    serv ices.add(
  348                                      new Prov iderServic e(
  349                                               this, 
  350                                               StudyGraph DataSource Spi.class,
  351                                               Federation StudyGraph DataSource ServiceV4. SUPPORTED_ PROTOCOL,
  352                                               4.0F,
  353                                               Federation StudyGraph DataSource ServiceV4. class)
  354                             );
  355                    
  356                    serv ices.add(
  357                                      new Prov iderServic e(
  358                                               this, 
  359                                               Passthroug hDataSourc eSpi.class ,
  360                                               AbstractFe derationPa ssthroughD ataSourceS ervice.SUP PORTED_PRO TOCOL,
  361                                               4.0F,
  362                                               Federation Passthroug hDataSourc eServiceV4 .class)
  363                             );
  364                    
  365                    serv ices.add(
  366                                      new Prov iderServic e(
  367                                               this, 
  368                                               VistaRadDa taSourceSp i.class,
  369                                               AbstractFe derationVi staRadData SourceServ ice.SUPPOR TED_PROTOC OL,
  370                                               4.0F,
  371                                               Federation VistaRadDa taSourceSe rviceV4.cl ass)
  372                             );
  373                    
  374                    serv ices.add(
  375                                      new Prov iderServic e(
  376                                               this, 
  377                                               ImageAcces sLoggingSp i.class,
  378                                               Federation ImageAcces sLoggingDa taSourceSe rviceV4.SU PPORTED_PR OTOCOL,
  379                                               4.0F,
  380                                               Federation ImageAcces sLoggingDa taSourceSe rviceV4.cl ass)
  381                             );
  382                    
  383                    serv ices.add(
  384                                      new Prov iderServic e(
  385                                               this, 
  386                                               ImageDataS ourceSpi.c lass,
  387                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  388                                               4.0F,
  389                                               Federation ImageDataS ourceServi ceV4.class )
  390                             );
  391                    
  392                    serv ices.add(
  393                                      new Prov iderServic e(
  394                                               this, 
  395                                               ExternalPa ckageDataS ourceSpi.c lass,
  396                                               Federation ExternalPa ckageDataS ourceServi ceV4.SUPPO RTED_PROTO COL,
  397                                               4.0F,
  398                                               Federation ExternalPa ckageDataS ourceServi ceV4.class )
  399                             );
  400                                              
  401                    serv ices.add(
  402                                      new Prov iderServic e(
  403                                               this, 
  404                                               VistaRadIm ageDataSou rceSpi.cla ss,
  405                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  406                                               4.0F,
  407                                               Federation VistaRadIm ageDataSou rceService V4.class)
  408                             );                                 
  409                    
  410                    serv ices.add(
  411                                      new Prov iderServic e(
  412                                               this, 
  413                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  414                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  415                                               4.0F,
  416                                               Federation ExternalSy stemOperat ionDataSou rceService V4.class)
  417                             );       
  418                    serv ices.add(
  419                             new Pr oviderServ ice(
  420                                      this,
  421                                      PatientA rtifactDat aSourceSpi .class,
  422                                      Federati onPatientA rtifactDat aSourceSer viceV4.SUP PORTED_PRO TOCOL,
  423                                      4.0F,
  424                                      Federati onPatientA rtifactDat aSourceSer viceV4.cla ss)
  425                             );
  426                    
  427                    // v ersion 5 s ervices
  428                    serv ices.add(
  429                                      new Prov iderServic e(
  430                                               this,
  431                                               DocumentDa taSourceSp i.class,
  432                                               Federation DocumentDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  433                                               5.0F,
  434                                               Federation DocumentDa taSourceSe rviceV5.cl ass)
  435                                      );
  436                    serv ices.add(
  437                                      new Prov iderServic e(
  438                                               this,
  439                                               DocumentSe tDataSourc eSpi.class ,
  440                                               Federation DocumentSe tDataSourc eServiceV5 .SUPPORTED _PROTOCOL,
  441                                               5.0F,
  442                                               Federation DocumentSe tDataSourc eServiceV5 .class)
  443                                      );
  444                    serv ices.add(
  445                                      new Prov iderServic e(
  446                                               this,
  447                                               ExternalPa ckageDataS ourceSpi.c lass,
  448                                               Federation ExternalPa ckageDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  449                                               5.0F,
  450                                               Federation ExternalPa ckageDataS ourceServi ceV5.class )
  451                                      );
  452                    serv ices.add(
  453                                      new Prov iderServic e(
  454                                               this,
  455                                               ImageAcces sLoggingSp i.class,
  456                                               Federation ImageAcces sLoggingDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  457                                               5.0F,
  458                                               Federation ImageAcces sLoggingDa taSourceSe rviceV5.cl ass)
  459                                      );
  460                    serv ices.add(
  461                                      new Prov iderServic e(
  462                                               this,
  463                                               ImageAnnot ationDataS ourceSpi.c lass,
  464                                               Federation ImageAnnot ationDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  465                                               5.0F,
  466                                               Federation ImageAnnot ationDataS ourceServi ceV5.class )
  467                                      );
  468                    serv ices.add(
  469                                      new Prov iderServic e(
  470                                               this,
  471                                               ImageDataS ourceSpi.c lass,
  472                                               Federation ImageDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  473                                               5.0F,
  474                                               Federation ImageDataS ourceServi ceV5.class )
  475                                      );
  476                    serv ices.add(
  477                                      new Prov iderServic e(
  478                                               this,
  479                                               Passthroug hDataSourc eSpi.class ,
  480                                               Federation Passthroug hDataSourc eServiceV5 .SUPPORTED _PROTOCOL,
  481                                               5.0F,
  482                                               Federation Passthroug hDataSourc eServiceV5 .class)
  483                                      );
  484                    serv ices.add(
  485                                      new Prov iderServic e(
  486                                               this,
  487                                               PatientArt ifactDataS ourceSpi.c lass,
  488                                               Federation PatientArt ifactDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  489                                               5.0F,
  490                                               Federation PatientArt ifactDataS ourceServi ceV5.class )
  491                                      );
  492                    serv ices.add(
  493                                      new Prov iderServic e(
  494                                               this,
  495                                               PatientDat aSourceSpi .class,
  496                                               Federation PatientDat aSourceSer viceV5.SUP PORTED_PRO TOCOL,
  497                                               5.0F,
  498                                               Federation PatientDat aSourceSer viceV5.cla ss)
  499                                      );
  500                    serv ices.add(
  501                                      new Prov iderServic e(
  502                                               this,
  503                                               StudyGraph DataSource Spi.class,
  504                                               Federation StudyGraph DataSource ServiceV5. SUPPORTED_ PROTOCOL,
  505                                               5.0F,
  506                                               Federation StudyGraph DataSource ServiceV5. class)
  507                                      );
  508                    serv ices.add(
  509                                      new Prov iderServic e(
  510                                               this,
  511                                               UserDataSo urceSpi.cl ass,
  512                                               Federation UserDataSo urceServic eV5.SUPPOR TED_PROTOC OL,
  513                                               5.0F,
  514                                               Federation UserDataSo urceServic eV5.class)
  515                                      );
  516                    serv ices.add(
  517                                      new Prov iderServic e(
  518                                               this,
  519                                               VistaRadDa taSourceSp i.class,
  520                                               Federation VistaRadDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  521                                               5.0F,
  522                                               Federation VistaRadDa taSourceSe rviceV5.cl ass)
  523                                      );
  524                    serv ices.add(
  525                                      new Prov iderServic e(
  526                                               this,
  527                                               VistaRadIm ageDataSou rceSpi.cla ss,
  528                                               Federation VistaRadIm ageDataSou rceService V5.SUPPORT ED_PROTOCO L,
  529                                               5.0F,
  530                                               Federation VistaRadIm ageDataSou rceService V5.class)
  531                                      );
  532                    serv ices.add(
  533                                      new Prov iderServic e(
  534                                               this, 
  535                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  536                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  537                                               5.0F,
  538                                               Federation ExternalSy stemOperat ionDataSou rceService V5.class)
  539                             );       
  540                    
  541                    // v ersion 6 s ervices
  542                    serv ices.add(
  543                                      new Prov iderServic e(
  544                                               this,
  545                                               PatientDat aSourceSpi .class,
  546                                               Federation PatientDat aSourceSer viceV6.SUP PORTED_PRO TOCOL,
  547                                               6.0F,
  548                                               Federation PatientDat aSourceSer viceV6.cla ss)
  549                                      );
  550                    serv ices.add(
  551                                      new Prov iderServic e(
  552                                               this,
  553                                               UserDataSo urceSpi.cl ass,
  554                                               Federation UserDataSo urceServic eV6.SUPPOR TED_PROTOC OL,
  555                                               6.0F,
  556                                               Federation UserDataSo urceServic eV6.class)
  557                                      );
  558                    serv ices.add(
  559                                      new Prov iderServic e(
  560                                               this, 
  561                                               ExternalPa ckageDataS ourceSpi.c lass,
  562                                               Federation ExternalPa ckageDataS ourceServi ceV6.SUPPO RTED_PROTO COL,
  563                                               6.0F,
  564                                               Federation ExternalPa ckageDataS ourceServi ceV6.class )
  565                                      );
  566           
  567                    // v ersion 7 s ervices
  568                    serv ices.add(
  569                                      new Prov iderServic e(
  570                                               this, 
  571                                               ImageAcces sLoggingSp i.class,
  572                                               Federation ImageAcces sLoggingDa taSourceSe rviceV7.SU PPORTED_PR OTOCOL,
  573                                               7.0F,
  574                                               Federation ImageAcces sLoggingDa taSourceSe rviceV7.cl ass)
  575                             );       
  576                    
  577                    // v ersion 8 s ervices
  578                    // S ince these  services  use differ ent Http11  Non-Block inbg Proto col,
  579                    // a ll service s in this  version mu st be impl emented 
  580                    serv ices.add(
  581                                      new Prov iderServic e(
  582                                               this,
  583                                               DocumentDa taSourceSp i.class,
  584                                               Federation DocumentDa taSourceSe rviceV8.SU PPORTED_PR OTOCOL,
  585                                               8.0F,
  586                                               Federation DocumentDa taSourceSe rviceV8.cl ass)
  587                                      );
  588                    serv ices.add(
  589                                      new Prov iderServic e(
  590                                               this,
  591                                               DocumentSe tDataSourc eSpi.class ,
  592                                               Federation DocumentSe tDataSourc eServiceV8 .SUPPORTED _PROTOCOL,
  593                                               8.0F,
  594                                               Federation DocumentSe tDataSourc eServiceV8 .class)
  595                                      );
  596                    serv ices.add(
  597                                      new Prov iderServic e(
  598                                               this,
  599                                               ImageAnnot ationDataS ourceSpi.c lass,
  600                                               Federation ImageAnnot ationDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  601                                               8.0F,
  602                                               Federation ImageAnnot ationDataS ourceServi ceV8.class )
  603                                      );
  604                    serv ices.add(
  605                                      new Prov iderServic e(
  606                                               this,
  607                                               ImageDataS ourceSpi.c lass,
  608                                               Federation ImageDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  609                                               8.0F,
  610                                               Federation ImageDataS ourceServi ceV8.class )
  611                                      );
  612                    serv ices.add(
  613                                      new Prov iderServic e(
  614                                               this,
  615                                               Passthroug hDataSourc eSpi.class ,
  616                                               Federation Passthroug hDataSourc eServiceV8 .SUPPORTED _PROTOCOL,
  617                                               8.0F,
  618                                               Federation Passthroug hDataSourc eServiceV8 .class)
  619                                      );
  620                    serv ices.add(
  621                                      new Prov iderServic e(
  622                                               this,
  623                                               StudyGraph DataSource Spi.class,
  624                                               Federation StudyGraph DataSource ServiceV8. SUPPORTED_ PROTOCOL,
  625                                               8.0F,
  626                                               Federation StudyGraph DataSource ServiceV8. class)
  627                                      );
  628                    serv ices.add(
  629                                      new Prov iderServic e(
  630                                               this,
  631                                               VistaRadDa taSourceSp i.class,
  632                                               Federation VistaRadDa taSourceSe rviceV8.SU PPORTED_PR OTOCOL,
  633                                               8.0F,
  634                                               Federation VistaRadDa taSourceSe rviceV8.cl ass)
  635                                      );
  636                    serv ices.add(
  637                                      new Prov iderServic e(
  638                                               this,
  639                                               VistaRadIm ageDataSou rceSpi.cla ss,
  640                                               Federation VistaRadIm ageDataSou rceService V8.SUPPORT ED_PROTOCO L,
  641                                               8.0F,
  642                                               Federation VistaRadIm ageDataSou rceService V8.class)
  643                                      );
  644                    serv ices.add(
  645                                      new Prov iderServic e(
  646                                               this, 
  647                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  648                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  649                                               8.0F,
  650                                               Federation ExternalSy stemOperat ionDataSou rceService V8.class)
  651                             );       
  652                    serv ices.add(
  653                                      new Prov iderServic e(
  654                                               this,
  655                                               PatientDat aSourceSpi .class,
  656                                               Federation PatientDat aSourceSer viceV8.SUP PORTED_PRO TOCOL,
  657                                               8.0F,
  658                                               Federation PatientDat aSourceSer viceV8.cla ss)
  659                                      );
  660                    serv ices.add(
  661                                      new Prov iderServic e(
  662                                               this,
  663                                               UserDataSo urceSpi.cl ass,
  664                                               Federation UserDataSo urceServic eV8.SUPPOR TED_PROTOC OL,
  665                                               8.0F,
  666                                               Federation UserDataSo urceServic eV8.class)
  667                                      );
  668                    serv ices.add(
  669                                      new Prov iderServic e(
  670                                               this, 
  671                                               ExternalPa ckageDataS ourceSpi.c lass,
  672                                               Federation ExternalPa ckageDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  673                                               8.0F,
  674                                               Federation ExternalPa ckageDataS ourceServi ceV8.class )
  675                                      );
  676                    serv ices.add(
  677                                      new Prov iderServic e(
  678                                               this, 
  679                                               ImageAcces sLoggingSp i.class,
  680                                               Federation ImageAcces sLoggingDa taSourceSe rviceV8.SU PPORTED_PR OTOCOL,
  681                                               8.0F,
  682                                               Federation ImageAcces sLoggingDa taSourceSe rviceV8.cl ass)
  683                             );       
  684                    serv ices.add(
  685                                      new Prov iderServic e(
  686                                               this,
  687                                               PatientArt ifactDataS ourceSpi.c lass,
  688                                               Federation PatientArt ifactDataS ourceServi ceV8.SUPPO RTED_PROTO COL,
  689                                               8.0F,
  690                                               Federation PatientArt ifactDataS ourceServi ceV8.class )
  691                             );
  692  
  693                    // v ersion 9 s ervices
  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   }