Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/webobjects/woextensions/WOStatsPage.java


1   /*
2    * WOStatsPage.java
3    * © Copyright 2001 Apple Computer, Inc. All rights reserved.
4    * This a modified version.
5    * Original license: http://www.opensource.apple.com/apsl/
6    */
7   
8   package com.webobjects.woextensions;
9   
10  import java.util.*;
11  import com.webobjects.appserver.*;
12  import com.webobjects.foundation.*;
13  
14  import java.net.UnknownHostException;
15  
16  public class WOStatsPage extends WOComponent {
17      public NSDictionary detailsDict;
18      public NSDictionary pagesDict;
19      public NSDictionary directActionsDict;
20      public NSDictionary sessionMemoryDict;
21      public NSDictionary transactions;
22      public NSDictionary statsDict;
23      public NSDictionary memoryDict;
24      public NSArray sessionStats;
25      public NSMutableDictionary sessionsDict;
26      public long maxPageCount;
27      public long maxActionCount;
28      public NSTimestamp maxSessionsDate;
29      public String userName;
30      public Object currentKey;
31      public Object currentItem;
32      public String password;
33  
34      public WOStatsPage(WOContext aContext)  {
35          super(aContext);
36      }
37      
38      public WOComponent submit()  {
39          session().validateStatisticsLogin(password, userName);
40          return this;
41      }
42  
43      public String host() throws UnknownHostException {
44          if (WOApplication.application().host() != null) {
45              return WOApplication.application().host();
46          } 
47          return java.net.InetAddress.getLocalHost().getHostName();
48      }
49  
50      public String instance()  {
51          int instance = context().request().applicationNumber();
52          return ""+instance;
53      }
54  
55      protected long _maxServedForDictionary(NSDictionary aDictionary) {
56          long aMaxServedCount = 0;
57          NSDictionary aPage = null;
58          Enumeration aPageEnumerator = aDictionary.objectEnumerator();
59          while (aPageEnumerator.hasMoreElements()) {
60              aPage = (NSDictionary)aPageEnumerator.nextElement();
61              long newCount = ((Long)aPage.objectForKey("Served")).longValue();
62              aMaxServedCount += newCount;
63          }
64          return aMaxServedCount;
65      }
66  
67      public void _initIvars() {
68          statsDict = WOApplication.application().statistics();
69          pagesDict = (NSDictionary)statsDict.objectForKey("Pages");
70          directActionsDict = (NSDictionary)statsDict.objectForKey("DirectActions");
71          detailsDict = (NSDictionary)statsDict.objectForKey("Details");
72          transactions = (NSDictionary)statsDict.objectForKey("Transactions");
73          memoryDict = (NSDictionary)statsDict.objectForKey("Memory");
74          sessionsDict = ((NSDictionary)statsDict.objectForKey("Sessions")).mutableClone();
75          sessionMemoryDict = (NSDictionary)sessionsDict.removeObjectForKey("Avg. Memory Per Session");
76          sessionStats = (NSArray)sessionsDict.removeObjectForKey("Last Session's Statistics");
77          maxSessionsDate = (NSTimestamp) sessionsDict.removeObjectForKey("Peak Active Sessions Date");
78  
79  
80          maxPageCount = 0;
81          maxActionCount = 0;
82          long currentCount;
83          int i;
84  
85          maxPageCount = _maxServedForDictionary(pagesDict);
86          maxActionCount = _maxServedForDictionary(directActionsDict);
87      }
88  
89      public void appendToResponse(WOResponse aResponse, WOContext aContext)  {
90          // ** This should probably be somewhere else.
91          _initIvars();
92          super.appendToResponse(aResponse, aContext);
93      }
94  
95      public long pageCount() {
96          return ((Long)((NSDictionary)currentItem).objectForKey("Served")).longValue();
97      }
98  
99      public double pageAvg() {
100         return ((Double)((NSDictionary)currentItem).objectForKey("Avg Resp. Time")).doubleValue();
101     }
102 
103     public double pageMin() {
104         return ((Double)((NSDictionary)currentItem).objectForKey("Min Resp. Time")).doubleValue();
105     }
106 
107     public double pageMax() {
108         return ((Double)((NSDictionary)currentItem).objectForKey("Max Resp. Time")).doubleValue();
109     }
110 
111     public long detailCount() {
112         return ((Long)detailsDict.objectForKey(currentKey)).longValue();
113     }
114 
115     public void setDetailPercent(String aValue) {
116     }
117 
118     public long detailPercent() {
119         double aTransactionsCount = ((Number)transactions.objectForKey("Transactions") ).doubleValue();
120         double aDetailCount = (double)detailCount();
121         if (aTransactionsCount > 0L) {
122             return (long)((aDetailCount / aTransactionsCount) * 100);
123         } else {
124             return 0;
125         }
126     }
127 
128     public Long componentActionTransactions() {
129         return (Long)transactions.objectForKey("Component Action Transactions");
130     }
131 
132     public Long directActionTransactions() {
133         return (Long)transactions.objectForKey("Direct Action Transactions");
134     }
135 
136     public Double avgComponentActionTransactions() {
137         return (Double)transactions.objectForKey("Component Action  Avg. Transaction Time");
138     }
139 
140     public Double avgDirectActionTransactions() {
141         return (Double)transactions.objectForKey("Direct Action Avg. Transaction Time");
142     }
143 
144     public Double avgTransactionTime() {
145         return (Double)transactions.objectForKey("Avg. Transaction Time");
146     }
147 
148     public Double avgIdleTime() {
149         return (Double)transactions.objectForKey("Avg. Idle Time");
150     }
151 
152     public Double movingAvgTransactionTime() {
153         return (Double)transactions.objectForKey("Moving Avg. Transaction Time");
154     }
155 
156     public Double movingAvgIdleTime() {
157         return (Double)transactions.objectForKey("Moving Avg. Idle Time");
158     }
159 
160     public Long movingAvgSampleSize() {
161         return (Long)transactions.objectForKey("Sample Size For Moving Avg.");
162     }
163 
164     public String runningTime() {
165         long aRunningTime = System.currentTimeMillis()-((NSTimestamp)statsDict.objectForKey("StartedAt")).getTime();
166         String aRunningTimeString = WOStatsPage._timeIntervalDescription(aRunningTime);
167         return aRunningTimeString;
168     }
169 
170     public boolean isLogPath() {
171         if (statsDict.objectForKey("LogFile")!=null) {
172             return true;
173         }  
174         return false;
175     }
176 
177     public boolean isLastUser() {
178         if (sessionStats!=null && (sessionStats.count() != 0)) {
179             return true;
180         }
181         return false;
182     }
183 
184     public long actionCount() {
185         return ((Long)((NSDictionary)currentItem).objectForKey("Served")).longValue();
186     }
187 
188     public double actionAvg() {
189         return ((Double)((NSDictionary)currentItem).objectForKey("Avg Resp. Time")).doubleValue();
190     }
191 
192     public double actionMin() {
193         return ((Double)((NSDictionary)currentItem).objectForKey("Min Resp. Time")).doubleValue();
194     }
195 
196     public double actionMax() {
197         return ((Double)((NSDictionary)currentItem).objectForKey("Max Resp. Time")).doubleValue();
198     }
199 
200     protected static String _timeIntervalDescription(long aTimeInterval) {
201         String aTimeIntervalString;
202         long timeInterval = aTimeInterval / 1000;
203         long days;
204         long hours;
205         long minutes;
206         long seconds;
207 
208         days = (timeInterval / (60*60*24));
209         timeInterval = timeInterval - (days * (60*60*24));
210 
211         hours = (timeInterval / (60*60));
212         timeInterval = timeInterval - (hours * (60*60));
213 
214         minutes = (timeInterval / (60));
215         timeInterval = timeInterval - (minutes * (60));
216 
217         seconds = timeInterval;
218 
219         aTimeIntervalString = days+" days, "+hours+" hours, "+minutes+" minutes, "+seconds+" seconds";
220         return aTimeIntervalString;
221     }
222 
223     public String vendorDescription() {
224         return System.getProperty("java.vendor");
225     }
226 
227     public String vendorURL() {
228         return System.getProperty("java.vendor.url");
229     }
230 
231     public boolean vendorURLdisabled() {
232         String url = vendorURL();
233         if (url == null || url.length() == 0)
234             return true;
235         return false;
236     }
237 
238     public String jdkVersion() {
239         return System.getProperty("java.version");
240     }
241     
242     public String operatingSystem() {
243         return System.getProperty("os.name") + " " + System.getProperty("os.version") + " " + System.getProperty("os.arch");
244     }
245     
246 }