26. EPMO Open Source Coordination Office Redaction File Detail Report

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

26.1 Files compared

# Location File Last Modified
1 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\BaseWebFacade\main\src\java\gov\va\med\imaging\access\je\taglib TransactionLogTag.java Mon Dec 4 21:35:24 2017 UTC
2 IV-eHMP_CIF.zip\IMAG_Source\VISA\Java\BaseWebFacade\main\src\java\gov\va\med\imaging\access\je\taglib TransactionLogTag.java Mon Dec 4 21:57:09 2017 UTC

26.2 Comparison summary

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

26.3 Comparison options

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

26.4 Active regular expressions

No regular expressions were active.

26.5 Comparison detail

  1   /**
  2    * Package : MAG - Vi stA Imagin g
  3    * WARNING : Per VHA  Directive  2004-038,  this routi ne should  not be mod ified.
  4    * Date Cr eated: May  28, 2008
  5    * Site Na me:  Washi ngton OI F ield Offic e, Silver  Spring, MD
  6    * @author         
BECKEC
  7    * @versio n 1.0
  8    *
  9    * ------- ---------- ---------- ---------- ---------- ---------- -------
  10    * Propert y of the U S Governme nt.
  11    * No perm ission to  copy or re distribute  this soft ware is gi ven.
  12    * Use of  unreleased  versions  of this so ftware req uires the  user
  13    * to exec ute a writ ten test a greement w ith the Vi stA Imagin g
  14    * Develop ment Offic e of the D epartment  of Veteran s Affairs,
  15    * telepho ne (301) 7 34-0100.
  16    * 
  17    * The Foo d and Drug  Administr ation clas sifies thi s software  as
  18    * a Class  II medica l device.   As such,  it may not  be change d
  19    * in any  way.  Modi fications  to this so ftware may  result in  an
  20    * adulter ated medic al device  under 21CF R820, the  use of whi ch
  21    * is cons idered to  be a viola tion of US  Federal S tatutes.
  22    * ------- ---------- ---------- ---------- ---------- ---------- -------
  23    */
  24   package go v.va.med.i maging.acc ess.je.tag lib;
  25  
  26   import gov .va.med.im aging.Base WebFacadeR outer;
  27  
  28   import gov .va.med.im aging.acce ss.Transac tionLogEnt ry;
  29   import gov .va.med.im aging.acce ss.Transac tionLogMax ima;
  30   import gov .va.med.im aging.acce ss.Transac tionLogMea n;
  31   import gov .va.med.im aging.acce ss.Transac tionLogMed ian;
  32   import gov .va.med.im aging.acce ss.Transac tionLogMin ima;
  33   import gov .va.med.im aging.acce ss.Transac tionLogSum ;
  34   import gov .va.med.im aging.acce ss.Transac tionLogWri ter;
  35   import gov .va.med.im aging.acce ss.Transac tionLogWri terHolder;
  36   import gov .va.med.im aging.core .FacadeRou terUtility ;
  37   import gov .va.med.im aging.core .interface s.exceptio ns.MethodE xception;
  38   //import g ov.va.med. imaging.Ba seWebFacad eRouter;
  39   //import g ov.va.med. imaging.co re.FacadeR outerUtili ty;
  40   import gov .va.med.im aging.exch ange.enums .Datasourc eProtocol;
  41   import gov .va.med.im aging.exch ange.enums .ImageQual ity;
  42   import gov .va.med.im aging.exch ange.enums .ByteTrans ferPath;
  43   import gov .va.med.im aging.tran sactioncon text.Trans actionCont ext;
  44   import gov .va.med.im aging.tran sactioncon text.Trans actionCont extFactory ;
  45  
  46   import jav a.io.IOExc eption;
  47   import jav a.text.Dat eFormat;
  48   import jav a.text.Par seExceptio n;
  49   import jav a.text.Sim pleDateFor mat;
  50   import jav a.util.Arr ayList;
  51   import jav a.util.Dat e;
  52   import jav a.util.Enu meration;
  53   import jav a.util.Lis t;
  54  
  55   import jav ax.servlet .jsp.JspEx ception;
  56   import jav ax.servlet .jsp.tagex t.BodyTag;
  57   import jav ax.servlet .jsp.tagex t.BodyTagS upport;
  58  
  59   import org .apache.lo gging.log4 j.LogManag er;
  60   import org .apache.lo gging.log4 j.Logger;
  61  
  62   /**
  63    * 
  64    * @author         
BECKEC
  65    *
  66    */
  67   public cla ss Transac tionLogTag  
  68   extends Bo dyTagSuppo rt 
  69   {
  70           pr ivate stat ic final l ong serial VersionUID  = 1L;
  71           pr ivate Logg er logger  = LogManag er.getLogg er(this.ge tClass());
  72           pr ivate Enum eration<Tr ansactionL ogEntry> l ogEntryEnu m;
  73           pr ivate Tran sactionLog Entry curr entTransac tionLogEnt ry;
  74           
  75           pr ivate Date  startDate ;
  76           pr ivate Date  endDate;
  77           pr ivate Imag eQuality q uality = n ull;
  78           pr ivate Stri ng user;
  79           pr ivate Stri ng modalit y;
  80           pr ivate Data sourceProt ocol datas ourceProto col = null ;
  81           pr ivate Stri ng errorMe ssage;
  82           pr ivate Stri ng transac tionId;
  83           pr ivate Stri ng imageUr n;
  84           pr ivate int  startIndex  = 0;
  85           pr ivate int  endIndex =  Integer.M AX_VALUE;
  86           pr ivate bool ean forwar d = true;
  87           pr ivate Stri ng emptyRe sultMessag e = null;
  88           pr ivate int  requestedR owsPerPage  = 0; // D KB
  89           pr ivate int  actualRows PerPage =  0; // DKB
  90           pr ivate bool ean hasNex tPage = fa lse; // JM W - determ ines if th ere is a n ext page t o be displ ayed
  91           
  92           pr ivate Byte TransferPa th byteTra nsferPath  = ByteTran sferPath.D S_IN_FACAD E_OUT;
  93           
  94           //  the first  date form at in the  array 
  95           pr ivate Date Format[] d ateFormats  = new Dat eFormat[]
  96           {
  97                    new  SimpleDate Format("MM /dd/yyyy") ,
  98                    new  SimpleDate Format("dd MMyyyy")
  99           };
  100           
  101           pr ivate Stri ng formatD ate(Date d ate)
  102           {
  103           St ring strin gDate = da teFormats[ 0].format( date);
  104           re turn strin gDate;
  105           }
  106           
  107           pr ivate Date  parseDate (String st ringDate)
  108           {
  109                    for( DateFormat  df : date Formats)
  110                    {
  111                             try
  112                {
  113                         Date date  = df.parse (stringDat e);
  114                         return dat e;
  115                } 
  116                             catch  (ParseExce ption e)
  117                {
  118                }
  119                    }
  120                    retu rn null;
  121           }
  122           
  123           /* *
  124            *  
  125            * /
  126           pu blic Trans actionLogT ag()
  127           {
  128                    
  129           }
  130  
  131           //  ========= ========== ========== ========== ========== ========== ========== ==
  132           pu blic Strin g getStart DateAsStri ng()
  133       {
  134                    if(s tartDate = = null)
  135                             return  null;
  136           re turn forma tDate(star tDate);
  137       }
  138           pu blic void  setStartDa teAsString (String st artDateAsS tring)
  139       {
  140                    if(s tartDateAs String ==  null)
  141                             startD ate = null ;
  142                    else
  143                             startD ate = pars eDate(star tDateAsStr ing);
  144       }
  145           pu blic Date  getStartDa te()
  146       {
  147           re turn start Date;
  148       }
  149           pu blic void  setStartDa te(Date st artDate)
  150       {
  151           th is.startDa te = start Date;
  152       }
  153  
  154           //  ========= ========== ========== ========== ========== ========== ========== ==
  155           pu blic Strin g getEndDa teAsString ()
  156       {
  157                    if(e ndDate ==  null)
  158                             return  null;
  159           re turn forma tDate(endD ate);
  160       }
  161           pu blic void  setEndDate AsString(S tring endD ateAsStrin g)
  162       {
  163                    if(e ndDateAsSt ring == nu ll)
  164                             endDat e = null;
  165                    else
  166                             endDat e = parseD ate(endDat eAsString) ;
  167       }
  168           pu blic Date  getEndDate ()
  169       {
  170           re turn endDa te;
  171       }
  172           pu blic void  setEndDate (Date endD ate)
  173       {
  174           th is.endDate  = endDate ;
  175       }
  176  
  177           //  ========= ========== ========== ========== ========== ========== ======
  178           //  The Image  Quality m ay be set  by Enum, n ame, ordin al value o r qValue.
  179           //  All of th ese proper ties are s tored in t he same fi eld, so th ey will
  180           //  overwrite  one anoth er.
  181           pu blic Image Quality ge tQuality()
  182       {
  183           re turn quali ty;
  184       }
  185           pu blic void  setQuality (ImageQual ity qualit y)
  186       {
  187           th is.quality  = quality ;
  188       }
  189           pu blic Strin g getQuali tyName()
  190       {
  191           re turn quali ty.name();
  192       }
  193           pu blic void  setQuality Name(Strin g qualityN ame)
  194       {
  195                    if(q ualityName  == null)
  196                             this.q uality = n ull;
  197           el se
  198           {
  199                    try
  200                {
  201                         this.quali ty = Image Quality.va lueOf(qual ityName);
  202                } 
  203                             catch  (RuntimeEx ception e)
  204                {
  205                                      this.qua lity = nul l;
  206                }
  207           }
  208       }
  209           pu blic int g etQualityO rdinal()
  210       {
  211           re turn quali ty == null  ? -1 : qu ality.ordi nal();
  212       }
  213           pu blic void  setQuality Ordinal(in t ordinal)
  214       {
  215                    this .quality =  null;
  216                    
  217                    for( ImageQuali ty quality  : ImageQu ality.valu es())
  218                             if(qua lity.ordin al() == or dinal)
  219                                      this.qua lity = qua lity;
  220       }
  221  
  222           pu blic int g etQualityV alue()
  223       {
  224           re turn quali ty == null  ? 0 : qua lity.getCa nonical();
  225       }
  226           pu blic void  setQuality Value(int  qvalue)
  227       {
  228                    this .quality =  null;
  229                    
  230                    for( ImageQuali ty quality  : ImageQu ality.valu es())
  231                             if( qu ality.isAp plicableQu ality(qval ue) )
  232                                      this.qua lity = qua lity;
  233       }
  234           
  235           //  ========= ========== ========== ========== ==========
  236           pu blic Strin g getUser( )
  237       {
  238           re turn user;
  239       }
  240  
  241           pu blic void  setUser(St ring user)
  242       {
  243           th is.user =  user != nu ll && user .length()  == 0 ? nul l : user;
  244       }
  245  
  246           //  ========= ========== ========== ========== ========== ========== ======
  247           pu blic Strin g getModal ity()
  248       {
  249           re turn modal ity;
  250       }
  251  
  252           pu blic void  setModalit y(String m odality)
  253       {
  254           th is.modalit y = modali ty != null  && modali ty.length( ) == 0 ? n ull : moda lity;
  255       }
  256  
  257           //  ========= ========== ========== ========== ========== ========== ======
  258           pu blic Datas ourceProto col getDat asourcePro tocol()
  259       {
  260           re turn datas ourceProto col;
  261       }
  262           pu blic void  setDatasou rceProtoco l(Datasour ceProtocol  datasourc eProtocol)
  263       {
  264           th is.datasou rceProtoco l = dataso urceProtoc ol;
  265       }
  266           pu blic int g etDatasour ceProtocol Ordinal()
  267       {
  268           re turn datas ourceProto col == nul l ? -1 : d atasourceP rotocol.or dinal();
  269       }
  270           pu blic void  setDatasou rceProtoco lOrdinal(i nt ordinal )
  271       {
  272                    this .datasourc eProtocol  = null;
  273                    
  274                    for( Datasource Protocol d atasourceP rotocol :  Datasource Protocol.v alues())
  275                             if(dat asourcePro tocol.ordi nal() == o rdinal)
  276                                      this.dat asourcePro tocol = da tasourcePr otocol;
  277       }
  278           pu blic Strin g getDatas ourceProto colAsStrin g()
  279       {
  280           re turn datas ourceProto col == nul l ? null :  datasourc eProtocol. name();
  281       }
  282           pu blic void  setDatasou rceProtoco lAsString( String dat asourcePro tocolAsStr ing)
  283       {
  284                    if(d atasourceP rotocolAsS tring == n ull)
  285                             this.d atasourceP rotocol =  null;
  286                    else
  287                             this.d atasourceP rotocol =  Datasource Protocol.v alueOf(dat asourcePro tocolAsStr ing);
  288       }
  289           
  290           /* *
  291            *  Get/set t he error m essage REG EX pattern .
  292            *  
  293        * @re turn the e rrorMessag e
  294        */
  295       public  String ge tErrorMess age()
  296       {
  297           re turn error Message;
  298       }
  299       public  void setE rrorMessag e(String e rrorMessag e)
  300       {
  301           th is.errorMe ssage = er rorMessage  != null & & errorMes sage.lengt h() == 0 ?  null : er rorMessage ;
  302       }
  303  
  304           /* *
  305            *  @return t he transac tionId
  306            * /
  307           pu blic Strin g getTrans actionId()  {
  308                    retu rn transac tionId;
  309           }
  310  
  311           /* *
  312            *  @param tr ansactionI d the tran sactionId  to set
  313            * /
  314           pu blic void  setTransac tionId(Str ing transa ctionId) {
  315                    this .transacti onId = tra nsactionId  != null & & transact ionId.leng th() == 0  ? null : t ransaction Id;
  316           }
  317  
  318           /* *
  319            *  @return t he imageUr n
  320            * /
  321           pu blic Strin g getImage Urn() {
  322                    retu rn imageUr n;
  323           }
  324  
  325           /* *
  326            *  @param im ageUrn the  imageUrn  to set
  327            * /
  328           pu blic void  setImageUr n(String i mageUrn) {
  329                    this .imageUrn  = imageUrn  != null & & imageUrn .length()  == 0 ? nul l : imageU rn;
  330           }
  331  
  332           /* *
  333            *  Get/set t he startin g index of  log entri es.
  334        * @re turn the s tartIndex
  335        */
  336       public  int getSt artIndex()
  337       {
  338           re turn start Index;
  339       }
  340       public  void setS tartIndex( int startI ndex)
  341       {
  342           th is.startIn dex = star tIndex;
  343       }
  344  
  345           /* *
  346            *  Get/set t he ending  index of l og entries .
  347            *  If the en dIndex is  before the  start ind ex then no  log entri es will
  348            *  be return ed.
  349        * @re turn the e ndIndex
  350        */
  351       public  int getEn dIndex()
  352       {
  353           re turn endIn dex;
  354       }
  355       public  void setE ndIndex(in t endIndex )
  356       {
  357           th is.endInde x = endInd ex;
  358       }
  359  
  360       /**
  361        * Con trols whet her the tr ansaction  log will b e iterated  in increa sing (forw ard) or
  362        * dec reasing da te order.
  363        * 
  364        * @re turn
  365        */
  366           pu blic boole an isForwa rd()
  367       {
  368           re turn forwa rd;
  369       }
  370  
  371           pu blic void  setForward (boolean f orward)
  372       {
  373           th is.forward  = forward ;
  374       }
  375  
  376           /* *
  377            *  Get/set t he message  to show i f the resu lt set is  empty (i.e . no log m essages)
  378            *  By defaul t this is  null.
  379            *  
  380            *  @return
  381            * /
  382           pu blic Strin g getEmpty ResultMess age()
  383       {
  384           re turn empty ResultMess age;
  385       }
  386  
  387           pu blic void  setEmptyRe sultMessag e(String e mptyResult Message)
  388       {
  389           th is.emptyRe sultMessag e = emptyR esultMessa ge;
  390       }
  391  
  392           /* *
  393            *  Get/set t he path of  byte tran sfer we're  intereste d in.
  394            *  By defaul t this is  DS_IN_FACA DE_OUT.
  395            *  
  396            *  @return
  397            * /
  398           pu blic ByteT ransferPat h getByteT ransferPat h ()
  399           {
  400                    retu rn byteTra nsferPath;
  401           }
  402           
  403           pu blic void  setByteTra nsferPath  (ByteTrans ferPath by teTransfer Path)
  404           {
  405                    this .byteTrans ferPath =  byteTransf erPath;
  406           }
  407           
  408           /* *
  409        * @re turn the l ogEntryEnu m
  410        */
  411       Enumer ation<Tran sactionLog Entry> get LogEntryEn um()
  412       {
  413           re turn logEn tryEnum;
  414       }
  415  
  416           /* *
  417            *  
  418            *  @see java x.servlet. jsp.tagext .BodyTagSu pport#doSt artTag()
  419            * /
  420           @O verride
  421       public  int doSta rtTag() 
  422           th rows JspEx ception
  423       {
  424                    Tran sactionCon text trans actionCont ext = Tran sactionCon textFactor y.get();
  425                    tran sactionCon text.setRe questType( "View Tran saction Lo g");
  426                    tran sactionCon text.setSe rvicedSour ce(transac tionContex t.getLogge rSiteNumbe r());
  427                    hasN extPage =  false;
  428                    
  429                    requ estedRowsP erPage = e ndIndex -  startIndex ;
  430                    if ( requestedR owsPerPage  < 0) requ estedRowsP erPage *=  -1;
  431                    actu alRowsPerP age = 0;
  432                    
  433                    try
  434                    {
  435                             BaseWe bFacadeRou ter router  = FacadeR outerUtili ty.getFaca deRouter ( BaseWebFac adeRouter. class);
  436                             Transa ctionLogWr iterHolder  logHolder  = new Tra nsactionLo gWriterHol der();
  437                             router .getTransa ctionLogEn tries(logH older,               
  438                            getStar tDate(), g etEndDate( ), 
  439                            quality , getUser( ), getModa lity(), da tasourcePr otocol, ge tErrorMess age(),
  440                            getImag eUrn(), ge tTransacti onId(), ne w Boolean  (isForward ()), 
  441                            getStar tIndex(),  getEndInde x());
  442                             List<T ransaction LogEntry>  logEntryLi st = logHo lder.getEn tries();
  443                    java .util.Vect or<Transac tionLogEnt ry> vLogEn tries = ne w java.uti l.Vector<T ransaction LogEntry>  ();
  444                             for(in t i = 0; i  < logEntr yList.size (); i++)
  445                    {
  446                              // th e result f rom the ro uter will  include th e range re quested +  1, if ther e is +1 th at means
  447                              // th ere is mor e data so  hasNextPag e should b e true.  W e don't ac tually wan t to displ ay this +1  entry
  448                              // so  exclude i t from the  results.
  449                              Trans actionLogE ntry logEn try = logE ntryList.g et(i);
  450                              if(i  >= request edRowsPerP age)
  451                              {
  452                                       hasNext Page = tru e;
  453                              }
  454                              else
  455                              {
  456                                       vLogEnt ries.add(l ogEntry);
  457                              }
  458                     }
  459                     log EntryEnum  = vLogEntr ies.elemen ts ();
  460                    }
  461                    
  462                    catc h (Excepti on x)
  463                    {
  464            l ogger.erro r ("Error: ", x);
  465            t hrow new J spExceptio n("Unable  to acquire  a referen ce to the  Transactio nLogger.") ;
  466                    }
  467         
  468                    init ializeStat istics();
  469                    curr entTransac tionLogEnt ry = null;
  470                if( getL ogEntryEnu m() != nul l && getLo gEntryEnum ().hasMore Elements()  )
  471                {
  472                    // p osition to  the start  index
  473                    /*
  474                    for( currentTra nsactionLo gEntry = g etLogEntry Enum().nex tElement() ;
  475                             curren tTransacti onLogEntry  != null; 
  476                             curren tTransacti onLogEntry  = getLogE ntryEnum() .nextEleme nt())
  477                                      ++curren tIndex;
  478                    */
  479                    
  480                    // p osition to  the start  index
  481                    // J MW 3/1/10  - no longe r need to  position b ecause the  results a re always  the exact  requested  range of d ata
  482                    /*
  483                    for( currentTra nsactionLo gEntry = g etLogEntry Enum().nex tElement() ;
  484                             curren tTransacti onLogEntry  != null & & currentI ndex < get StartIndex (); 
  485                             curren tTransacti onLogEntry  = getLogE ntryEnum() .nextEleme nt())
  486                    {
  487                                      if (getL ogEntryEnu m().hasMor eElements( ) == false ) // DKB
  488                                      {
  489                                               currentTra nsactionLo gEntry = n ull;
  490                                               break;
  491                                      }
  492                                      ++curren tIndex;
  493                    }*/
  494                    
  495                    // g et first e lement
  496                    curr entTransac tionLogEnt ry = getLo gEntryEnum ().nextEle ment();
  497                    
  498                    // i f we have  not positi oned beyon d the end  of the log  entries
  499                    // u pdate the  statistics  gathering
  500                    if(c urrentTran sactionLog Entry != n ull)
  501                             update Statistics (currentTr ansactionL ogEntry);
  502                }
  503                if(curre ntTransact ionLogEntr y == null)
  504                {
  505                    if(g etEmptyRes ultMessage () != null )
  506                             try{pa geContext. getOut().w rite(getEm ptyResultM essage()); }
  507                             catch( IOExceptio n ioX){log ger.error( "Unable to  write emp ty result  set messag e.");}
  508                    retu rn BodyTag .SKIP_BODY ;
  509                }
  510                else
  511                    retu rn BodyTag .EVAL_BODY _INCLUDE;
  512       }
  513  
  514           /* *
  515        * @se e gov.va.m ed.imaging .access.je .taglib.Tr ansactionL ogEnumerat ionParent# getCurrent Transactio nLogEntry( )
  516        */
  517      public  Transactio nLogEntry  getCurrent Transactio nLogEntry( )
  518           {
  519                    retu rn current Transactio nLogEntry;
  520           }
  521           
  522           /* *
  523            *  Iterate t o the next  log entry  element.
  524            *  @return
  525            * /
  526           bo olean next LogEntryEl ement()
  527           {
  528                    if(  getLogEntr yEnum() !=  null && g etLogEntry Enum().has MoreElemen ts())
  529                {
  530                    curr entTransac tionLogEnt ry = getLo gEntryEnum ().nextEle ment();
  531                    upda teStatisti cs(current Transactio nLogEntry) ;
  532                    retu rn true;
  533                }
  534                return f alse;
  535           }
  536           
  537           pu blic void  incrementP erPageRowC ount()
  538           {
  539                    actu alRowsPerP age++;
  540           }
  541           
  542           /* *
  543            *  
  544            *  @see java x.servlet. jsp.tagext .BodyTagSu pport#doAf terBody()
  545            * /
  546           @O verride
  547       public  int doAft erBody() 
  548           th rows JspEx ception
  549       {
  550           re turn BodyT ag.SKIP_BO DY;
  551       }
  552  
  553           /* *
  554            *  
  555            *  @see java x.servlet. jsp.tagext .BodyTagSu pport#doEn dTag()
  556            * /
  557           @O verride
  558       public  int doEnd Tag() 
  559           th rows JspEx ception
  560       {
  561   //               Stri ngBuilder  sb = new S tringBuild er();
  562   //               sb.a ppend("<sc ript>");
  563   //               
  564   //               // M y apologie s - DKB
  565   //               if ( startIndex  == 0) //  disable re wind and p revious pa ge buttons
  566   //               {
  567   //                        sb.app end("docum ent.all.vc rRewind.di sabled = ' disabled'; ");
  568   //                        sb.app end("docum ent.all.vc rPrevPage. disabled =  'disabled ';");
  569   //               }
  570   //               
  571   //               // d isable nex t page but ton
  572   //               if ( (requested RowsPerPag e == actua lRowsPerPa ge && getL ogEntryEnu m().hasMor eElements( ) == false ) || actua lRowsPerPa ge < reque stedRowsPe rPage )
  573   //               {
  574   //                        sb.app end("docum ent.all.vc rNextPage. disabled =  'disabled ';");
  575   //               }
  576   //               sb.a ppend("</s cript>");
  577   //               
  578   //               Stri ng jscript Fragment =  sb.toStri ng();
  579   //               if ( jscriptFra gment.comp areTo("<sc ript></scr ipt>") !=  0)
  580   //               {
  581   //                        try
  582   //                        {
  583   //                                 pageCont ext.getOut ().write(j scriptFrag ment);
  584   //                        }
  585   //                        catch( IOExceptio n ioX){;}  // not an  error if t he buttons  don't get  disabled
  586   //               }
  587  
  588                    if ( startIndex  == 0)
  589                    {
  590                             pageCo ntext.setA ttribute(" hasPreviou sPage", fa lse);
  591                    }
  592                    else
  593                    {
  594                             pageCo ntext.setA ttribute(" hasPreviou sPage", tr ue);
  595                    }
  596                    page Context.se tAttribute ("hasNextP age", hasN extPage);
  597                    
  598                    logE ntryEnum =  null;
  599                    curr entTransac tionLogEnt ry = null;
  600                    
  601                return B odyTag.EVA L_PAGE;
  602       }
  603           
  604           //  ========= ========== ========== ========== ========== ========== ========== ========== ======
  605           //
  606           //  ========= ========== ========== ========== ========== ========== ========== ========== ======
  607           pr ivate Tran sactionLog Maxima max imumValues ;
  608           pr ivate Tran sactionLog Minima min imumValues ;
  609           pr ivate Tran sactionLog Mean meanV alues;
  610           pr ivate Tran sactionLog Median med ianValues;
  611           pr ivate Tran sactionLog Sum sumVal ues;
  612           
  613           pr ivate void  initializ eStatistic s()
  614       {
  615                    maxi mumValues  = new Tran sactionLog Maxima(byt eTransferP ath);
  616                    mini mumValues  = new Tran sactionLog Minima(byt eTransferP ath);
  617                    mean Values = n ew Transac tionLogMea n(byteTran sferPath);
  618                    medi anValues =  new Trans actionLogM edian(byte TransferPa th);
  619                    sumV alues = ne w Transact ionLogSum( byteTransf erPath);
  620       }
  621  
  622           pr ivate void  updateSta tistics(Tr ansactionL ogEntry lo gEntry)
  623       {
  624                    maxi mumValues. update(log Entry);
  625                    mini mumValues. update(log Entry);
  626                    mean Values.upd ate(logEnt ry);
  627                    medi anValues.u pdate(logE ntry);
  628                    sumV alues.upda te(logEntr y);
  629       }
  630  
  631           /* *
  632        * @re turn the m aximumValu es
  633        */
  634       Transa ctionLogMa xima getMa ximumValue s()
  635       {
  636           re turn maxim umValues;
  637       }
  638  
  639           /* *
  640        * @re turn the m inimumValu es
  641        */
  642       Transa ctionLogMi nima getMi nimumValue s()
  643       {
  644           re turn minim umValues;
  645       }
  646  
  647           /* *
  648        * @re turn the m eanValues
  649        */
  650       Transa ctionLogMe an getMean Values()
  651       {
  652           re turn meanV alues;
  653       }
  654  
  655           /* *
  656        * @re turn the m edianValue s
  657        */
  658       Transa ctionLogMe dian getMe dianValues ()
  659       {
  660           re turn media nValues;
  661       }
  662       
  663       Transa ctionLogSu m getSumVa lues()
  664       {
  665           re turn sumVa lues;
  666       }
  667       
  668   }