1 50 51 package org.openlaszlo.iv.flash.servlet; 52 53 import java.io.*; 54 import java.net.*; 55 import java.util.*; 56 import java.text.*; 57 58 public class StatUnit implements Serializable { 59 60 public static final long serialVersionUID = -6212560619436466903L; 61 62 private long startTime; 63 private long endTime; 64 private long totalSize = 0; 65 private long totalProcessTime = 0; 66 private long totalTotalTime = 0; 67 private int totalRequests = 0; 68 private int maxSize = Integer.MIN_VALUE; 69 private String maxFile = ""; 70 private int minSize = Integer.MAX_VALUE; 71 private String minFile = ""; 72 73 public StatUnit() { 74 } 75 76 public StatUnit( long startTime ) { 77 this.startTime = startTime; 78 } 79 80 public void print( PrintWriter p ) { 81 SimpleDateFormat formatter = new SimpleDateFormat ("MM/dd/yyyy hh:mm:ss z"); 82 String startStr = formatter.format( new Date(startTime) ); 83 String endStr = endTime == 0? "present": formatter.format( new Date(endTime) ); 84 p.print( "Statistics for period from "+startStr+" to "+endStr+"<br>" ); 85 p.print( " Number of requests "+totalRequests+"<br>" ); 86 p.print( " Total size "+totalSize+" bytes<br>" ); 87 p.print( " Total time "+totalTotalTime+"ms<br>" ); 88 p.print( " Max size/file "+maxSize+"/'"+maxFile+"'<br>" ); 89 p.print( " Min size/file "+minSize+"/'"+minFile+"'<br>" ); 90 p.print( " Average size "+getAverageSize()+" bytes<br>" ); 91 p.print( " Average processing time "+getAverageProcessTime()+"ms<br>" ); 92 p.print( " Average total processing time "+getAverageTotalTime()+"ms<br>" ); 93 } 94 95 public void printVars( PrintWriter p ) { 96 SimpleDateFormat formatter = new SimpleDateFormat ("MM/dd/yyyy hh:mm:ss z"); 97 String startStr = formatter.format( new Date(startTime) ); 98 long endTm = endTime == 0? System.currentTimeMillis(): endTime; 99 String endStr = formatter.format( new Date(endTm) ); 100 p.print( "&startTime=" + URLEncoder.encode(startStr) ); 101 p.print( "&endTime=" + URLEncoder.encode(endStr) ); 102 p.print( "&numRequests=" + totalRequests ); 103 p.print( "&totalSize=" + totalSize ); 104 p.print( "&totalTime=" + totalTotalTime ); 105 p.print( "&maxSize=" + maxSize ); 106 p.print( "&maxFile=" + URLEncoder.encode(maxFile) ); 107 p.print( "&minSize=" + minSize ); 108 p.print( "&minFile=" + URLEncoder.encode(minFile) ); 109 p.print( "&averageSize=" + getAverageSize() ); 110 p.print( "&averageProcessTime=" + getAverageProcessTime() ); 111 p.print( "&averageTotalTime=" + getAverageTotalTime() ); 112 } 113 114 public void printXML( PrintWriter p, boolean current ) { 115 if( current ) { 116 p.println( "<stat-block current=\"true\">" ); 117 } else { 118 p.println( "<stat-block>" ); 119 } 120 SimpleDateFormat formatter = new SimpleDateFormat ("MM/dd/yyyy hh:mm:ss z"); 121 String startStr = formatter.format( new Date(startTime) ); 122 long endTm = endTime == 0? System.currentTimeMillis(): endTime; 123 String endStr = formatter.format( new Date(endTm) ); 124 p.println( "<start-time>"+startStr+"</start-time>" ); 125 p.println( "<end-time>"+endStr+"</end-time>" ); 126 p.println( "<requests-num>"+totalRequests+"</requests-num>" ); 127 p.println( "<total-size>"+totalSize+"</total-size>" ); 128 p.println( "<total-time>"+totalTotalTime+"</total-time>" ); 129 p.println( "<max-size>"+maxSize+"</max-size>" ); 130 p.println( "<max-file>"+maxFile+"</max-file>" ); 131 p.println( "<min-size>"+minSize+"</min-size>" ); 132 p.println( "<min-file>"+minFile+"</min-file>" ); 133 p.println( "<average-time>"+getAverageProcessTime()+"</average-time>" ); 134 p.println( "<average-size>"+getAverageSize()+"</average-size>" ); 135 p.println( "</stat-block>" ); 136 } 137 138 public synchronized void addRequest( String fileName, int size, long processTime, long totalTime ) { 139 totalSize += size; 140 totalProcessTime += processTime; 141 totalTotalTime += totalTime; 142 totalRequests++; 143 if( size > maxSize ) { 144 maxSize = size; 145 maxFile = fileName; 146 } 147 if( size < minSize ) { 148 minSize = size; 149 minFile = fileName; 150 } 151 } 152 153 public void setStartTime( long time ) { 154 startTime = time; 155 } 156 public long getStartTime() { 157 return startTime; 158 } 159 public void setEndTime( long time ) { 160 endTime = time; 161 } 162 public long getEndTime() { 163 return endTime; 164 } 165 public int getAverageSize() { 166 if( totalRequests == 0 ) return 0; 167 return (int) (totalSize / totalRequests); 168 } 169 public long getAverageProcessTime() { 170 if( totalRequests == 0 ) return 0; 171 return totalProcessTime / totalRequests; 172 } 173 public long getAverageTotalTime() { 174 if( totalRequests == 0 ) return 0; 175 return totalTotalTime / totalRequests; 176 } 177 } 178 179 | Popular Tags |