38. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 7/10/2017 1:01:43 PM 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.

38.1 Files compared

# Location File Last Modified
1 C:\AraxisMergeCompare\Pri_un\IV-ehmp_cif\FederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource FederationDataSourceProvider.java Thu Jun 29 17:22:23 2017 UTC
2 C:\AraxisMergeCompare\Pri_re\IV-ehmp_cif\FederationDataSourceProvider\main\src\java\gov\va\med\imaging\federationdatasource FederationDataSourceProvider.java Thu Jul 6 15:01:41 2017 UTC

38.2 Comparison summary

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

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

38.4 Active regular expressions

No regular expressions were active.

38.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  
  65   import jav a.util.Col lections;
  66   import jav a.util.Sor tedSet;
  67   import jav a.util.Tre eSet;
  68  
  69   import org .apache.lo g4j.Logger ;
  70  
  71   /**
  72    * @author         
WERFEJ
  73    * 
  74    */
  75   public cla ss Federat ionDataSou rceProvide r extends  Provider
  76   {
  77           pr ivate stat ic final S tring PROV IDER_NAME  = "Federat ionDataSou rce";
  78           pr ivate stat ic final d ouble PROV IDER_VERSI ON = 1.0d;
  79           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.";
  80  
  81           pr ivate stat ic final l ong serial VersionUID  = 1L;
  82           pr ivate fina l static L ogger logg er = Logge r.getLogge r(Federati onDataSour ceProvider .class);
  83           pr ivate stat ic Federat ionConfigu ration fed erationCon figuration  = null;
  84           pr ivate fina l SortedSe t<Provider Service> s ervices;
  85  
  86           /* *
  87            *  The publi c "nullary " construc tor that i s used by  the Servic eLoader cl ass
  88            *  to create  instances .
  89            * /
  90           pu blic Feder ationDataS ourceProvi der()
  91           {
  92                    this (PROVIDER_ NAME, PROV IDER_VERSI ON, PROVID ER_INFO);
  93           }
  94           
  95           /* *
  96            *  A special  construct or that is  only used  for creat ing a conf iguration
  97            *  file.
  98            *  
  99            *  @param ex changeConf iguration
  100            * /
  101           pr ivate Fede rationData SourceProv ider(Feder ationConfi guration f ederationC onfigurati on) 
  102           {
  103                    this ();
  104                    Fede rationData SourceProv ider.feder ationConfi guration =  federatio nConfigura tion;
  105           }
  106  
  107           /* *
  108            *  @param na me
  109            *  @param ve rsion
  110            *  @param in fo
  111            * /
  112           pr ivate Fede rationData SourceProv ider(Strin g name, do uble versi on, String  info)
  113           {
  114                    supe r(name, ve rsion, inf o);
  115  
  116                    serv ices = new  TreeSet<P roviderSer vice>();
  117                    // 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)
  118                    /*
  119                    serv ices.add(
  120                             new Pr ovider.Ser vice(
  121                                      DataSour ceServices .StudyGrap hDataSourc e,
  122                                      Federati onStudyGra phDataSour ceService. SUPPORTED_ PROTOCOL,
  123                                      1.0F,
  124                                      Federati onStudyGra phDataSour ceService. class)
  125                    );
  126                    serv ices.add(
  127                             new Pr ovider.Ser vice(
  128                                      DataSour ceServices .StudyGrap hDataSourc e,
  129                                      Federati onStudyGra phDataSour ceServiceV 2.SUPPORTE D_PROTOCOL ,
  130                                      2.0F,
  131                                      Federati onStudyGra phDataSour ceServiceV 2.class)
  132                    );*/
  133                    serv ices.add(
  134                             new Pr oviderServ ice(
  135                                      this, 
  136                                      StudyGra phDataSour ceSpi.clas s,
  137                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  138                                      3.0F,
  139                                      Federati onStudyGra phDataSour ceServiceV 3.class)
  140                    );
  141                    /*
  142                    serv ices.add(
  143                             new Pr ovider.Ser vice(
  144                                      DataSour ceServices .ImageData Source,
  145                                      Federati onImageDat aSourceSer vice.SUPPO RTED_PROTO COL,
  146                                      1.0F,
  147                                      Federati onImageDat aSourceSer vice.class )
  148                    );
  149                    serv ices.add(
  150                             new Pr ovider.Ser vice(
  151                                      DataSour ceServices .ImageData Source,
  152                                      Federati onImageDat aSourceSer viceV2.SUP PORTED_PRO TOCOL,
  153                                      2.0F,
  154                                      Federati onImageDat aSourceSer viceV2.cla ss)
  155                    );*/
  156                    serv ices.add(
  157                             new Pr oviderServ ice(
  158                                      this, 
  159                                      ImageDat aSourceSpi .class,
  160                                      Abstract Federation ImageDataS ourceServi ce.SUPPORT ED_PROTOCO L,
  161                                      3.0F,
  162                                      Federati onImageDat aSourceSer viceV3.cla ss)
  163                    );
  164                    /*
  165                    serv ices.add(
  166                             new Pr ovider.Ser vice(
  167                                      DataSour ceServices .ImageAcce ssLoggingD ataSource,
  168                                      Federati onImageAcc essLogging DataSource Service.SU PPORTED_PR OTOCOL,
  169                                      1.0F,
  170                                      Federati onImageAcc essLogging DataSource Service.cl ass)
  171                    );
  172                    serv ices.add(
  173                             new Pr ovider.Ser vice(
  174                                      DataSour ceServices .ImageAcce ssLoggingD ataSource,
  175                                      Federati onImageAcc essLogging DataSource ServiceV2. SUPPORTED_ PROTOCOL,
  176                                      2.0F,
  177                                      Federati onImageAcc essLogging DataSource ServiceV2. class)
  178                    );*/
  179                    serv ices.add(
  180                             new Pr oviderServ ice(
  181                                      this, 
  182                                      ImageAcc essLogging Spi.class,
  183                                      Federati onImageAcc essLogging DataSource ServiceV3. SUPPORTED_ PROTOCOL,
  184                                      3.0F,
  185                                      Federati onImageAcc essLogging DataSource ServiceV3. class)
  186                    );
  187                    /*
  188                    serv ices.add(
  189                             new Pr ovider.Ser vice(
  190                                      DataSour ceServices .PatientDa taSource,
  191                                      Federati onPatientD ataSourceS ervice.SUP PORTED_PRO TOCOL,
  192                                      1.0F,
  193                                      Federati onPatientD ataSourceS ervice.cla ss)
  194                    );
  195                    serv ices.add(
  196                             new Pr ovider.Ser vice(
  197                                      DataSour ceServices .PatientDa taSource,
  198                                      Federati onPatientD ataSourceS erviceV2.S UPPORTED_P ROTOCOL,
  199                                      2.0F,
  200                                      Federati onPatientD ataSourceS erviceV2.c lass)
  201                    );*/
  202                    serv ices.add(
  203                             new Pr oviderServ ice(
  204                                      this, 
  205                                      PatientD ataSourceS pi.class,
  206                                      Federati onPatientD ataSourceS erviceV3.S UPPORTED_P ROTOCOL,
  207                                      3.0F,
  208                                      Federati onPatientD ataSourceS erviceV3.c lass)
  209                    );
  210                    /*
  211                     //  version 2  and 3 of t he Externa lPackageDa taSource f or Federat ion is no  longer use d because
  212                     //  it contain s a bug th at will on ly retriev e some of  the possib le images  associated  with a 
  213                     //  CPRS ident ifier, to  prevent th is bug fro m occuring , these da ta sources  are disab led and
  214                     //  version 4  must be us ed
  215                    serv ices.add(
  216                             new Pr ovider.Ser vice(
  217                                      DataSour ceServices .ExternalP ackageData Source,
  218                                      Federati onExternal PackageDat aSourceSer viceV2.SUP PORTED_PRO TOCOL,
  219                                      2.0F,
  220                                      Federati onExternal PackageDat aSourceSer viceV2.cla ss)
  221                    );
  222                    serv ices.add(
  223                             new Pr ovider.Ser vice(
  224                                      DataSour ceServices .ExternalP ackageData Source,
  225                                      Federati onExternal PackageDat aSourceSer viceV3.SUP PORTED_PRO TOCOL,
  226                                      3.0F,
  227                                      Federati onExternal PackageDat aSourceSer viceV3.cla ss)
  228                    );*/
  229                    // v ersion 1 o f the Docu ment and D ocumentSet  data sour ce for Fed eration ar e disabled  because
  230                    // t hey do not  support b ase32 conv ersions pr operly (se e comment  above abou t versions  1 and 2)
  231                    /*
  232                    serv ices.add(
  233                             new Pr ovider.Ser vice(
  234                                      DataSour ceServices .DocumentD ataSource,
  235                                      Federati onDocument DataSource Service.SU PPORTED_PR OTOCOL,
  236                                      1.0F,
  237                                      Federati onDocument DataSource Service.cl ass)
  238                    );
  239                    serv ices.add(
  240                             new Pr ovider.Ser vice(
  241                                      DataSour ceServices .DocumentS etDataSour ce,
  242                                      Federati onDocument SetDataSou rceService .SUPPORTED _PROTOCOL,
  243                                      1.0F,
  244                                      Federati onDocument SetDataSou rceService .class)
  245                    );*/
  246                    serv ices.add(
  247                             new Pr oviderServ ice(
  248                                      this, 
  249                                      Document SetDataSou rceSpi.cla ss,
  250                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  251                                      3.0F,
  252                                      Federati onDocument SetDataSou rceService V3.class)
  253                    );
  254                    serv ices.add(
  255                                      new Prov iderServic e(
  256                                               this, 
  257                                               DocumentDa taSourceSp i.class,
  258                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  259                                               3.0F,
  260                                               Federation DocumentDa taSourceSe rviceV3.cl ass)
  261                             );               
  262                    serv ices.add(
  263                             new Pr oviderServ ice(
  264                                      this, 
  265                                      VistaRad DataSource Spi.class,
  266                                      Abstract Federation VistaRadDa taSourceSe rvice.SUPP ORTED_PROT OCOL,
  267                                      3.0F,
  268                                      Federati onVistaRad DataSource ServiceV3. class)
  269                    );
  270                    serv ices.add(
  271                             new Pr oviderServ ice(
  272                                      this, 
  273                                      VistaRad ImageDataS ourceSpi.c lass,
  274                                      Abstract Federation ImageDataS ourceServi ce.SUPPORT ED_PROTOCO L,
  275                                      3.0F,
  276                                      Federati onVistaRad ImageDataS ourceServi ceV3.class )
  277                    );
  278                    serv ices.add(
  279                             new Pr oviderServ ice(
  280                                      this, 
  281                                      Passthro ughDataSou rceSpi.cla ss,
  282                                      Abstract Federation Passthroug hDataSourc eService.S UPPORTED_P ROTOCOL,
  283                                      3.0F,
  284                                      Federati onPassthro ughDataSou rceService V3.class)
  285                    );
  286                    serv ices.add(
  287                             new Pr oviderServ ice(
  288                                      this,
  289                                      PatientA rtifactDat aSourceSpi .class,
  290                                      Federati onStudyGra phDataSour ceServiceV 3.SUPPORTE D_PROTOCOL ,
  291                                      3.0F,
  292                                      Federati onPatientA rtifactDat aSourceSer viceV3.cla ss)
  293                    );
  294                    
  295                    // J MW disable  REST web  services f or now, en able for P atch 104
  296                    ///*
  297                    serv ices.add(
  298                                      new Prov iderServic e(
  299                                               this, 
  300                                               DocumentSe tDataSourc eSpi.class ,
  301                                               Federation DocumentSe tDataSourc eServiceV4 .SUPPORTED _PROTOCOL,
  302                                               4.0F,
  303                                               Federation DocumentSe tDataSourc eServiceV4 .class)
  304                             );
  305                             
  306                             servic es.add(
  307                                      new Prov iderServic e(
  308                                               this, 
  309                                               DocumentDa taSourceSp i.class,
  310                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  311                                               4.0F,
  312                                               Federation DocumentDa taSourceSe rviceV4.cl ass)
  313                             );
  314                    serv ices.add(
  315                                      new Prov iderServic e(
  316                                               this, 
  317                                               StudyGraph DataSource Spi.class,
  318                                               Federation StudyGraph DataSource ServiceV4. SUPPORTED_ PROTOCOL,
  319                                               4.0F,
  320                                               Federation StudyGraph DataSource ServiceV4. class)
  321                             );               
  322                    
  323                    serv ices.add(
  324                                      new Prov iderServic e(
  325                                               this, 
  326                                               PatientDat aSourceSpi .class,
  327                                               Federation PatientDat aSourceSer viceV4.SUP PORTED_PRO TOCOL,
  328                                               4.0F,
  329                                               Federation PatientDat aSourceSer viceV4.cla ss)
  330                             );
  331                    
  332                    serv ices.add(
  333                                      new Prov iderServic e(
  334                                               this, 
  335                                               StudyGraph DataSource Spi.class,
  336                                               Federation StudyGraph DataSource ServiceV4. SUPPORTED_ PROTOCOL,
  337                                               4.0F,
  338                                               Federation StudyGraph DataSource ServiceV4. class)
  339                             );
  340                    
  341                    serv ices.add(
  342                                      new Prov iderServic e(
  343                                               this, 
  344                                               Passthroug hDataSourc eSpi.class ,
  345                                               AbstractFe derationPa ssthroughD ataSourceS ervice.SUP PORTED_PRO TOCOL,
  346                                               4.0F,
  347                                               Federation Passthroug hDataSourc eServiceV4 .class)
  348                             );
  349                    
  350                    serv ices.add(
  351                                      new Prov iderServic e(
  352                                               this, 
  353                                               VistaRadDa taSourceSp i.class,
  354                                               AbstractFe derationVi staRadData SourceServ ice.SUPPOR TED_PROTOC OL,
  355                                               4.0F,
  356                                               Federation VistaRadDa taSourceSe rviceV4.cl ass)
  357                             );
  358                    
  359                    serv ices.add(
  360                                      new Prov iderServic e(
  361                                               this, 
  362                                               ImageAcces sLoggingSp i.class,
  363                                               Federation ImageAcces sLoggingDa taSourceSe rviceV4.SU PPORTED_PR OTOCOL,
  364                                               4.0F,
  365                                               Federation ImageAcces sLoggingDa taSourceSe rviceV4.cl ass)
  366                             );
  367                    
  368                    serv ices.add(
  369                                      new Prov iderServic e(
  370                                               this, 
  371                                               ImageDataS ourceSpi.c lass,
  372                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  373                                               4.0F,
  374                                               Federation ImageDataS ourceServi ceV4.class )
  375                             );
  376                    
  377                    serv ices.add(
  378                                      new Prov iderServic e(
  379                                               this, 
  380                                               ExternalPa ckageDataS ourceSpi.c lass,
  381                                               Federation ExternalPa ckageDataS ourceServi ceV4.SUPPO RTED_PROTO COL,
  382                                               4.0F,
  383                                               Federation ExternalPa ckageDataS ourceServi ceV4.class )
  384                             );
  385                                              
  386                    serv ices.add(
  387                                      new Prov iderServic e(
  388                                               this, 
  389                                               VistaRadIm ageDataSou rceSpi.cla ss,
  390                                               AbstractFe derationIm ageDataSou rceService .SUPPORTED _PROTOCOL,
  391                                               4.0F,
  392                                               Federation VistaRadIm ageDataSou rceService V4.class)
  393                             );                                 
  394                    
  395                    serv ices.add(
  396                                      new Prov iderServic e(
  397                                               this, 
  398                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  399                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  400                                               4.0F,
  401                                               Federation ExternalSy stemOperat ionDataSou rceService V4.class)
  402                             );       
  403                    serv ices.add(
  404                             new Pr oviderServ ice(
  405                                      this,
  406                                      PatientA rtifactDat aSourceSpi .class,
  407                                      Federati onPatientA rtifactDat aSourceSer viceV4.SUP PORTED_PRO TOCOL,
  408                                      4.0F,
  409                                      Federati onPatientA rtifactDat aSourceSer viceV4.cla ss)
  410                             );
  411                    
  412                    // v ersion 5 s ervices
  413                    serv ices.add(
  414                                      new Prov iderServic e(
  415                                               this,
  416                                               DocumentDa taSourceSp i.class,
  417                                               Federation DocumentDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  418                                               5.0F,
  419                                               Federation DocumentDa taSourceSe rviceV5.cl ass)
  420                                      );
  421                    serv ices.add(
  422                                      new Prov iderServic e(
  423                                               this,
  424                                               DocumentSe tDataSourc eSpi.class ,
  425                                               Federation DocumentSe tDataSourc eServiceV5 .SUPPORTED _PROTOCOL,
  426                                               5.0F,
  427                                               Federation DocumentSe tDataSourc eServiceV5 .class)
  428                                      );
  429                    serv ices.add(
  430                                      new Prov iderServic e(
  431                                               this,
  432                                               ExternalPa ckageDataS ourceSpi.c lass,
  433                                               Federation ExternalPa ckageDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  434                                               5.0F,
  435                                               Federation ExternalPa ckageDataS ourceServi ceV5.class )
  436                                      );
  437                    serv ices.add(
  438                                      new Prov iderServic e(
  439                                               this,
  440                                               ImageAcces sLoggingSp i.class,
  441                                               Federation ImageAcces sLoggingDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  442                                               5.0F,
  443                                               Federation ImageAcces sLoggingDa taSourceSe rviceV5.cl ass)
  444                                      );
  445                    serv ices.add(
  446                                      new Prov iderServic e(
  447                                               this,
  448                                               ImageAnnot ationDataS ourceSpi.c lass,
  449                                               Federation ImageAnnot ationDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  450                                               5.0F,
  451                                               Federation ImageAnnot ationDataS ourceServi ceV5.class )
  452                                      );
  453                    serv ices.add(
  454                                      new Prov iderServic e(
  455                                               this,
  456                                               ImageDataS ourceSpi.c lass,
  457                                               Federation ImageDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  458                                               5.0F,
  459                                               Federation ImageDataS ourceServi ceV5.class )
  460                                      );
  461                    serv ices.add(
  462                                      new Prov iderServic e(
  463                                               this,
  464                                               Passthroug hDataSourc eSpi.class ,
  465                                               Federation Passthroug hDataSourc eServiceV5 .SUPPORTED _PROTOCOL,
  466                                               5.0F,
  467                                               Federation Passthroug hDataSourc eServiceV5 .class)
  468                                      );
  469                    serv ices.add(
  470                                      new Prov iderServic e(
  471                                               this,
  472                                               PatientArt ifactDataS ourceSpi.c lass,
  473                                               Federation PatientArt ifactDataS ourceServi ceV5.SUPPO RTED_PROTO COL,
  474                                               5.0F,
  475                                               Federation PatientArt ifactDataS ourceServi ceV5.class )
  476                                      );
  477                    serv ices.add(
  478                                      new Prov iderServic e(
  479                                               this,
  480                                               PatientDat aSourceSpi .class,
  481                                               Federation PatientDat aSourceSer viceV5.SUP PORTED_PRO TOCOL,
  482                                               5.0F,
  483                                               Federation PatientDat aSourceSer viceV5.cla ss)
  484                                      );
  485                    serv ices.add(
  486                                      new Prov iderServic e(
  487                                               this,
  488                                               StudyGraph DataSource Spi.class,
  489                                               Federation StudyGraph DataSource ServiceV5. SUPPORTED_ PROTOCOL,
  490                                               5.0F,
  491                                               Federation StudyGraph DataSource ServiceV5. class)
  492                                      );
  493                    serv ices.add(
  494                                      new Prov iderServic e(
  495                                               this,
  496                                               UserDataSo urceSpi.cl ass,
  497                                               Federation UserDataSo urceServic eV5.SUPPOR TED_PROTOC OL,
  498                                               5.0F,
  499                                               Federation UserDataSo urceServic eV5.class)
  500                                      );
  501                    serv ices.add(
  502                                      new Prov iderServic e(
  503                                               this,
  504                                               VistaRadDa taSourceSp i.class,
  505                                               Federation VistaRadDa taSourceSe rviceV5.SU PPORTED_PR OTOCOL,
  506                                               5.0F,
  507                                               Federation VistaRadDa taSourceSe rviceV5.cl ass)
  508                                      );
  509                    serv ices.add(
  510                                      new Prov iderServic e(
  511                                               this,
  512                                               VistaRadIm ageDataSou rceSpi.cla ss,
  513                                               Federation VistaRadIm ageDataSou rceService V5.SUPPORT ED_PROTOCO L,
  514                                               5.0F,
  515                                               Federation VistaRadIm ageDataSou rceService V5.class)
  516                                      );
  517                    serv ices.add(
  518                                      new Prov iderServic e(
  519                                               this, 
  520                                               ExternalSy stemOperat ionsDataSo urceSpi.cl ass,
  521                                               AbstractFe derationEx ternalSyst emOperatio nDataSourc eService.S UPPORTED_P ROTOCOL,
  522                                               5.0F,
  523                                               Federation ExternalSy stemOperat ionDataSou rceService V5.class)
  524                             );       
  525                    
  526                    // v ersion 6 s ervices
  527                    serv ices.add(
  528                                      new Prov iderServic e(
  529                                               this,
  530                                               PatientDat aSourceSpi .class,
  531                                               Federation PatientDat aSourceSer viceV6.SUP PORTED_PRO TOCOL,
  532                                               6.0F,
  533                                               Federation PatientDat aSourceSer viceV6.cla ss)
  534                                      );
  535                    serv ices.add(
  536                                      new Prov iderServic e(
  537                                               this,
  538                                               UserDataSo urceSpi.cl ass,
  539                                               Federation UserDataSo urceServic eV6.SUPPOR TED_PROTOC OL,
  540                                               6.0F,
  541                                               Federation UserDataSo urceServic eV6.class)
  542                                      );
  543                    serv ices.add(
  544                                      new Prov iderServic e(
  545                                               this, 
  546                                               ExternalPa ckageDataS ourceSpi.c lass,
  547                                               Federation ExternalPa ckageDataS ourceServi ceV6.SUPPO RTED_PROTO COL,
  548                                               6.0F,
  549                                               Federation ExternalPa ckageDataS ourceServi ceV6.class )
  550                                      );
  551                    // v ersion 7 s ervices
  552                    serv ices.add(
  553                                      new Prov iderServic e(
  554                                               this, 
  555                                               ImageAcces sLoggingSp i.class,
  556                                               Federation ImageAcces sLoggingDa taSourceSe rviceV7.SU PPORTED_PR OTOCOL,
  557                                               7.0F,
  558                                               Federation ImageAcces sLoggingDa taSourceSe rviceV7.cl ass)
  559                             );       
  560                             
  561                                      
  562                    // l oad the Fe derationCo nfiguratio n if it ex ists
  563                    sync hronized(F ederationD ataSourceP rovider.cl ass)
  564                {
  565                             try
  566                             {
  567                                      if(feder ationConfi guration = = null)
  568                                      {
  569                                               federation Configurat ion = (Fed erationCon figuration )loadConfi guration() ;
  570                                               if(federat ionConfigu ration !=  null)
  571                                               {
  572                                                       Fe derationPr oxyUtiliti es.configu reFederati onCertific ate(federa tionConfig uration);
  573                                               }
  574                                      }
  575                             }
  576                             catch( ClassCastE xception c cX)
  577                             {
  578                                      logger.e rror("Unab le to load  configura tion becau se the con figuration  file is i nvalid.",  ccX);
  579                             }
  580                }
  581           }
  582           
  583           /* *
  584            *  
  585            * /
  586           @O verride
  587           pu blic void  storeConfi guration()
  588       {
  589                storeCon figuration (getFedera tionConfig uration()) ;
  590       }
  591           
  592           /* *
  593            *  A package  level met hod for SP I implemen tation to  get the
  594            *  Configura tion.
  595            *  
  596            *  @return
  597            * /
  598           st atic Feder ationConfi guration g etFederati onConfigur ation()
  599           {
  600                    if(f ederationC onfigurati on == null )
  601                             logger .error("Fe derationCo nfiguratio n is null,  possibly  called bef ore Federa tionDataSo urceProvid er was ins tantiated. ");
  602                    
  603                    retu rn federat ionConfigu ration;
  604           }
  605  
  606           @O verride
  607           pu blic Sorte dSet<Provi derService > getServi ces()
  608           {
  609                    retu rn Collect ions.unmod ifiableSor tedSet(ser vices);
  610           }
  611           
  612           /* *
  613            *  Main func tion to cr eate a Fed eration Da ta Source  configurat ion file. 
  614            *  The trust store pass word and t he keystor e password  must be p rovided, a ll other p arameters  are option al.
  615            *  Required  Arguments:
  616            *       -tru ststorePas sword <tru ststore pa ssword>
  617            *   -keystor ePassword  <keystore  password>
  618            *  
  619            *  Optional  arguments  include:
  620            *   -keystor eUrl <keys tore URL>
  621            *   -trustst oreUrl <tr uststore U RL>
  622            *   -federat ionSslProt ocol <Fede ration SSL  protocol>
  623            *  
  624            *  @param ar gs Argumen ts shown a bove
  625            * /
  626           pu blic stati c void mai n(String [ ] args)
  627           {
  628                    Syst em.out.pri ntln("Crea ting excha nge dataso urce confi guration f ile");
  629                    
  630                    Stri ng trustst orePasswor d = null;
  631                    Stri ng keystor ePassword  = null;
  632                    Stri ng trustst oreUrl = n ull;
  633                    Stri ng keystor eUrl = nul l;
  634                    Stri ng federat ionSslProt ocol = nul l;
  635                    int  metadataTi meout = 0;
  636                    bool ean addCom pression =  true;
  637                    for( int i = 0;  i < args. length; i+ +)
  638                    {
  639                             if("-t ruststoreP assword".e quals(args [i]))
  640                             {
  641                                      truststo rePassword  = args[++ i];
  642                             }
  643                             else i f("-keysto rePassword ".equals(a rgs[i]))
  644                             {
  645                                      keystore Password =  args[++i] ;
  646                             }
  647                             else i f("-keysto reUrl".equ als(args[i ]))
  648                             {
  649                                      keystore Url = args [++i];
  650                             }
  651                             else i f("-trusts toreUrl".e quals(args [i]))
  652                             {
  653                                      truststo reUrl = ar gs[++i];
  654                             }
  655                             else i f("-federa tionSslPro tocol".equ als(args[i ]))
  656                             {
  657                                      federati onSslProto col = args [++i];
  658                             }
  659                             else i f("-metada taTimeout" .equalsIgn oreCase(ar gs[i]))
  660                             {
  661                                      metadata Timeout =  Integer.pa rseInt(arg s[++i]);
  662                             }
  663                             else i f("-addCom pression". equalsIgno reCase(arg s[i]))
  664                             {
  665                                      addCompr ession = B oolean.par seBoolean( args[++i]) ;
  666                             }
  667                    }
  668                    Fede rationConf iguration  fedConfigu ration = F ederationC onfigurati on.createC onfigurati on(keystor eUrl, 
  669                                      keystore Password,  truststore Url, trust storePassw ord, feder ationSslPr otocol);
  670                    if(m etadataTim eout > 0)          
  671                             fedCon figuration .setMetada taTimeoutM s(metadata Timeout);
  672                    fedC onfigurati on.setAddC ompression ForImageRe quests(add Compressio n);
  673                    Fede rationData SourceProv ider provi der = new  Federation DataSource Provider(f edConfigur ation);
  674                    prov ider.store Configurat ion();
  675                    Syst em.out.pri ntln("Conf iguration  file saved  to '" + p rovider.ge tConfigura tionFileNa me() + "'. ");
  676           }
  677   }