64. EPMO Open Source Coordination Office Redaction File Detail Report

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

64.1 Files compared

# Location File Last Modified
1 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\CacheImplMemory\main\src\java\gov\va\med\imaging\storage\cache\impl\memory MemoryCache.java Mon Dec 4 21:35:30 2017 UTC
2 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\CacheImplMemory\main\src\java\gov\va\med\imaging\storage\cache\impl\memory MemoryCache.java Mon Dec 4 21:57:51 2017 UTC

64.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 1072
Changed 1 2
Inserted 0 0
Removed 0 0

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

64.4 Active regular expressions

No regular expressions were active.

64.5 Comparison detail

  1   /**
  2    * 
  3    */
  4   package go v.va.med.i maging.sto rage.cache .impl.memo ry;
  5  
  6   import gov .va.med.im aging.stor age.cache. *;
  7   import gov .va.med.im aging.stor age.cache. events.Gro upLifecycl eEvent;
  8   import gov .va.med.im aging.stor age.cache. events.Gro upLifecycl eListener;
  9   import gov .va.med.im aging.stor age.cache. events.Ins tanceLifec ycleEvent;
  10   import gov .va.med.im aging.stor age.cache. events.Ins tanceLifec ycleListen er;
  11   import gov .va.med.im aging.stor age.cache. exceptions .CacheExce ption;
  12   import gov .va.med.im aging.stor age.cache. exceptions .CacheStat eException ;
  13   import gov .va.med.im aging.stor age.cache. exceptions .RegionDoe sNotExistE xception;
  14   import gov .va.med.im aging.stor age.cache. exceptions .RegionIni tializatio nException ;
  15   import gov .va.med.im aging.stor age.cache. impl.memor y.data.Mem oryInstanc eDataFacto ry;
  16   import gov .va.med.im aging.stor age.cache. impl.memor y.memento. MemoryCach eMemento;
  17   import gov .va.med.im aging.stor age.cache. memento.Ev ictionStra tegyMement o;
  18   import gov .va.med.im aging.stor age.cache. memento.Re gionMement o;
  19  
  20   import jav a.net.URI;
  21   import jav a.util.*;
  22  
  23   import org .apache.lo gging.log4 j.LogManag er;
  24   import org .apache.lo gging.log4 j.Logger;
  25  
  26   /**
  27    * @author         
BECKEC
  28    *
  29    */
  30   public cla ss MemoryC ache 
  31   implements  Cache
  32   {
  33           pu blic final  static St ring proto col = "tra nsient";
  34           pr ivate fina l URI loca tionUri;
  35           pr ivate fina l String n ame;
  36           pr ivate fina l Eviction Timer evic tionTimer;
  37           pr ivate fina l Logger l ogger = Lo gManager.g etLogger(t his.getCla ss());
  38           
  39           pr ivate Bool ean enable d = Boolea n.TRUE;
  40           pr ivate Bool ean initia lized = Bo olean.TRUE ;
  41           pr ivate Coll ection<Evi ctionStrat egy> evict ionStrateg ies = new  HashSet<Ev ictionStra tegy>();
  42           pr ivate Coll ection<Reg ion> regio ns = new H ashSet<Reg ion>();
  43           pr ivate Coll ection<Cac heStructur eChangeLis tener> cac heStructur eChangeLis teners = n ew ArrayLi st<CacheSt ructureCha ngeListene r>();
  44           pr ivate fina l MemoryIn stanceData Factory in stanceData Factory;
  45           pr ivate fina l MemoryIn stanceByte ChannelFac tory insta nceByteCha nnelFactor y;
  46           pr ivate fina l MemoryRe gionFactor y regionFa ctory;         
  47           pr ivate fina l GroupFac tory group Factory;
  48           pr ivate fina l Instance Factory in stanceFact ory;
  49           
  50           pu blic stati c MemoryCa che create (String na me, URI lo cationUri,  EvictionT imer evict ionTimer)
  51           {
  52                    retu rn new Mem oryCache(n ame, locat ionUri, ev ictionTime r);
  53           }
  54           
  55           /* *
  56            *  
  57            *  @param na me
  58            *  @param lo cationUri  - a URI in  the forma
  59            *    memory: //ram&maxS ize=100000 ?maxInstan ceCount=10 0
  60            *  @param ev ictionTime r
  61            * /
  62           pr ivate Memo ryCache(St ring name,  URI locat ionUri, Ev ictionTime r eviction Timer)
  63           {
  64                    supe r();
  65                    this .locationU ri = locat ionUri;
  66                    pars eLocationU ri();
  67                    this .evictionT imer = evi ctionTimer ;
  68                    this .name = na me;
  69                    inst anceDataFa ctory = ne w MemoryIn stanceData Factory(ge tMaxCacheS ize());
  70                    inst anceByteCh annelFacto ry = new M emoryInsta nceByteCha nnelFactor y(instance DataFactor y);
  71                    
  72                    Life cycleLogge r lifecycl eLogger =  new Lifecy cleLogger( );
  73                    
  74                    inst anceFactor y = new Me moryInstan ceFactory( instanceBy teChannelF actory, li fecycleLog ger);
  75                    grou pFactory =  new Memor yGroupFact ory(lifecy cleLogger,  instanceF actory);
  76                    regi onFactory  = new Memo ryRegionFa ctory(getG roupFactor y(), getIn stanceFact ory()); 
  77           }
  78  
  79           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== =====
  80           //  Immutable  Propertie s
  81           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== =====
  82           @O verride
  83           pu blic Strin g getName( )
  84           {
  85                    retu rn this.na me;
  86           }
  87  
  88           /* *
  89            *  @return t he regionF actory
  90            * /
  91           pu blic Memor yRegionFac tory getRe gionFactor y()
  92           {
  93                    retu rn this.re gionFactor y;
  94           }
  95  
  96           /* *
  97            *  @return t he groupFa ctory
  98            * /
  99           pu blic Group Factory ge tGroupFact ory()
  100           {
  101                    retu rn this.gr oupFactory ;
  102           }
  103  
  104           /* *
  105            *  @return t he instanc eDataFacto ry
  106            * /
  107           pu blic Memor yInstanceD ataFactory  getInstan ceDataFact ory()
  108           {
  109                    retu rn this.in stanceData Factory;
  110           }
  111  
  112           /* *
  113            *  @return t he instanc eFactory
  114            * /
  115           pu blic Insta nceFactory  getInstan ceFactory( )
  116           {
  117                    retu rn this.in stanceFact ory;
  118           }
  119           
  120           /* *
  121            *  The URI m ay be inte rpreted as  follows:
  122            *  transient ://<name>[ ? + [maxSi ze=<cache- size>] + [ maxInstanc es=<instan ce-count>] ]
  123            *  where: 
  124            *  <name> is  the cache  identifie r
  125            *  <cache-si ze> is a p ositive in teger spec ifying the  maximum s ize of all  cache mem bers (in b ytes)
  126            *  <instance -count> is  a positiv e integer  specifying  the maxim um number  of instanc es in the  cache
  127            * /
  128           pr ivate Stri ng locatio nPath;
  129           pr ivate Stri ng locatio nProtocol;
  130           pr ivate int  maxInstanc eCount = I nteger.MAX _VALUE;
  131           pr ivate long  maxCacheS ize = Long .MAX_VALUE ;
  132           
  133           pr ivate void  parseLoca tionUri()
  134           {
  135                    loca tionPath =  getLocati onUri().ge tPath();
  136                    loca tionProtoc ol = getLo cationUri( ).getAutho rity();
  137                    Stri ng query =  getLocati onUri().ge tQuery();
  138                    if(q uery != nu ll)
  139                    {
  140                             String [] queryPa rameters =  query.spl it("&");
  141                             for(St ring query Parameter  : queryPar ameters)
  142                             {
  143                                      String[]  parsedQue ryParamete r = queryP arameter.s plit("=");
  144                                      if(parse dQueryPara meter.leng th == 2)
  145                                      {
  146                                               try
  147                                               {
  148                                                       if ("maxSize" .equals(pa rsedQueryP arameter[0 ]))
  149                                                                maxC acheSize =  Long.pars eLong( par sedQueryPa rameter[1]  );
  150                                                       el se if("max InstanceCo unt".equal s(parsedQu eryParamet er[0]))
  151                                                                maxI nstanceCou nt = Integ er.parseIn t( parsedQ ueryParame ter[1] );
  152                                              
  153                                               catch (Num berFormatE xception x )
  154                                               {
  155                                                       lo gger.warn( "Error ini tializing  parameter  '" + parse dQueryPara meter[0] +  "', value  must be p arsable as  a positiv e integer. ", x);
  156                                               }
  157                                      }
  158                             }
  159                    }
  160           }
  161           @O verride
  162           pu blic URI g etLocation Uri()
  163           {
  164                    retu rn locatio nUri;
  165           }
  166           @O verride
  167           pu blic Strin g getLocat ionPath()
  168           {
  169                    retu rn locatio nPath;
  170           }
  171           @O verride
  172           pu blic Strin g getLocat ionProtoco l()
  173           {
  174                    retu rn locatio nProtocol;
  175           }
  176           pu blic long  getMaxCach eSize()
  177           {
  178                    retu rn maxCach eSize;
  179           }
  180           pu blic long  getMaxInst anceCount( )
  181           {
  182                    retu rn maxInst anceCount;
  183           }
  184  
  185           pu blic long  getFreeSpa ce()
  186           {
  187                    retu rn instanc eDataFacto ry.getFree Space();
  188           }
  189           
  190           @O verride
  191           pu blic Evict ionTimer g etEviction Timer()
  192           {
  193                    retu rn evictio nTimer;
  194           }
  195  
  196           @O verride
  197           pu blic Insta nceByteCha nnelFactor y<?> getIn stanceByte ChannelFac tory()
  198           {
  199                    retu rn instanc eByteChann elFactory;
  200           }
  201           
  202           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== =====
  203           //  Mutable P roperties
  204           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== =====
  205           @O verride
  206           pu blic Boole an isEnabl ed()
  207           {
  208                    retu rn enabled ;
  209           }
  210           
  211           @O verride
  212           pu blic void  setEnabled (Boolean e nabled) 
  213           th rows Cache Exception
  214           {
  215                    this .enabled =  enabled;
  216           }
  217  
  218  
  219           @O verride
  220           pu blic Boole an isIniti alized()
  221           {
  222                    retu rn initial ized;
  223           }
  224           
  225           @O verride
  226           pu blic void  setInitial ized(Boole an initial ized) 
  227           th rows Cache Exception
  228           {
  229                    this .initializ ed = initi alized;
  230           }
  231  
  232           /* *
  233            *  
  234            * /
  235           @O verride
  236           pu blic Memor yCacheMeme nto create Memento()
  237           {
  238                    Memo ryCacheMem ento memen to = new M emoryCache Memento();
  239                    meme nto.setNam e(getName( ));
  240                    meme nto.setByt eChannelFa ctoryMemen to( getIns tanceByteC hannelFact ory().crea teMemento( ) );
  241                    meme nto.setEna bled(isEna bled().boo leanValue( ));
  242                    meme nto.setIni tialized(i sInitializ ed().boole anValue()) ;
  243                    
  244                    List <EvictionS trategyMem ento> esMe mentoes =  new ArrayL ist<Evicti onStrategy Memento>() ;
  245                    for( EvictionSt rategy evi ctionStrat egy : getE victionStr ategies())
  246                             esMeme ntoes.add(  evictionS trategy.cr eateMement o() );
  247                    meme nto.setEvi ctionStrat egyMemento s(esMement oes);
  248                    
  249                    meme nto.setLoc ationUri(g etLocation Uri().toSt ring());
  250                    
  251                    
  252                    List <RegionMem ento> regi onMementoe s = new Ar rayList<Re gionMement o>();
  253                    for( Region reg ion : getR egions())
  254                             region Mementoes. add( regio n.createMe mento() );
  255                    meme nto.setReg ionMemento s(regionMe mentoes);
  256                    
  257                    retu rn memento ;
  258           }
  259  
  260           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  261           //  Eviction  Strategies
  262           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  263           @O verride
  264           pu blic void  addEvictio nStrategie s(Collecti on<? exten ds Evictio nStrategy>  evictionS trategies)  
  265           th rows Cache StateExcep tion
  266           {
  267                    this .evictionS trategies. addAll(evi ctionStrat egies);
  268           }
  269  
  270           @O verride
  271           pu blic void  addEvictio nStrategy( EvictionSt rategy evi ctionStrat egy) 
  272           th rows Cache StateExcep tion
  273           {
  274                    this .evictionS trategies. add(evicti onStrategy );
  275           }
  276  
  277           @O verride
  278           pu blic Colle ction<? ex tends Evic tionStrate gy> getEvi ctionStrat egies()
  279           {
  280                    retu rn evictio nStrategie s;
  281           }
  282  
  283           /* *
  284            *  @see gov. va.med.ima ging.stora ge.cache.C ache#getEv ictionStra tegy(java. lang.Strin g)
  285            * /
  286           @O verride
  287           pu blic Evict ionStrateg y getEvict ionStrateg y(String e victionStr ategyName)
  288           {
  289                    for( EvictionSt rategy evi ctionStrat egy: getEv ictionStra tegies())
  290                             if( ev ictionStra tegyName.e quals(evic tionStrate gy.getName ()) )
  291                                      return e victionStr ategy;
  292                    
  293                    retu rn null;
  294           }
  295  
  296           /* *
  297            *  Given an  array of n ames, find  the evict ion strate gies regis tered with  this cach e whose na mes match
  298            *  the given  names.
  299            *  Duplicate s names in  the given  array are  ignored ( i.e. only  show up on ce in the  result)
  300            *  Unknown n ames in th e given ar ray are ig nored (i.e . do not s how up in  the result )
  301            *  
  302            *  @param ev ictionStra tegyNames
  303            *  @return
  304            * /
  305           pu blic Evict ionStrateg y[] getEvi ctionStrat egies(Stri ng[] evict ionStrateg yNames)
  306           {
  307                    if(e victionStr ategyNames  == null)
  308                             return  null;
  309                    
  310                    // m ake it a S et so that  duplicate s are effe ctively ig nored 
  311                    Set< EvictionSt rategy> ma tchedEvict ionStrateg ies = new  HashSet<Ev ictionStra tegy>();
  312                    
  313                    for( String evi ctionStrat egyName :  evictionSt rategyName s)
  314                    {
  315                             Evicti onStrategy  matchedEv ictionStra tegy = get EvictionSt rategy(evi ctionStrat egyName);
  316                             if(mat chedEvicti onStrategy  != null)
  317                                      matchedE victionStr ategies.ad d(matchedE victionStr ategy);
  318                    }
  319                    
  320                    retu rn matched EvictionSt rategies.s ize() > 0 
  321                             matche dEvictionS trategies. toArray(ne w Eviction Strategy[m atchedEvic tionStrate gies.size( )]) : 
  322                             null;
  323           }
  324           
  325           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  326           //  Region 
  327           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  328           @O verride
  329           pu blic Regio n createRe gion(Strin g name, St ring[] evi ctionStrat egyNames) 
  330           th rows Regio nInitializ ationExcep tion
  331           {
  332                    Evic tionStrate gy[] evict ionStrateg ies = getE victionStr ategies(ev ictionStra tegyNames) ;
  333                    retu rn getRegi onFactory( ).create(t his, name,  evictionS trategies) ;
  334           }
  335  
  336           @O verride
  337           pu blic Regio n createRe gion(Regio nMemento r egionMemen to) 
  338           th rows Regio nInitializ ationExcep tion
  339           {
  340                    Evic tionStrate gy[] regio nEvictionS trategies  = getEvict ionStrateg ies(region Memento.ge tEvictionS trategyNam es());
  341                    retu rn getRegi onFactory( ).create(t his, regio nMemento.g etName(),  regionEvic tionStrate gies);
  342           }
  343  
  344           @O verride
  345           pu blic void  addRegion( Region reg ion) 
  346           th rows Cache Exception
  347           {
  348                    regi ons.add(re gion);
  349                    noti fyCacheStr uctureChan geListener s();
  350           }
  351  
  352           @O verride
  353           pu blic void  addRegions (Collectio n<? extend s Region>  regions) 
  354           th rows Cache Exception
  355           {
  356                    for( Region reg ion : regi ons)
  357                             this.a ddRegion(r egion);
  358           }
  359  
  360           @O verride
  361           pu blic Regio n getRegio n(String n ame)
  362           {
  363                    if(n ame == nul l)
  364                             return  null;
  365                    
  366                    for( Region reg ion : getR egions())
  367                             if( na me.equals( region.get Name()) )
  368                                      return r egion;
  369                    
  370                    retu rn null;
  371           }
  372  
  373           @O verride
  374           pu blic Colle ction<? ex tends Regi on> getReg ions()
  375           {
  376                    retu rn Collect ions.unmod ifiableCol lection(th is.regions );
  377           }
  378           
  379           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  380           //  Instance  Management
  381           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  382           @O verride
  383           pu blic void  clear() 
  384           th rows Cache Exception
  385           {
  386                    for( Region reg ion : getR egions())
  387                             region .deleteAll ChildGroup s(false);
  388           }
  389  
  390           @O verride
  391           pu blic Insta nce getIns tance(Stri ng regionN ame, Strin g[] group,  String ke y) 
  392           th rows Cache Exception
  393           {
  394                    Regi on region  = getRegio n(regionNa me);
  395                    
  396                    if(r egion == n ull)
  397                             throw  new Region DoesNotExi stExceptio n();
  398                    
  399                    retu rn region. getInstanc e(group, k ey);
  400           }
  401  
  402           @O verride
  403           pu blic void  deleteInst ance(Strin g regionNa me, String [] group,  String key , boolean  forceDelet e) 
  404           th rows Cache Exception
  405           {
  406                    Regi on region  = getRegio n(regionNa me);
  407                    
  408                    if(r egion == n ull)
  409                             throw  new Region DoesNotExi stExceptio n();
  410                    
  411                    regi on.deleteI nstance(gr oup, key,  forceDelet e);
  412           }
  413           
  414           @O verride
  415           pu blic Insta nce getOrC reateInsta nce(String  regionNam e, String[ ] group, S tring key)  
  416           th rows Cache Exception
  417           {
  418                    Regi on region  = getRegio n(regionNa me);
  419                    
  420                    if(r egion == n ull)
  421                             throw  new Region DoesNotExi stExceptio n();
  422                    
  423                    retu rn region. getOrCreat eInstance( group, key );
  424           }
  425  
  426           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  427           //  Group Man agement
  428           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  429           
  430           @O verride
  431           pu blic Group  getOrCrea teGroup(St ring regio nName, Str ing[] grou p)
  432           th rows Cache Exception 
  433           {
  434                    Regi on region  = getRegio n(regionNa me);
  435                    
  436                    if(r egion == n ull)
  437                             throw  new Region DoesNotExi stExceptio n();
  438                    
  439                    retu rn region. getOrCreat eGroup(gro up);
  440           }
  441  
  442           @O verride
  443           pu blic Group  getGroup( String reg ionName, S tring[] gr oup)
  444           th rows Cache Exception 
  445           {
  446                    Regi on region  = getRegio n(regionNa me);
  447                    
  448                    if(r egion == n ull)
  449                             throw  new Region DoesNotExi stExceptio n();
  450                    
  451                    retu rn region. getGroup(g roup);
  452           }
  453  
  454           @O verride
  455           pu blic void  deleteGrou p(String r egionName,  String[]  group, boo lean force Delete) 
  456           th rows Cache Exception
  457           {
  458                    Regi on region  = getRegio n(regionNa me);
  459                    
  460                    if(r egion == n ull)
  461                             throw  new Region DoesNotExi stExceptio n();
  462                    
  463                    regi on.deleteG roup(group , forceDel ete);
  464           }
  465           
  466  
  467           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  468           //  Managemen t and Moni toring
  469           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  470           /* *
  471            *  @see gov. va.med.ima ging.stora ge.cache.C ache#regis terCacheSt ructureCha ngeListene r(gov.va.m ed.imaging .storage.c ache.Cache StructureC hangeListe ner)
  472            * /
  473           @O verride
  474           pu blic void  registerCa cheStructu reChangeLi stener(Cac heStructur eChangeLis tener list ener)
  475           {
  476                    cach eStructure ChangeList eners.add( listener);
  477           }
  478  
  479           /* *
  480            *  @see gov. va.med.ima ging.stora ge.cache.C ache#unreg isterCache StructureC hangeListe ner(gov.va .med.imagi ng.storage .cache.Cac heStructur eChangeLis tener)
  481            * /
  482           @O verride
  483           pu blic void  unregister CacheStruc tureChange Listener(C acheStruct ureChangeL istener li stener)
  484           {
  485                    cach eStructure ChangeList eners.remo ve(listene r);
  486           }
  487  
  488           pu blic void  notifyCach eStructure ChangeList eners()
  489           {
  490                    for( CacheStruc tureChange Listener l istener :  cacheStruc tureChange Listeners)
  491                             listen er.cacheSt ructureCha nged(this) ;
  492           }
  493           
  494           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  495           //  Container  Lifecycle  Notificat ion
  496           //  ========= ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
  497           /* *
  498            *  @see gov. va.med.ima ging.stora ge.cache.C acheLifecy cleListene r#cacheLif ecycleEven t(gov.va.m ed.imaging .storage.c ache.Cache LifecycleE vent)
  499            * /
  500           @O verride
  501           pu blic void  cacheLifec ycleEvent( CacheLifec ycleEvent  event) 
  502           th rows Cache StateExcep tion
  503           {
  504                    for( Region reg ion : getR egions())
  505                             region .cacheLife cycleEvent (event);
  506           }
  507           
  508           cl ass Lifecy cleLogger
  509           im plements I nstanceLif ecycleList ener, Grou pLifecycle Listener
  510           {
  511  
  512                    /* ( non-Javado c)
  513                     * @ see gov.va .med.imagi ng.storage .cache.eve nts.Instan ceLifecycl eListener# notify(gov .va.med.im aging.stor age.cache. events.Ins tanceLifec ycleEvent)
  514                     */
  515                    @Ove rride
  516                    publ ic void no tify(Insta nceLifecyc leEvent ev ent)
  517                    {
  518                             System .out.print ln("Instan ce event [ " + event. getLifecyc leEvent()  + "] " + e vent.getNa me() );
  519                    }
  520  
  521                    /* ( non-Javado c)
  522                     * @ see gov.va .med.imagi ng.storage .cache.eve nts.GroupL ifecycleLi stener#not ify(gov.va .med.imagi ng.storage .cache.eve nts.GroupL ifecycleEv ent)
  523                     */
  524                    @Ove rride
  525                    publ ic void no tify(Group LifecycleE vent event )
  526                    {
  527                             System .out.print ln("Group  event [" +  event.get LifecycleE vent() + " ] " + even t.getName( ) );
  528                    }
  529                    
  530           }
  531  
  532           @O verride
  533           pu blic Boole an isImage FilesCache d(String s tudyid, St ring image id, String  siteid,
  534                             String  PatientId entifier,  String reg ionName) {
  535                    retu rn true;
  536           }
  537   }