001    /**
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    package org.apache.geronimo.monitoring.console;
018    
019    import java.io.IOException;
020    import java.sql.Connection;
021    import java.sql.PreparedStatement;
022    import java.sql.ResultSet;
023    import java.sql.SQLException;
024    import java.sql.Statement;
025    
026    import javax.portlet.ActionRequest;
027    import javax.portlet.ActionResponse;
028    import javax.portlet.GenericPortlet;
029    import javax.portlet.PortletConfig;
030    import javax.portlet.PortletException;
031    import javax.portlet.PortletRequestDispatcher;
032    import javax.portlet.RenderRequest;
033    import javax.portlet.RenderResponse;
034    
035    import org.apache.geronimo.monitoring.console.util.DBManager;
036    import org.apache.geronimo.crypto.EncryptionManager;
037    
038    /**
039     * STATS
040     */
041    public class MonitoringPortlet extends GenericPortlet {
042    
043        private static final String NORMALVIEW_JSP = "/WEB-INF/view/monitoringNormal.jsp";
044    
045        private static final String VIEWVIEWS_JSP = "/WEB-INF/view/monitoringViews.jsp";
046    
047        private static final String VIEWSERVERS_JSP = "/WEB-INF/view/monitoringServers.jsp";
048    
049        private static final String VIEWGRAPHS_JSP = "/WEB-INF/view/monitoringGraphs.jsp";
050    
051        private static final String PAGEVIEW_JSP = "/WEB-INF/view/monitoringPage.jsp";
052    
053        private static final String EDITVIEW_JSP = "/WEB-INF/view/monitoringEditView.jsp";
054    
055        private static final String ADDVIEW_JSP = "/WEB-INF/view/monitoringAddView.jsp";
056    
057        private static final String ADDGRAPH_JSP = "/WEB-INF/view/monitoringAddGraph.jsp";
058    
059        private static final String EDITGRAPH_JSP = "/WEB-INF/view/monitoringEditGraph.jsp";
060    
061        private static final String VIEWSERVER_JSP = "/WEB-INF/view/monitoringViewServer.jsp";
062    
063        private static final String EDITSERVER_JSP = "/WEB-INF/view/monitoringEditServer.jsp";
064    
065        private static final String ADDSERVER_JSP = "/WEB-INF/view/monitoringAddServer.jsp";
066    
067        private static final String HELPVIEW_JSP = "/WEB-INF/view/monitoringHelp.jsp";
068    
069        private static final String EDITNORMALVIEW_JSP = "/WEB-INF/view/monitoringEdit.jsp";
070    
071        private PortletRequestDispatcher normalView;
072    
073        private PortletRequestDispatcher viewViews;
074    
075        private PortletRequestDispatcher viewServers;
076    
077        private PortletRequestDispatcher viewGraphs;
078    
079        private PortletRequestDispatcher pageView;
080    
081        private PortletRequestDispatcher editView;
082    
083        private PortletRequestDispatcher addView;
084    
085        private PortletRequestDispatcher addGraph;
086    
087        private PortletRequestDispatcher editGraph;
088    
089        private PortletRequestDispatcher viewServer;
090    
091        private PortletRequestDispatcher editServer;
092    
093        private PortletRequestDispatcher addServer;
094    
095        private PortletRequestDispatcher helpView;
096    
097        private PortletRequestDispatcher editNormalView;
098    
099        @Override
100        public void processAction(ActionRequest actionRequest,
101                ActionResponse actionResponse) throws PortletException, IOException {
102            String action = actionRequest.getParameter("action");
103            actionResponse.setRenderParameter("action", action);
104            if (action.equals("showView")) {
105                String view_id = actionRequest.getParameter("view_id");
106                actionResponse.setRenderParameter("view_id", view_id);
107            } else if (action.equals("showAllViews")) {
108                // no parameters needed to be redirected to doView()
109            } else if (action.equals("showAllServers")) {
110                // no parameters needed to be redirected to doView()
111            } else if (action.equals("showAllGraphs")) {
112                // no parameters needed to be redirected to doView()
113            } else if (action.equals("showEditView")) {
114                String view_id = actionRequest.getParameter("view_id");
115                actionResponse.setRenderParameter("view_id", view_id);
116            } else if (action.equals("saveEditView")) {
117                updateView(actionRequest, actionResponse);
118            } else if (action.equals("showAddView")) {
119                // no parameters needed to be redirected to doView()
120            } else if (action.equals("saveAddView")) {
121                addView(actionRequest, actionResponse);
122            } else if (action.equals("showAddGraph")) {
123                String server_id = actionRequest.getParameter("server_id");
124                if (server_id != null)
125                    actionResponse.setRenderParameter("server_id", server_id);
126    
127                String mbean = actionRequest.getParameter("mbean");
128                if (mbean != null)
129                    actionResponse.setRenderParameter("mbean", mbean);
130    
131                String dataname = actionRequest.getParameter("dataname");
132                if (dataname != null)
133                    actionResponse.setRenderParameter("dataname", dataname);
134            } else if (action.equals("saveAddGraph")) {
135                addGraph(actionRequest, actionResponse);
136            } else if (action.equals("showEditGraph")) {
137                String graph_id = actionRequest.getParameter("graph_id");
138                actionResponse.setRenderParameter("graph_id", graph_id);
139            } else if (action.equals("saveEditGraph")) {
140                updateGraph(actionRequest, actionResponse);
141            } else if (action.equals("deleteGraph")) {
142                deleteGraph(actionRequest, actionResponse);
143            } else if (action.equals("deleteView")) {
144                deleteView(actionRequest, actionResponse);
145            } else if (action.equals("showServer")) {
146                String server_id = actionRequest.getParameter("server_id");
147                actionResponse.setRenderParameter("server_id", server_id);
148            } else if (action.equals("showEditServer")) {
149                String server_id = actionRequest.getParameter("server_id");
150                actionResponse.setRenderParameter("server_id", server_id);
151            } else if (action.equals("saveEditServer")) {
152                updateServer(actionRequest, actionResponse);
153            } else if (action.equals("showAddServer")) {
154                // no parameters needed to be redirected to doView()
155            } else if (action.equals("deleteServer")) {
156                deleteServer(actionRequest, actionResponse);
157            } else if (action.equals("saveAddServer")) {
158                addServer(actionRequest, actionResponse);
159            } else if (action.equals("startTrackingMbean")) {
160                String server_id = actionRequest.getParameter("server_id");
161                actionResponse.setRenderParameter("server_id", server_id);
162                String mbean = actionRequest.getParameter("mbean");
163                actionResponse.setRenderParameter("mbean", mbean);
164            } else if (action.equals("stopTrackingMbean")) {
165                String server_id = actionRequest.getParameter("server_id");
166                actionResponse.setRenderParameter("server_id", server_id);
167                String mbean = actionRequest.getParameter("mbean");
168                actionResponse.setRenderParameter("mbean", mbean);
169            } else if (action.equals("stopThread")
170                    || action.equals("disableServerViewQuery")) {
171                String server_id = actionRequest.getParameter("server_id");
172                String message = stopThread(server_id);
173                actionResponse.setRenderParameter("server_id", server_id);
174                actionResponse.setRenderParameter("message", message);
175            } else if (action.equals("startThread")
176                    || action.equals("enableServerViewQuery")) {
177                String server_id = actionRequest.getParameter("server_id");
178                String snapshotDuration = actionRequest
179                        .getParameter("snapshotDuration");
180                String message = startThread(server_id, new Long(snapshotDuration));
181                actionResponse.setRenderParameter("message", message);
182                actionResponse.setRenderParameter("server_id", server_id);
183                actionResponse.setRenderParameter("snapshotDuration",
184                        snapshotDuration);
185            } else if (action.equals("disableServer")
186                    || action.equals("disableEditServer")) {
187                String server_id = actionRequest.getParameter("server_id");
188                actionResponse.setRenderParameter("server_id", server_id);
189                ;
190                actionResponse.setRenderParameter("message", alterServerState(
191                        server_id, false));
192            } else if (action.equals("enableServer")
193                    || action.equals("enableEditServer")) {
194                String server_id = actionRequest.getParameter("server_id");
195                actionResponse.setRenderParameter("message", alterServerState(
196                        server_id, true));
197                actionResponse.setRenderParameter("server_id", server_id);
198                ;
199            } else if (action.equals("testAddServerConnection")) {
200                String name = actionRequest.getParameter("name");
201                String ip = actionRequest.getParameter("ip");
202                String username = actionRequest.getParameter("username");
203                String password = actionRequest.getParameter("password");
204                String password2 = actionRequest.getParameter("password2");
205                Integer port = Integer.parseInt(actionRequest.getParameter("port"));
206                Integer protocol = Integer.parseInt(actionRequest.getParameter("protocol"));
207                String message = testConnection(name, ip, username, password, port, protocol);
208                actionResponse.setRenderParameter("message", message);
209                actionResponse.setRenderParameter("name", name);
210                actionResponse.setRenderParameter("username", username);
211                actionResponse.setRenderParameter("ip", ip);
212                actionResponse.setRenderParameter("password", password);
213                actionResponse.setRenderParameter("password2", password2);
214                actionResponse.setRenderParameter("port", "" + port);
215                actionResponse.setRenderParameter("protocol", "" + protocol); 
216            } else if (action.equals("testEditServerConnection")) {
217                String name = actionRequest.getParameter("name");
218                String ip = actionRequest.getParameter("ip");
219                String username = actionRequest.getParameter("username");
220                String password = actionRequest.getParameter("password");
221                String password2 = actionRequest.getParameter("password2");
222                String server_id = actionRequest.getParameter("server_id");
223                String snapshot = actionRequest.getParameter("snapshot");
224                String retention = actionRequest.getParameter("retention");
225                Integer port = Integer.parseInt(actionRequest.getParameter("port"));
226                Integer protocol = Integer.parseInt(actionRequest.getParameter("protocol"));
227                if(snapshot == null) {
228                    snapshot = "";
229                }
230                if(retention == null) {
231                    retention = "";
232                }
233                String message = testConnection(name, ip, username, password, port, protocol);
234                actionResponse.setRenderParameter("message", message);
235                actionResponse.setRenderParameter("name", name);
236                actionResponse.setRenderParameter("username", username);
237                actionResponse.setRenderParameter("ip", ip);
238                actionResponse.setRenderParameter("password", password);
239                actionResponse.setRenderParameter("password2", password2);
240                actionResponse.setRenderParameter("snapshot", snapshot);
241                actionResponse.setRenderParameter("server_id", server_id);
242                actionResponse.setRenderParameter("retention", retention);
243                actionResponse.setRenderParameter("port", "" + port);
244                actionResponse.setRenderParameter("protocol", "" + protocol);
245            }
246        }
247    
248        private String testConnection(String name, String ip, String username,
249                String password, int port, int protocol) {
250            try {
251                MRCConnector mrc = new MRCConnector(ip, username, password, port, protocol);
252    
253                return "<font color=\"green\"><strong><li>Connection was successfully established.</li></strong></font>";
254            } catch (Exception e) {
255                return "<font color=\"red\"><strong><li>Failed to create a connection to server.</li></strong></font>";
256            }
257        }
258    
259        private String alterServerState(String server_id, boolean b) {
260            Connection conn = (new DBManager()).getConnection();
261            String message = "";
262            String name = "";
263            try {
264                PreparedStatement pStmt = conn
265                        .prepareStatement("SELECT * FROM servers WHERE server_id="
266                                + server_id);
267                ResultSet rs = pStmt.executeQuery();
268                if (rs.next()) {
269                    name = rs.getString("name");
270                }
271                rs.close();
272                conn.close();
273                conn = (new DBManager()).getConnection();
274                Statement stmt = conn.createStatement();
275                if (!b) {
276                    stmt
277                            .executeUpdate("UPDATE SERVERS SET ENABLED = 0 WHERE SERVER_ID="
278                                    + server_id);
279                    stmt
280                            .executeUpdate("UPDATE GRAPHS SET ENABLED = 0 WHERE SERVER_ID="
281                                    + server_id);
282                    message = "<font color=\"green\"><strong><li>Server " + name
283                            + " was successfully disabled.</li></strong></font>";
284                } else {
285                    stmt
286                            .executeUpdate("UPDATE SERVERS SET ENABLED = 1 WHERE SERVER_ID="
287                                    + server_id);
288                    stmt
289                            .executeUpdate("UPDATE GRAPHS SET ENABLED = 1 WHERE SERVER_ID="
290                                    + server_id);
291                    message = "<font color=\"green\"><strong><li>Server " + name
292                            + " was successfully enabled.</li></strong></font>";
293                }
294            } catch (SQLException e) {
295                if (!b)
296                    message = "<font color=\"red\"><strong><li>[ERROR] Server with server_id = "
297                            + server_id
298                            + " could not be disabled.</li></strong></font>";
299                else
300                    message = "<font color=\"red\"><strong><li>[ERROR] Server with server_id = "
301                            + server_id
302                            + " could not be enabled.</li></strong></font>";
303            } finally {
304                if (conn != null) {
305                    try {
306                        conn.close();
307                    } catch (Exception e) {
308    
309                    }
310                }
311            }
312            return message;
313        }
314    
315        @Override
316        public void doView(RenderRequest request, RenderResponse response)
317                throws PortletException, IOException {
318            String action = request.getParameter("action");
319            if (action == null)
320                action = "showNormal";
321            if (action.equals("showView")) {
322                String view_id = request.getParameter("view_id");
323                request.setAttribute("view_id", view_id);
324                pageView.include(request, response);
325            } else if (action.equals("showAllViews")) {
326                request.setAttribute("message", "");
327                viewViews.include(request, response);
328            } else if (action.equals("showAllServers")) {
329                request.setAttribute("message", "");
330                viewServers.include(request, response);
331            } else if (action.equals("showAllGraphs")) {
332                request.setAttribute("message", "");
333                viewGraphs.include(request, response);
334            } else if (action.equals("showServer")) {
335                String server_id = request.getParameter("server_id");
336                request.setAttribute("server_id", server_id);
337                viewServer.include(request, response);
338            } else if (action.equals("startTrackingMbean")) {
339                String server_id = request.getParameter("server_id");
340                request.setAttribute("server_id", server_id);
341                String mbean = request.getParameter("mbean");
342                request.setAttribute("mbean", mbean);
343                String message = startTrackingMbean(server_id, mbean);
344                request.setAttribute("message", message);
345                viewServer.include(request, response);
346            } else if (action.equals("stopTrackingMbean")) {
347                String server_id = request.getParameter("server_id");
348                request.setAttribute("server_id", server_id);
349                String mbean = request.getParameter("mbean");
350                request.setAttribute("mbean", mbean);
351                String message = stopTrackingMbean(server_id, mbean);
352                request.setAttribute("message", message);
353                viewServer.include(request, response);
354            } else if (action.equals("stopThread")) {
355                String server_id = request.getParameter("server_id");
356                String message = request.getParameter("message");
357                request.setAttribute("message", message);
358                normalView.include(request, response);
359            } else if (action.equals("startThread")) {
360                String server_id = request.getParameter("server_id");
361                Long snapshotDuration = java.lang.Long.parseLong(
362                        request.getParameter("snapshotDuration"));
363                String message = request.getParameter("message");
364                request.setAttribute("message", message);
365                normalView.include(request, response);
366            } else if (action.equals("disableServerViewQuery") || action.equals("enableServerViewQuery")) {
367                String server_id = request.getParameter("server_id");
368                String message = request.getParameter("message");
369                request.setAttribute("message", message);
370                request.setAttribute("server_id", server_id);
371                viewServer.include(request, response);
372            } else {
373                request.setAttribute("message", request.getParameter("message"));
374                normalView.include(request, response);
375            }
376        }
377    
378        @Override
379        protected void doHelp(RenderRequest renderRequest,
380                RenderResponse renderResponse) throws PortletException, IOException {
381            helpView.include(renderRequest, renderResponse);
382        }
383    
384        @Override
385        protected void doEdit(RenderRequest request, RenderResponse response)
386                throws PortletException, IOException {
387            String action = request.getParameter("action");
388            if (action == null)
389                action = "showNormal";
390            if (action.equals("showEditView")) {
391                String view_id = request.getParameter("view_id");
392                request.setAttribute("view_id", view_id);
393                editView.include(request, response);
394            } else if (action.equals("saveEditView")) {
395                String view_id = request.getParameter("view_id");
396                request.setAttribute("view_id", view_id);
397                String message = request.getParameter("message");
398                request.setAttribute("message", message);
399                editView.include(request, response);
400            } else if (action.equals("showAddView")) {
401                addView.include(request, response);
402            } else if (action.equals("saveAddView")) {
403                String message = request.getParameter("message");
404                request.setAttribute("message", message);
405                normalView.include(request, response);
406            } else if (action.equals("showAddGraph")) {
407                String server_id = request.getParameter("server_id");
408                request.setAttribute("server_id", server_id);
409                String mbean = request.getParameter("mbean");
410                request.setAttribute("mbean", mbean);
411                String dataname = request.getParameter("dataname");
412                request.setAttribute("dataname", dataname);
413                addGraph.include(request, response);
414            } else if (action.equals("saveAddGraph")) {
415                String message = request.getParameter("message");
416                request.setAttribute("message", message);
417                normalView.include(request, response);
418            } else if (action.equals("showEditGraph")) {
419                String graph_id = request.getParameter("graph_id");
420                request.setAttribute("graph_id", graph_id);
421                editGraph.include(request, response);
422            } else if (action.equals("saveEditGraph")) {
423                String graph_id = request.getParameter("graph_id");
424                request.setAttribute("graph_id", graph_id);
425                String message = request.getParameter("message");
426                request.setAttribute("message", message);
427                editGraph.include(request, response);
428            } else if (action.equals("deleteGraph")) {
429                String message = request.getParameter("message");
430                request.setAttribute("message", message);
431                normalView.include(request, response);
432            } else if (action.equals("deleteView")) {
433                String message = request.getParameter("message");
434                request.setAttribute("message", message);
435                normalView.include(request, response);
436            } else if (action.equals("showEditServer")) {
437                String server_id = request.getParameter("server_id");
438                request.setAttribute("server_id", server_id);
439                editServer.include(request, response);
440            } else if (action.equals("saveEditServer")) {
441                String server_id = request.getParameter("server_id");
442                request.setAttribute("server_id", server_id);
443                String message = request.getParameter("message");
444                request.setAttribute("message", message);
445                editServer.include(request, response);
446            } else if (action.equals("showAddServer")) {
447                addServer.include(request, response);
448            } else if (action.equals("saveAddServer")) {
449                String message = request.getParameter("message");
450                request.setAttribute("message", message);
451                normalView.include(request, response);
452            } else if (action.equals("deleteServer")) {
453                String message = request.getParameter("message");
454                request.setAttribute("message", message);
455                normalView.include(request, response);
456            } else if (action.equals("testAddServerConnection")) {
457                request.setAttribute("name", request.getParameter("name"));
458                request.setAttribute("ip", request.getParameter("ip"));
459                request.setAttribute("username", request.getParameter("username"));
460                request.setAttribute("password", request.getParameter("password"));
461                request
462                        .setAttribute("password2", request
463                                .getParameter("password2"));
464                request.setAttribute("message", request.getParameter("message"));
465                request.setAttribute("port", request.getParameter("port"));
466                addServer.include(request, response);
467            } else if (action.equals("testEditServerConnection")) {
468                request.setAttribute("name", request.getParameter("name"));
469                request.setAttribute("ip", request.getParameter("ip"));
470                request.setAttribute("port", request.getParameter("port"));
471                request.setAttribute("username", request.getParameter("username"));
472                request.setAttribute("password", request.getParameter("password"));
473                request
474                        .setAttribute("password2", request
475                                .getParameter("password2"));
476                request.setAttribute("message", request.getParameter("message"));
477                request
478                        .setAttribute("server_id", request
479                                .getParameter("server_id"));
480                request.setAttribute("snapshot", request.getParameter("snapshot"));
481                request
482                        .setAttribute("retention", request
483                                .getParameter("retention"));
484                editServer.include(request, response);
485            } else if (action.equals("disableEditServer")
486                    || action.equals("enableEditServer")) {
487                request.setAttribute("message", request.getParameter("message"));
488                request
489                        .setAttribute("server_id", request
490                                .getParameter("server_id"));
491                editServer.include(request, response);
492            } else if (action.equals("disableServer")
493                    || action.equals("enableServer")) {
494                request.setAttribute("message", request.getParameter("message"));
495                request
496                        .setAttribute("server_id", request
497                                .getParameter("server_id"));
498                normalView.include(request, response);
499            } else {
500                normalView.include(request, response);
501            }
502        }
503    
504        private void updateView(ActionRequest actionRequest,
505                ActionResponse actionResponse) {
506            String view_id = actionRequest.getParameter("view_id");
507            actionResponse.setRenderParameter("view_id", view_id);
508            DBManager DBase = new DBManager();
509            Connection con = DBase.getConnection();
510            String name = actionRequest.getParameter("name");
511            String description = actionRequest.getParameter("description");
512            String[] graphsArray = actionRequest.getParameterValues("graph_ids");
513            if (graphsArray == null) {
514                graphsArray = new String[0];
515            }
516            try {
517                PreparedStatement pStmt = con
518                        .prepareStatement("UPDATE views SET name='" + name
519                                + "', description='" + description
520                                + "', graph_count=" + graphsArray.length
521                                + ", modified=CURRENT_TIMESTAMP WHERE view_id="
522                                + view_id);
523                pStmt.executeUpdate();
524                pStmt = con
525                        .prepareStatement("DELETE FROM views_graphs WHERE view_id="
526                                + view_id);
527                pStmt.executeUpdate();
528                if (graphsArray != null)
529                    for (int i = 0; i < graphsArray.length; i++) {
530                        pStmt = con
531                                .prepareStatement("INSERT INTO views_graphs VALUES("
532                                        + view_id + "," + graphsArray[i] + ")");
533                        pStmt.executeUpdate();
534                    }
535                con.close();
536                actionResponse.setRenderParameter("message",
537                        "<font color=\"green\"><strong><li>View " + name
538                                + " has been updated</li></strong></font>");
539                return;
540    
541            } catch (Exception e) {
542                actionResponse.setRenderParameter("message",
543                        "<font color=\"red\"><strong><li>Error updating View "
544                                + name + "</li></strong></font>" + e.getMessage());
545                return;
546            }
547        }
548    
549        private void addView(ActionRequest actionRequest,
550                ActionResponse actionResponse) {
551            DBManager DBase = new DBManager();
552            Connection con = DBase.getConnection();
553            String name = actionRequest.getParameter("name");
554            String description = actionRequest.getParameter("description");
555            String[] graphsArray = actionRequest.getParameterValues("graph_ids");
556            if (graphsArray == null) {
557                graphsArray = new String[0];
558            }
559            try {
560                PreparedStatement pStmt = con
561                        .prepareStatement("INSERT INTO views (name, description, graph_count, modified, added) VALUES ('"
562                                + name
563                                + "','"
564                                + description
565                                + "',"
566                                + graphsArray.length
567                                + ",CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)");
568                pStmt.executeUpdate();
569                pStmt = con
570                        .prepareStatement("select view_id from views ORDER BY view_id DESC");
571                ResultSet rs = pStmt.executeQuery();
572                if (rs.next()) {
573                    Integer view_id = rs.getInt("view_id");
574                    for (int i = 0; i < graphsArray.length; i++) {
575                        pStmt = con
576                                .prepareStatement("INSERT INTO views_graphs VALUES("
577                                        + view_id + "," + graphsArray[i] + ")");
578                        pStmt.executeUpdate();
579                    }
580                }
581                con.close();
582                actionResponse.setRenderParameter("message",
583                        "<font color=\"green\"><strong><li>View " + name
584                                + " has been added</li></strong></font>");
585            } catch (Exception e) {
586                actionResponse.setRenderParameter("message",
587                        "<font color=\"red\"><strong><li>Error adding View " + name
588                                + "</li></strong></font>" + e.getMessage());
589            } finally {
590                try {
591                    con.close();
592                } catch (Exception e) {
593    
594                }
595            }
596        }
597    
598        private void updateServer(ActionRequest actionRequest,
599                ActionResponse actionResponse) {
600            String server_id = actionRequest.getParameter("server_id");
601            actionResponse.setRenderParameter("server_id", server_id);
602            DBManager DBase = new DBManager();
603            Connection con = DBase.getConnection();
604            String name = actionRequest.getParameter("name");
605            String ip = actionRequest.getParameter("ip");
606            String password = actionRequest.getParameter("password");
607            String username = actionRequest.getParameter("username");
608            String snapshot = actionRequest.getParameter("snapshot");
609            String retention = actionRequest.getParameter("retention");
610            Integer port = Integer.parseInt(actionRequest.getParameter("port"));
611            Integer protocol = Integer.parseInt(actionRequest.getParameter("protocol"));
612            // encrypt the password
613            if (password != null && !password.equals("")) {
614                password = EncryptionManager.encrypt(password);
615            }
616    
617            try {
618                // update the client side db (table = SERVERS)
619                if (password.equals("") || password == null) {
620                    PreparedStatement pStmt = con
621                            .prepareStatement("UPDATE servers SET name='"
622                                    + name
623                                    + "', ip='"
624                                    + ip
625                                    + "', username='"
626                                    + username
627                                    + "', modified=CURRENT_TIMESTAMP, last_seen=CURRENT_TIMESTAMP, "
628                                    + "port=" + port + ",protocol="+protocol+" WHERE server_id="
629                                    + server_id);
630                    pStmt.executeUpdate();
631                    // when user did not specify the password, just grab it from the
632                    // db
633                    pStmt = con
634                            .prepareStatement("SELECT password FROM servers WHERE server_id="
635                                    + server_id);
636                    ResultSet s = pStmt.executeQuery();
637                    if (s.next()) {
638                        password = s.getString("password");
639                    } else {
640                        actionResponse
641                                .setRenderParameter(
642                                        "message",
643                                        "<font color=\"red\"><strong><li>Error updating server</li></strong></font>"
644                                                + "Password was not found in the database for server_id="
645                                                + server_id);
646                        con.close();
647                        return;
648                    }
649                } else {
650                    PreparedStatement pStmt = con
651                            .prepareStatement("UPDATE servers SET name='"
652                                    + name
653                                    + "', ip='"
654                                    + ip
655                                    + "', username='"
656                                    + username
657                                    + "', password='"
658                                    + password
659                                    + "', modified=CURRENT_TIMESTAMP, last_seen=CURRENT_TIMESTAMP, "
660                                    + "port=" + port + ",protocol="+protocol+" WHERE server_id="
661                                    + server_id);
662                    pStmt.executeUpdate();
663                }
664                con.close();
665                // update the server side db
666                if (snapshot == null || retention == null) {
667                    // do not update if we do not know
668                } else {
669                        (new MRCConnector(ip, username, password, port, protocol))
670                            .setSnapshotDuration(Long.parseLong(snapshot) * 1000 * 60);
671                        (new MRCConnector(ip, username, password, port, protocol))
672                            .setSnapshotRetention(Integer.parseInt(retention));
673                }
674                // set success message
675                actionResponse
676                        .setRenderParameter(
677                                "message",
678                                "<font color=\"green\"><strong><li>Server has been updated</li></strong></font>");
679            } catch (Exception e) {
680                actionResponse.setRenderParameter("message",
681                        "<font color=\"red\"><strong><li>Error updating server</li></strong></font>"
682                                + e.getMessage());
683            }
684        }
685    
686        private void addServer(ActionRequest actionRequest,
687                ActionResponse actionResponse) {
688            DBManager DBase = new DBManager();
689            Connection con = DBase.getConnection();
690            String name = actionRequest.getParameter("name");
691            String ip = actionRequest.getParameter("ip");
692            int protocol = Integer.parseInt(actionRequest.getParameter("protocol"));
693            int port = Integer.parseInt(actionRequest.getParameter("port"));
694            String password = actionRequest.getParameter("password");
695            String username = actionRequest.getParameter("username");
696            // encrypt the password
697            if (password != null && !password.equals("")) {
698                password = EncryptionManager.encrypt(password);
699            }
700            try {
701                PreparedStatement pStmt = con
702                        .prepareStatement("INSERT INTO servers (name, ip, username, password, modified, last_seen, added, port, protocol) VALUES ('"
703                                + name
704                                + "','"
705                                + ip
706                                + "','"
707                                + username
708                                + "','"
709                                + password
710                                + "',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,"
711                                + port
712                                + ","
713                                + protocol + ")");
714                pStmt.executeUpdate();
715                actionResponse.setRenderParameter("message",
716                        "<font color=\"green\"><strong><li>Server " + name + " at "
717                                + ip + " has been added.</li></strong></font>");
718    
719            } catch (Exception e) {
720                actionResponse.setRenderParameter("message",
721                        "<font color=\"red\"><strong><li>Error adding server</li></strong></font>"
722                                + e.getMessage());
723            } finally {
724                try {
725                    con.close();
726                } catch (Exception e) {
727    
728                }
729            }
730        }
731    
732        private void deleteServer(ActionRequest actionRequest,
733                ActionResponse actionResponse) {
734            String server_id = actionRequest.getParameter("server_id");
735            actionResponse.setRenderParameter("server_id", server_id);
736            DBManager DBase = new DBManager();
737            Connection con = DBase.getConnection();
738    
739            try {
740                PreparedStatement pStmt = con
741                        .prepareStatement("DELETE FROM graphs WHERE server_id="
742                                + server_id);
743                pStmt.executeUpdate();
744    
745                pStmt = con.prepareStatement("DELETE FROM servers WHERE server_id="
746                        + server_id);
747                pStmt.executeUpdate();
748                con.close();
749                actionResponse
750                        .setRenderParameter(
751                                "message",
752                                "<font color=\"green\"><strong><li>Server and associated graphs have been deleted</li></strong></font>");
753                return;
754    
755            } catch (Exception e) {
756                actionResponse.setRenderParameter("message",
757                        "<font color=\"red\"><strong><li>Error deleting server</li></strong></font>"
758                                + e.getMessage());
759                return;
760            }
761        }
762    
763        private void deleteView(ActionRequest actionRequest,
764                ActionResponse actionResponse) {
765            String view_id = actionRequest.getParameter("view_id");
766            actionResponse.setRenderParameter("view_id", view_id);
767            DBManager DBase = new DBManager();
768            Connection con = DBase.getConnection();
769    
770            try {
771                PreparedStatement pStmt = con
772                        .prepareStatement("DELETE FROM views WHERE view_id="
773                                + view_id);
774                pStmt.executeUpdate();
775                pStmt = con
776                        .prepareStatement("DELETE FROM views_graphs WHERE view_id="
777                                + view_id);
778                pStmt.executeUpdate();
779                con.close();
780                actionResponse
781                        .setRenderParameter("message",
782                                "<font color=\"green\"><strong><li>View has been deleted</li></strong></font>");
783                return;
784    
785            } catch (Exception e) {
786                actionResponse.setRenderParameter("message",
787                        "<font color=\"red\"><strong><li>Error deleting view</li></strong></font>"
788                                + e.getMessage());
789                return;
790            }
791        }
792    
793        private void addGraph(ActionRequest actionRequest,
794                ActionResponse actionResponse) {
795            DBManager DBase = new DBManager();
796            Connection con = DBase.getConnection();
797            String name = actionRequest.getParameter("name");
798            String description = actionRequest.getParameter("description");
799            String server_id = actionRequest.getParameter("server_id");
800            String xlabel = actionRequest.getParameter("xlabel");
801            String ylabel = actionRequest.getParameter("ylabel");
802            String timeframe = actionRequest.getParameter("timeframe");
803            String mbean = actionRequest.getParameter("mbean");
804            String dataname1 = actionRequest.getParameter("dataname1");
805            String data1operation = actionRequest.getParameter("data1operation");
806            String operation = actionRequest.getParameter("operation");
807            int showArchive = 0;
808            if (actionRequest.getParameter("showArchive") != null
809                    && actionRequest.getParameter("showArchive").equals("on")) {
810                showArchive = 1;
811            }
812    
813            if (operation.equals("other")) {
814                operation = actionRequest.getParameter("othermath");
815            }
816            String dataname2 = actionRequest.getParameter("dataname2");
817            String data2operation = actionRequest.getParameter("data2operation");
818            if (data2operation == null)
819                data2operation = "A";
820            try {
821                PreparedStatement pStmt = con
822                        .prepareStatement("INSERT INTO graphs (server_id, name, description, timeframe, mbean, dataname1, xlabel, ylabel, data1operation, operation, data2operation, dataname2, warninglevel1, warninglevel2, added, modified, last_seen, archive) VALUES ("
823                                + server_id
824                                + ",'"
825                                + name
826                                + "','"
827                                + description
828                                + "',"
829                                + timeframe
830                                + ",'"
831                                + mbean
832                                + "','"
833                                + dataname1
834                                + "','"
835                                + xlabel
836                                + "','"
837                                + ylabel
838                                + "','"
839                                + data1operation
840                                + "','"
841                                + operation
842                                + "','"
843                                + data2operation
844                                + "','"
845                                + dataname2
846                                + "',0,0,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,"
847                                + showArchive + ")");
848                pStmt.executeUpdate();
849                con.close();
850                actionResponse.setRenderParameter("message",
851                        "<font color=\"green\"><strong><li>Graph " + name
852                                + " has been added.</li></strong></font>");
853                return;
854    
855            } catch (Exception e) {
856                actionResponse.setRenderParameter("message",
857                        "<font color=\"red\"><strong><li>Error adding graph</li></strong></font>"
858                                + e.getMessage());
859                return;
860            }
861        }
862    
863        private void updateGraph(ActionRequest actionRequest,
864                ActionResponse actionResponse) {
865            DBManager DBase = new DBManager();
866            Connection con = DBase.getConnection();
867            String graph_id = actionRequest.getParameter("graph_id");
868            actionResponse.setRenderParameter("graph_id", graph_id);
869    
870            String name = actionRequest.getParameter("name");
871            String description = actionRequest.getParameter("description");
872            String server_id = actionRequest.getParameter("server_id");
873            String xlabel = actionRequest.getParameter("xlabel");
874            String ylabel = actionRequest.getParameter("ylabel");
875            String timeframe = actionRequest.getParameter("timeframe");
876            String mbean = actionRequest.getParameter("mbean");
877            String dataname1 = actionRequest.getParameter("dataname1");
878            String data1operation = actionRequest.getParameter("data1operation");
879            String operation = actionRequest.getParameter("operation");
880            int archive = 0;
881            if (actionRequest.getParameter("showArchive") != null
882                    && actionRequest.getParameter("showArchive").equals("on")) {
883                archive = 1;
884            }
885    
886            if (operation.equals("other")) {
887                operation = actionRequest.getParameter("othermath");
888            }
889            String dataname2 = actionRequest.getParameter("dataname2");
890            String data2operation = actionRequest.getParameter("data2operation");
891            if (data2operation == null)
892                data2operation = "A";
893            try {
894                PreparedStatement pStmt = con
895                        .prepareStatement("UPDATE graphs SET server_id="
896                                + server_id
897                                + ", name='"
898                                + name
899                                + "', description='"
900                                + description
901                                + "', timeframe="
902                                + timeframe
903                                + ", mbean='"
904                                + mbean
905                                + "', dataname1='"
906                                + dataname1
907                                + "', xlabel='"
908                                + xlabel
909                                + "', ylabel='"
910                                + ylabel
911                                + "', data1operation='"
912                                + data1operation
913                                + "', operation='"
914                                + operation
915                                + "', data2operation='"
916                                + data2operation
917                                + "', dataname2='"
918                                + dataname2
919                                + "', warninglevel1=0, warninglevel2=0, modified=CURRENT_TIMESTAMP, archive="
920                                + archive + " WHERE graph_id=" + graph_id);
921                pStmt.executeUpdate();
922                con.close();
923                actionResponse.setRenderParameter("message",
924                        "<font color=\"green\"><strong><li>Graph " + name
925                                + " has been updated.</li></strong></font>");
926                return;
927    
928            } catch (Exception e) {
929                actionResponse.setRenderParameter("message",
930                        "<font color=\"red\"><strong><li>Error editing graph</li></strong></font>"
931                                + e.getMessage());
932                return;
933            }
934        }
935    
936        private void deleteGraph(ActionRequest actionRequest,
937                ActionResponse actionResponse) {
938            String graph_id = actionRequest.getParameter("graph_id");
939            actionResponse.setRenderParameter("graph_id", graph_id);
940            DBManager DBase = new DBManager();
941            Connection con = DBase.getConnection();
942    
943            try {
944                // remove the graph
945                PreparedStatement pStmt = con
946                        .prepareStatement("DELETE FROM graphs WHERE graph_id="
947                                + graph_id);
948                pStmt.executeUpdate();
949                // fetch all views associated with this graph
950                pStmt = con
951                        .prepareStatement("SELECT view_id FROM views_graphs WHERE graph_id="
952                                + graph_id);
953                ResultSet view_ids = pStmt.executeQuery();
954                // reduce the graph_count from all views associated with the graph
955                while (view_ids.next()) {
956                    pStmt = con
957                            .prepareStatement("UPDATE views SET graph_count=graph_count-1 WHERE view_id="
958                                    + view_ids.getString("view_id"));
959                    pStmt.executeUpdate();
960                }
961                // remove the relationship between graphs and views
962                pStmt = con
963                        .prepareStatement("DELETE FROM views_graphs WHERE graph_id="
964                                + graph_id);
965                pStmt.executeUpdate();
966                con.close();
967                actionResponse
968                        .setRenderParameter("message",
969                                "<font color=\"green\"><strong><li>Graph has been deleted</li></strong></font>");
970                return;
971    
972            } catch (Exception e) {
973                actionResponse.setRenderParameter("message",
974                        "<font color=\"red\"><strong><li>Error deleting graph</li></strong></font>"
975                                + e.getMessage());
976                return;
977            }
978        }
979    
980        private String startTrackingMbean(String server_id, String mbean) {
981            PreparedStatement pStmt = null;
982            ResultSet rs = null;
983            MRCConnector mrc = null;
984            DBManager DBase = new DBManager();
985            Connection con = DBase.getConnection();
986            String server_ip = null;
987            String username = null;
988            String password = null;
989            int protocol = 0;
990            int port = -1;
991            // fetch server information
992            try {
993                pStmt = con
994                        .prepareStatement("SELECT * FROM servers WHERE server_id="
995                                + server_id);
996                rs = pStmt.executeQuery();
997                if (!rs.next()) {
998                    return "<font color=\"red\"><strong><li>DATABASE ERROR: Server id "
999                            + server_id
1000                            + " not found in database</li></strong></font>";
1001                }
1002                server_ip = rs.getString("ip");
1003                password = rs.getString("password");
1004                username = rs.getString("username");
1005                port = rs.getInt("port");
1006                protocol = rs.getInt("protocol");
1007            } catch (SQLException e) {
1008                return "<font color=\"red\"><strong><li>DATABASE ERROR: "
1009                        + e.getMessage() + "</li></strong></font>";
1010            }
1011            // attempt to connect to the mrc server
1012            try {
1013                con.close();
1014                mrc = new MRCConnector(server_ip, username, password, port, protocol);
1015            } catch (Exception e) {
1016                return "<font color=\"red\"><strong><li>MRC ERROR: Unable to connect to server "
1017                        + server_ip
1018                        + ": "
1019                        + e.getMessage()
1020                        + "</li></strong></font>";
1021            }
1022    
1023            // tell the mrc server to start tracking an mbean
1024            try {
1025                if (mrc.startTrackingMbean(mbean)) {
1026                    String mbarr[] = mbean.split("name=");
1027                    return "<font color=\"green\"><strong><li>MBean " + mbarr[1]
1028                            + " tracking on server " + rs.getString("name")
1029                            + "</li></strong></font>";
1030                } else {
1031                    String mbarr[] = mbean.split("name=");
1032                    return "<font color=\"red\"><strong><li>ERROR: MBean "
1033                            + mbarr[1] + " could <b>NOT</b> be tracked on server "
1034                            + rs.getString("name") + "</li></strong></font>";
1035                }
1036            } catch (Exception e) {
1037                return "<font color=\"red\"><strong><li>MRC ERROR: MBean " + mbean
1038                        + " could <b>NOT</b> be tracked on server " + server_ip
1039                        + ": " + e.getMessage() + "</li></strong></font>";
1040            }
1041        }
1042    
1043        private String stopTrackingMbean(String server_id, String mbean) {
1044            PreparedStatement pStmt = null;
1045            ResultSet rs = null;
1046            MRCConnector mrc = null;
1047            DBManager DBase = new DBManager();
1048            Connection con = DBase.getConnection();
1049            String server_ip = null;
1050            String username = null;
1051            String password = null;
1052            int port = -1;
1053            int protocol = 0;
1054            // fetch server's information
1055            try {
1056                pStmt = con
1057                        .prepareStatement("SELECT * FROM servers WHERE server_id="
1058                                + server_id);
1059                rs = pStmt.executeQuery();
1060                if (!rs.next()) {
1061                    return "<font color=\"red\"><strong><li>DATABASE ERROR: Server id "
1062                            + server_id
1063                            + " not found in database</li></strong></font>";
1064                }
1065                server_ip = rs.getString("ip");
1066                password = rs.getString("password");
1067                username = rs.getString("username");
1068                port = rs.getInt("port");
1069                protocol = rs.getInt("protocol");
1070            } catch (SQLException e) {
1071                return "<font color=\"red\"><strong><li>DATABASE ERROR: "
1072                        + e.getMessage() + "</li></strong></font>";
1073            }
1074            // attempt to connect to the mrc-server
1075            try {
1076                con.close();
1077                    mrc = new MRCConnector(server_ip, username, password, port, protocol);
1078           } catch (Exception e) {
1079                return "<font color=\"red\"><strong><li>MRC ERROR: Unable to connect to server "
1080                        + server_ip
1081                        + ": "
1082                        + e.getMessage()
1083                        + "</li></strong></font>";
1084            }
1085            // tell the mrc-server to stop tracking some mbean
1086            try {
1087                if (mrc.stopTrackingMbean(mbean)) {
1088                    String mbarr[] = mbean.split("name=");
1089                    return "<font color=\"green\"><strong><li>MBean " + mbarr[1]
1090                            + " removed from tracking on server "
1091                            + rs.getString("name") + "</li></strong></font>";
1092                } else {
1093                    String mbarr[] = mbean.split("name=");
1094                    return "<font color=\"red\"><strong><li>ERROR: MBean "
1095                            + mbarr[1]
1096                            + " could <b>NOT</b> be removed from tracking on server "
1097                            + rs.getString("name") + "</li></strong></font>";
1098                }
1099            } catch (Exception e) {
1100                return "<font color=\"red\"><strong><li>MRC ERROR: MBean " + mbean
1101                        + " could <b>NOT</b> be removed from tracking on server "
1102                        + server_ip + ": " + e.getMessage()
1103                        + "</li></strong></font>";
1104            }
1105        }
1106    
1107        private String stopThread(String server_id) {
1108            PreparedStatement pStmt = null;
1109            ResultSet rs = null;
1110            MRCConnector mrc = null;
1111            DBManager DBase = new DBManager();
1112            Connection con = DBase.getConnection();
1113            String server_ip = null;
1114            String username = null;
1115            String password = null;
1116            int port = -1;
1117            int protocol = 0;
1118            // fetch the server's information
1119            try {
1120                pStmt = con
1121                        .prepareStatement("SELECT * FROM servers WHERE server_id="
1122                                + server_id);
1123                rs = pStmt.executeQuery();
1124                if (!rs.next()) {
1125                    return "<font color=\"red\"><strong><li>DATABASE ERROR: Server id "
1126                            + server_id
1127                            + " not found in database</li></strong></font>";
1128                }
1129                server_ip = rs.getString("ip");
1130                password = rs.getString("password");
1131                username = rs.getString("username");
1132                port = rs.getInt("port");
1133                protocol = rs.getInt("protocol");
1134            } catch (SQLException e) {
1135                return "<font color=\"red\"><strong><li>DATABASE ERROR: "
1136                        + e.getMessage() + "</li></strong></font>";
1137            }
1138            // attempt to connect to the mrc-server
1139            try {
1140                con.close();
1141                mrc = new MRCConnector(server_ip, username, password, port, protocol);
1142            } catch (Exception e) {
1143                return "<font color=\"red\"><strong><li>MRC ERROR: Unable to connect to server "
1144                        + server_ip
1145                        + ": "
1146                        + e.getMessage()
1147                        + "</li></strong></font>";
1148            }
1149            // tell the mrc-server to stop taking snapshots
1150            try {
1151                if (mrc.stopSnapshotThread()) {
1152                    return "<font color=\"green\"><strong><li>Snapshot thread stopped on server "
1153                            + rs.getString("name") + "</li></strong></font>";
1154                } else {
1155                    return "<font color=\"red\"><strong><li>ERROR: Snapshot thread could <b>NOT</b> be stopped on server "
1156                            + rs.getString("name") + "</li></strong></font>";
1157                }
1158    
1159            } catch (Exception e) {
1160                return "<font color=\"red\"><strong><li>MRC ERROR: Snapshot thread could <b>NOT</b> be stopped on server "
1161                        + server_ip
1162                        + ": "
1163                        + e.getMessage()
1164                        + "</li></strong></font>";
1165            }
1166        }
1167    
1168        private String startThread(String server_id, Long snapshotDuration) {
1169            PreparedStatement pStmt = null;
1170            ResultSet rs = null;
1171            MRCConnector mrc = null;
1172            DBManager DBase = new DBManager();
1173            Connection con = DBase.getConnection();
1174            String server_ip = null;
1175            String username = null;
1176            String password = null;
1177            int port = -1;
1178            int protocol = 0;
1179            // fetch the server's information
1180            try {
1181                pStmt = con
1182                        .prepareStatement("SELECT * FROM servers WHERE server_id="
1183                                + server_id);
1184                rs = pStmt.executeQuery();
1185                if (!rs.next()) {
1186                    return "<font color=\"red\"><strong><li>DATABASE ERROR: Server id "
1187                            + server_id
1188                            + " not found in database</li></strong></font>";
1189                }
1190                server_ip = rs.getString("ip");
1191                password = rs.getString("password");
1192                username = rs.getString("username");
1193                port = rs.getInt("port");
1194                protocol = rs.getInt("protocol");
1195            } catch (SQLException e) {
1196                return "<font color=\"red\"><strong><li>DATABASE ERROR: "
1197                        + e.getMessage() + "</li></strong></font>";
1198            }
1199            // attempt to connect to the mrc-server
1200            try {
1201                con.close();
1202                mrc = new MRCConnector(server_ip, username, password, port, protocol);
1203            } catch (Exception e) {
1204                return "<font color=\"red\"><strong><li>MRC ERROR: Unable to connect to server "
1205                        + server_ip
1206                        + ": "
1207                        + e.getMessage()
1208                        + "</li></strong></font>";
1209            }
1210            // tell the mrc-server to start the collection of statistics
1211            try {
1212                if (mrc.startSnapshotThread(new Long(snapshotDuration))) {
1213                    return "<font color=\"green\"><strong><li>Snapshot thread started on server "
1214                            + rs.getString("name") + "</li></strong></font>";
1215                } else {
1216                    return "<font color=\"red\"><strong><li>ERROR: Snapshot thread could <b>NOT</b> be started on server "
1217                            + rs.getString("name") + "</li></strong></font>";
1218                }
1219            } catch (Exception e) {
1220                return "<font color=\"red\"><strong><li>MRC ERROR: Snapshot thread could <b>NOT</b> be started on server "
1221                        + server_ip
1222                        + ": "
1223                        + e.getMessage()
1224                        + "</li></strong></font>";
1225            }
1226        }
1227    
1228        @Override
1229        public void init(PortletConfig portletConfig) throws PortletException {
1230            super.init(portletConfig);
1231            normalView = portletConfig.getPortletContext().getRequestDispatcher(
1232                    NORMALVIEW_JSP);
1233            viewViews = portletConfig.getPortletContext().getRequestDispatcher(
1234                    VIEWVIEWS_JSP);
1235            viewServers = portletConfig.getPortletContext().getRequestDispatcher(
1236                    VIEWSERVERS_JSP);
1237            viewGraphs = portletConfig.getPortletContext().getRequestDispatcher(
1238                    VIEWGRAPHS_JSP);
1239            pageView = portletConfig.getPortletContext().getRequestDispatcher(
1240                    PAGEVIEW_JSP);
1241            editView = portletConfig.getPortletContext().getRequestDispatcher(
1242                    EDITVIEW_JSP);
1243            addView = portletConfig.getPortletContext().getRequestDispatcher(
1244                    ADDVIEW_JSP);
1245            addGraph = portletConfig.getPortletContext().getRequestDispatcher(
1246                    ADDGRAPH_JSP);
1247            editGraph = portletConfig.getPortletContext().getRequestDispatcher(
1248                    EDITGRAPH_JSP);
1249            viewServer = portletConfig.getPortletContext().getRequestDispatcher(
1250                    VIEWSERVER_JSP);
1251            editServer = portletConfig.getPortletContext().getRequestDispatcher(
1252                    EDITSERVER_JSP);
1253            addServer = portletConfig.getPortletContext().getRequestDispatcher(
1254                    ADDSERVER_JSP);
1255            helpView = portletConfig.getPortletContext().getRequestDispatcher(
1256                    HELPVIEW_JSP);
1257            editNormalView = portletConfig.getPortletContext()
1258                    .getRequestDispatcher(EDITNORMALVIEW_JSP);
1259        }
1260    
1261        @Override
1262        public void destroy() {
1263            normalView = null;
1264            viewViews = null;
1265            viewServers = null;
1266            viewGraphs = null;
1267            pageView = null;
1268            editView = null;
1269            addView = null;
1270            addGraph = null;
1271            editGraph = null;
1272            viewServer = null;
1273            editServer = null;
1274            addServer = null;
1275            helpView = null;
1276            editNormalView = null;
1277            super.destroy();
1278        }
1279    }