Author: asmuts
Date: Wed Apr 12 09:40:20 2006
New Revision: 393501

URL: http://svn.apache.org/viewcvs?rev=393501&view=rev
Log:
Improved the jcs admin jsp:
added stats details, better navigation, item lookup, and remove confirmation.

Modified:
    jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp?rev=393501&r1=393500&r2=393501&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/admin/JCSAdmin.jsp Wed Apr 12 
09:40:20 2006
@@ -1,193 +1,271 @@
-<%@ page import="java.util.HashMap"%>
-<%@ page import="java.util.List"%>
-<%@ page import="java.util.LinkedList"%>
-<%@ page import="java.util.Iterator"%>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.apache.jcs.admin.*" %>
+<%@ page import="org.apache.jcs.*" %>
 
-<%@ page import="org.apache.jcs.admin.*"%>
-
-
-<jsp:useBean id="jcsBean" scope="request"
-       class="org.apache.jcs.admin.JCSAdminBean" />
+<jsp:useBean id="jcsBean" scope="request" 
class="org.apache.jcs.admin.JCSAdminBean" />
 
 <html>
 
 <head>
-<title>JCS Admin Servlet</title>
-</head>
 
-<body>
+<SCRIPT LANGUAGE="Javascript">
+  function decision( message, url )
+  {
+    if( confirm(message) )
+    {
+      location.href = url;
+    }  
+  }
+</SCRIPT>
 
+<title> JCS Admin Servlet </title>
 
-<%String CACHE_NAME_PARAM = "cacheName";
-            String ACTION_PARAM = "action";
-            String CLEAR_ALL_REGIONS_ACTION = "clearAllRegions";
-            String CLEAR_REGION_ACTION = "clearRegion";
-            String REMOVE_ACTION = "remove";
-            String DETAIL_ACTION = "detail";
-            String KEY_PARAM = "key";
-            String SILENT_PARAM = "silent";
-
-            String DEFAULT_TEMPLATE_NAME = "DEFAULT";
-            String REGION_DETAIL_TEMPLATE_NAME = "DETAIL";
-
-            String templateName = DEFAULT_TEMPLATE_NAME;
-
-            HashMap context = new HashMap();
-
-            // Get cacheName for actions from request (might be null)
-            String cacheName = request.getParameter( CACHE_NAME_PARAM );
-
-            // If an action was provided, handle it
-            String action = request.getParameter( ACTION_PARAM );
-
-            if ( action != null )
-            {
-                if ( action.equals( CLEAR_ALL_REGIONS_ACTION ) )
-                {
-                    jcsBean.clearAllRegions();
-                }
-                else if ( action.equals( CLEAR_REGION_ACTION ) )
-                {
-                    if ( cacheName == null )
-                    {
-                        // Not Allowed
-                    }
-                    else
-                    {
-                        jcsBean.clearRegion( cacheName );
-                    }
-                }
-                else if ( action.equals( REMOVE_ACTION ) )
-                {
-                    String[] keys = request.getParameterValues( KEY_PARAM );
-
-                    for ( int i = 0; i < keys.length; i++ )
-                    {
-                        jcsBean.removeItem( cacheName, keys[i] );
-                    }
-
-                    templateName = REGION_DETAIL_TEMPLATE_NAME;
-                }
-                else if ( action.equals( DETAIL_ACTION ) )
-                {
-                    templateName = REGION_DETAIL_TEMPLATE_NAME;
-                }
-            }
-
-            if ( request.getParameter( SILENT_PARAM ) != null )
-            {
-                // If silent parameter was passed, no output should be 
produced.
-
-                //return null;
-            }
-            else
-            {
-                // Populate the context based on the template
-
-                if ( templateName == REGION_DETAIL_TEMPLATE_NAME )
-                {
-                    //context.put( "cacheName", cacheName );
-                    context.put( "elementInfoRecords", 
jcsBean.buildElementInfo( cacheName ) );
-                }
-                else if ( templateName == DEFAULT_TEMPLATE_NAME )
-                {
-                    context.put( "cacheInfoRecords", jcsBean.buildCacheInfo() 
);
-                }
-
-            }
-
-            //handle display
-            if ( templateName == REGION_DETAIL_TEMPLATE_NAME )
-            {
-
-                %>
-
-<h1>Keys for region: $cacheName</h1>
-
-<table border="1" cellpadding="5">
-       <tr>
-               <th>Key</th>
-               <th>Eternal?</th>
-               <th>Create time</th>
-               <th>Max Life (s)</th>
-               <th>Till Expiration (s)</th>
-       </tr>
-       <%List list = (List) context.get( "elementInfoRecords" );
-                Iterator it = list.iterator();
-                while ( it.hasNext() )
-                {
-                    CacheElementInfo element = (CacheElementInfo) it.next();
-
-                    %>
-       <tr>
-               <td><%=element.getKey()%></td>
-               <td><%=element.isEternal()%></td>
-               <td><%=element.getCreateTime()%></td>
-               <td><%=element.getMaxLifeSeconds()%></td>
-               <td><%=element.getExpiresInSeconds()%></td>
-               <td><a
-                       
href="?action=remove&cacheName=<%=cacheName%>&key=<%=element.getKey()%>">
-               Remove </a></td>
-       </tr>
-
-       <%}
-
-            }
-            else
-            {
-
-                %>
-
-       <h1>Cache Regions</h1>
-
-       <p>These are the regions which are currently defined in the cache.
-       'Items' and 'Bytes' refer to the elements currently in memory (not
-       spooled). You can clear all items for a region by selecting 'Remove
-       all' next to the desired region below. You can also <a
-               href="?action=clearAllRegions">Clear all regions</a> which 
empties the
-       entire cache.</p>
-
-       <table border="1" cellpadding="5">
-               <tr>
-                       <th>Cache Name</th>
-                       <th>Items</th>
-                       <th>Bytes</th>
-                       <th>Status</th>
-                       <th>Memory Hits</th>
-                       <th>Aux Hits</th>
-                       <th>Not Found Misses</th>
-                       <th>Expired Misses</th>
-               </tr>
-
-               <%List list = (List) context.get( "cacheInfoRecords" );
-                Iterator it = list.iterator();
-                while ( it.hasNext() )
-                {
-                    CacheRegionInfo record = (CacheRegionInfo) it.next();
-
-                    %>
-               <tr>
-                       <td><%=record.getCache().getCacheName()%></td>
-                       <td><%=record.getCache().getSize()%></td>
-                       <td><%=record.getByteCount()%></td>
-                       <td><%=record.getStatus()%></td>
-                       <td><%=record.getCache().getHitCountRam()%></td>
-                       <td><%=record.getCache().getHitCountAux()%></td>
-                       <td><%=record.getCache().getMissCountNotFound()%></td>
-                       <td><%=record.getCache().getMissCountExpired()%></td>
-                       <td><a
-                               
href="?action=detail&cacheName=<%=record.getCache().getCacheName()%>">
-                       Detail </a> | <a
-                               
href="?action=clearRegion&cacheName=<%=record.getCache().getCacheName()%>">
-                       Remove all </a></td>
-               </tr>
-               <%}
+</head>
+
+<body>
 
-            }
+<%
+                       String CACHE_NAME_PARAM = "cacheName";
+                       String ACTION_PARAM = "action";
+                       String CLEAR_ALL_REGIONS_ACTION = "clearAllRegions";
+                       String CLEAR_REGION_ACTION = "clearRegion";
+                       String REMOVE_ACTION = "remove";
+                       String DETAIL_ACTION = "detail";                        
+                       String ITEM_ACTION = "item";                    
+                       String KEY_PARAM = "key";
+                       String SILENT_PARAM = "silent";
+
+               String DEFAULT_TEMPLATE_NAME = "DEFAULT";
+               String REGION_DETAIL_TEMPLATE_NAME = "DETAIL";
+               String ITEM_TEMPLATE_NAME = "ITEM";
+               
+                       String templateName = DEFAULT_TEMPLATE_NAME;
+                       
+                       HashMap context = new HashMap();
+               
+                       // Get cacheName for actions from request (might be 
null)
+                       String cacheName = request.getParameter( 
CACHE_NAME_PARAM );
+
+                       if ( cacheName != null )
+                       {
+                           cacheName = cacheName.trim();
+                       }
+                       
+                       // If an action was provided, handle it
+                       String action = request.getParameter( ACTION_PARAM );
+
+                       if ( action != null )
+                       {
+                               if ( action.equals( CLEAR_ALL_REGIONS_ACTION ) )
+                               {
+                                       jcsBean.clearAllRegions();
+                               }
+                               else if ( action.equals( CLEAR_REGION_ACTION ) )
+                               {
+                                       if ( cacheName == null )
+                                       {
+                                               // Not Allowed
+                                       }
+                                       else
+                                       {
+                                               jcsBean.clearRegion( cacheName 
);
+                                       }
+                               }
+                               else if ( action.equals( REMOVE_ACTION ) )
+                               {
+                                       String[] keys = 
request.getParameterValues( KEY_PARAM );
+
+                                       for ( int i = 0; i < keys.length; i++ )
+                                       {
+                                               jcsBean.removeItem( cacheName, 
keys[ i ] );
+                                       }
+
+                                       templateName = 
REGION_DETAIL_TEMPLATE_NAME;
+                               }
+                               else if ( action.equals( DETAIL_ACTION ) )
+                               {
+                                       templateName = 
REGION_DETAIL_TEMPLATE_NAME;
+                               }
+                               else if ( action.equals( ITEM_ACTION ) )
+                               {
+                                       templateName = ITEM_TEMPLATE_NAME;
+                               }
+                       }
+
+                       if ( request.getParameter( SILENT_PARAM ) != null )
+                       {
+                               // If silent parameter was passed, no output 
should be produced.
+                               //return null;
+                       }
+                       else
+                       {
+                               // Populate the context based on the template
+                               if ( templateName == 
REGION_DETAIL_TEMPLATE_NAME )
+                               {
+                                       //context.put( "cacheName", cacheName );
+                                       context.put( "elementInfoRecords", 
jcsBean.buildElementInfo( cacheName ) );
+                               }
+                               else if ( templateName == DEFAULT_TEMPLATE_NAME 
)
+                               {
+                                       context.put( "cacheInfoRecords", 
jcsBean.buildCacheInfo() );
+                               }
+                       }
+       
+///////////////////////////////////////////////////////////////////////////////////
    
+                       //handle display
+
+                       if ( templateName == ITEM_TEMPLATE_NAME ) 
+                       {
+                           String key = request.getParameter( KEY_PARAM );
+                           
+                           if ( key != null )
+                           {
+                               key = key.trim();
+                           }
+
+                           JCS cache = JCS.getInstance( cacheName );
+                           
+                               org.apache.jcs.engine.behavior.ICacheElement 
element = cache.getCacheElement( key );
+%>
+<h1> Item for key [<%=key%>] in region [<%=cacheName%>] </h1>
+
+<a href="JCSAdmin.jsp?action=detail&cacheName=<%=cacheName%>">Region 
Detail</a> 
+| <a href="JCSAdmin.jsp">All Regions</a>
+
+  <pre>
+       <%=element%>
+  </pre>       
+<%
+                       }    
+                       else
+                       if ( templateName == REGION_DETAIL_TEMPLATE_NAME ) 
+                       {
+%>
+
+<h1> Detail for region [<%=cacheName%>] </h1>
+
+<a href="JCSAdmin.jsp">All Regions</a>
+
+<table border="1" cellpadding="5" >
+    <tr>
+        <th> Key </th>
+        <th> Eternal? </th>
+        <th> Create time </th>
+        <th> Max Life (s) </th>
+        <th> Till Expiration (s) </th>
+    </tr>
+<%
+       List list = (List)context.get( "elementInfoRecords" );
+    Iterator it = list.iterator();
+    while ( it.hasNext() ) {
+       CacheElementInfo element = (CacheElementInfo)it.next();  
+%>
+        <tr>
+            <td> <%=element.getKey()%> </td>
+            <td> <%=element.isEternal()%> </td>
+            <td> <%=element.getCreateTime()%> </td>
+            <td> <%=element.getMaxLifeSeconds()%> </td>
+            <td> <%=element.getExpiresInSeconds()%> </td>
+            <td>
+             <a 
href="JCSAdmin.jsp?action=item&cacheName=<%=cacheName%>&key=<%=element.getKey()%>">
 View </a>
+            | <a 
href="JCSAdmin.jsp?action=remove&cacheName=<%=cacheName%>&key=<%=element.getKey()%>">
 Remove </a>
+            </td>
+        </tr>
+<%
+    }
+    
+    JCS cache = JCS.getInstance( cacheName );
+    String stats = cache.getStats();
+%>  
+    </table>
+    
+    <br>
+<b> Stats for region [<%=cacheName%>] </b>
+
+    <pre>
+       <%=stats%>
+    </pre>    
+<%                     
+  } 
+  else 
+  {
+%>
+
+<h1> Cache Regions </h1>
+
+<p>
+These are the regions which are currently defined in the cache. 'Items' and
+'Bytes' refer to the elements currently in memory (not spooled). You can clear
+all items for a region by selecting 'Remove all' next to the desired region
+below. You can also <a href="javascript:decision('Clicking OK will clear all 
the data from all regions!','JCSAdmin.jsp?action=clearAllRegions')">Clear all 
regions</a>
+which empties the entire cache.
+</p>
+<p>
+       <form action="JCSAdmin.jsp">
+               <input type="hidden" name="action" value="item">
+               Retrieve (key) <input type="text" name="key"> &nbsp;
+               (region) <select name="cacheName">
+<%
+  List listSelect = (List)context.get( "cacheInfoRecords" );
+  Iterator itSelect = listSelect.iterator();
+  while ( itSelect.hasNext() ) 
+  {
+       CacheRegionInfo record = (CacheRegionInfo)itSelect.next();
+       %>
+    <option 
value="<%=record.getCache().getCacheName()%>"><%=record.getCache().getCacheName()%></option>
+       <%
+  }            
+%>             
+                               </select>
+               <input type="submit">
+       </form>
+</p>
+
+<table border="1" cellpadding="5" >
+    <tr>
+        <th> Cache Name </th>
+        <th> Items </th>
+        <th> Bytes </th>
+        <th> Status </th>
+        <th> Memory Hits </th>
+        <th> Aux Hits </th>
+        <th> Not Found Misses </th>
+        <th> Expired Misses </th>
+    </tr>
+
+<%
+       List list = (List)context.get( "cacheInfoRecords" );
+    Iterator it = list.iterator();
+    while (it.hasNext() ) 
+    {
+       CacheRegionInfo record = (CacheRegionInfo)it.next();
+
+%>
+        <tr>
+            <td> <%=record.getCache().getCacheName()%> </td>
+            <td> <%=record.getCache().getSize()%> </td>
+            <td> <%=record.getByteCount()%> </td>
+            <td> <%=record.getStatus()%> </td>
+            <td> <%=record.getCache().getHitCountRam()%> </td>
+            <td> <%=record.getCache().getHitCountAux()%> </td>
+            <td> <%=record.getCache().getMissCountNotFound()%> </td>
+            <td> <%=record.getCache().getMissCountExpired()%> </td>
+            <td>   
+                <a 
href="JCSAdmin.jsp?action=detail&cacheName=<%=record.getCache().getCacheName()%>">
 Detail </a>
+                | <a href="javascript:decision('Clicking OK will remove all 
the data from the region 
[<%=record.getCache().getCacheName()%>]!','JCSAdmin.jsp?action=clearRegion&cacheName=<%=record.getCache().getCacheName()%>')">
 Remove all </a>
+            </td>
+        </tr>
+<%  
+    }
+%>  
+    </table>   
+<%     
+  }            
+%>
 
-        %>
 
-       </table>
 </body>
 
 </html>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to