KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > console > logmanager > LogViewerPortlet


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.apache.geronimo.console.logmanager;
19
20 import java.io.IOException JavaDoc;
21 import java.io.Serializable JavaDoc;
22 import java.io.File JavaDoc;
23
24 import javax.portlet.PortletConfig;
25 import javax.portlet.PortletContext;
26 import javax.portlet.PortletException;
27 import javax.portlet.PortletRequestDispatcher;
28 import javax.portlet.RenderRequest;
29 import javax.portlet.RenderResponse;
30 import javax.portlet.WindowState;
31 import javax.portlet.PortletSession;
32
33 import org.apache.geronimo.console.BasePortlet;
34 import org.apache.geronimo.console.util.PortletManager;
35 import org.apache.geronimo.system.logging.SystemLog;
36
37 public class LogViewerPortlet extends BasePortlet {
38     private final static String JavaDoc CRITERIA_KEY = "org.apache.geronimo.console.log.CRITERIA";
39
40     protected PortletRequestDispatcher searchView;
41
42     protected PortletRequestDispatcher helpView;
43
44     protected void doHelp(RenderRequest renderRequest,
45             RenderResponse renderRespose) throws PortletException, IOException JavaDoc {
46         helpView.include(renderRequest, renderRespose);
47     }
48
49     protected void doView(RenderRequest renderRequest,
50             RenderResponse renderRespose) throws PortletException, IOException JavaDoc {
51         if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
52             return;
53         }
54         String JavaDoc action = renderRequest.getParameter("action");
55
56         SystemLog log = PortletManager.getCurrentSystemLog(renderRequest);
57         String JavaDoc[] logFiles = log.getLogFileNames();
58         LogFile[] files = new LogFile[logFiles.length];
59         for (int i = 0; i < files.length; i++) {
60             files[i] = new LogFile(logFiles[i]);
61         }
62         Criteria criteria;
63         if ("refresh".equals(action)) {
64             criteria = (Criteria) renderRequest.getPortletSession(true).getAttribute(CRITERIA_KEY, PortletSession.PORTLET_SCOPE);
65         } else {
66             String JavaDoc startPos = renderRequest.getParameter("startPos");
67             String JavaDoc endPos = renderRequest.getParameter("endPos");
68             String JavaDoc maxRows = renderRequest.getParameter("maxRows");
69             String JavaDoc logLevel = renderRequest.getParameter("logLevel");
70             String JavaDoc searchString = renderRequest.getParameter("searchString");
71             String JavaDoc stackTraces = renderRequest.getParameter("stackTraces");
72             String JavaDoc logFile = renderRequest.getParameter("logFile");
73             if(logFile == null || logFile.equals("")) {
74                 logFile = logFiles[0];
75             }
76             if(logLevel == null || logLevel.equals("")) {
77                 logLevel = "WARN";
78             }
79             if(maxRows == null || maxRows.equals("")) {
80                 maxRows = "10";
81             }
82             criteria = new Criteria();
83             criteria.max = Integer.parseInt(maxRows);
84             criteria.start = startPos == null || startPos.equals("") ? null : new Integer JavaDoc(startPos);
85             criteria.stop = endPos == null || endPos.equals("") ? null : new Integer JavaDoc(endPos);
86             criteria.logFile = logFile;
87             criteria.stackTraces = stackTraces != null && !stackTraces.equals("");
88             criteria.level = logLevel;
89             criteria.text = searchString == null || searchString.equals("") ? null : searchString;
90             renderRequest.getPortletSession(true).setAttribute(CRITERIA_KEY, criteria, PortletSession.PORTLET_SCOPE);
91         }
92
93         SystemLog.SearchResults results = log.getMatchingItems(criteria.logFile, criteria.start, criteria.stop,
94                         criteria.level, criteria.text, criteria.max, criteria.stackTraces);
95         renderRequest.setAttribute("searchResults", results.getResults());
96         renderRequest.setAttribute("lineCount", new Integer JavaDoc(results.getLineCount()));
97         renderRequest.setAttribute("startPos", criteria.start);
98         renderRequest.setAttribute("endPos", criteria.stop);
99         renderRequest.setAttribute("logLevel", criteria.level);
100         renderRequest.setAttribute("searchString", criteria.text);
101         renderRequest.setAttribute("maxRows", Integer.toString(criteria.max));
102         renderRequest.setAttribute("logFile", criteria.logFile);
103         renderRequest.setAttribute("logFiles", files);
104         if(criteria.stackTraces) {
105             renderRequest.setAttribute("stackTraces", Boolean.TRUE);
106         }
107         if(results.isCapped()) {
108             renderRequest.setAttribute("capped", Boolean.TRUE);
109         }
110
111         searchView.include(renderRequest, renderRespose);
112     }
113
114     public void init(PortletConfig portletConfig) throws PortletException {
115         PortletContext pc = portletConfig.getPortletContext();
116         searchView = pc
117                 .getRequestDispatcher("/WEB-INF/view/logmanager/search.jsp");
118         helpView = pc
119                 .getRequestDispatcher("/WEB-INF/view/logmanager/viewhelp.jsp");
120         super.init(portletConfig);
121     }
122
123     private static class Criteria implements Serializable JavaDoc {
124         int max;
125         Integer JavaDoc start;
126         Integer JavaDoc stop;
127         String JavaDoc text;
128         String JavaDoc level;
129         String JavaDoc logFile;
130         boolean stackTraces;
131     }
132
133     public static class LogFile {
134         private String JavaDoc fullName;
135         private String JavaDoc name;
136
137         public LogFile(String JavaDoc fullName) {
138             this.fullName = fullName;
139             //todo: what if portla JVM has different separator than server JVM?
140
int pos = fullName.lastIndexOf(File.separatorChar);
141             if(pos > -1) {
142                 name = fullName.substring(pos+1);
143             } else {
144                 name = fullName;
145             }
146         }
147
148         public String JavaDoc getFullName() {
149             return fullName;
150         }
151
152         public String JavaDoc getName() {
153             return name;
154         }
155     }
156 }
Popular Tags