/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.enterprise.gui.legacy.taglib;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* <p>A JSP tag that will get the recent alerts for a user and put them in the request context.</p>
*
* <p>Attributes:
*
* <table border="1">
* <tr>
* <th>name</th>
* <th>required</th>
* <th>default</th>
* </tr>
* <tr>
* <td>var</th>
* <th>true</th>
* <th>N/A</th>
* </tr>
* <tr>
* <td>sizeVar</th>
* <th>true</th>
* <th>N/A</th>
* </tr>
* <tr>
* <td>maxAlerts</th>
* <th>false</th>
* <th>2</th>
* </tr>
* </table>
*/
public class RecentAlertsTag extends TagSupport {
Log log = LogFactory.getLog(RecentAlertsTag.class.getName());
//----------------------------------------------------instance variables
private String var;
private String sizeVar;
private int maxAlerts = 2;
//----------------------------------------------------constructors
public RecentAlertsTag() {
super();
}
//----------------------------------------------------public methods
/**
* Set the name of the request attribute that should hold the list of alerts.
*
* @param var the name of the request attribute
*/
public void setVar(String var) {
this.var = var;
}
/**
* Set the name of the request attribute that should hold the size of the list of alerts.
*
* @param sizeVar the name of the request attribute
*/
public void setSizeVar(String sizeVar) {
this.sizeVar = sizeVar;
}
/**
* Set the max number of alerts to get.
*
* @param maxAlerts the max number of alerts
*/
public void setMaxAlerts(String maxAlerts) {
this.maxAlerts = Integer.parseInt(maxAlerts);
}
/**
* Process the tag, generating and formatting the list.
*
* @exception JspException if the scripting variable can not be found or if there is an error processing the tag
*/
@Override
public final int doStartTag() throws JspException {
// try {
// HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
// ServletContext ctx = pageContext.getServletContext();
//
// // Get two most recent events.
// AppdefBoss ab = ContextUtils.getAppdefBoss(ctx);
// EventsBoss eb = ContextUtils.getEventsBoss(ctx);
// int sessionId = RequestUtils.getSessionId(request);
// List<Alert> alerts = eb.findUserAlerts(sessionId);
// if ( log.isTraceEnabled() ) {
// log.trace("found " + alerts.size() + " recent alerts");
// }
//
// List recentAlertBeans = new ArrayList();
// Iterator alertIter = alerts.iterator();
// for (int i = 0; i < maxAlerts && alertIter.hasNext(); i++) {
// Alert alert = (Alert) alertIter.next();
// String resourceName;
// AlertDefinition alertDef;
// AppdefEntityID adeId = null;
//
// try {
//// alertDef = eb.getAlertDefinition(sessionId, alert.getAlertDef().getId());
//// adeId = new AppdefEntityID( alertDef.getAppdefType(),
//// alertDef.getAppdefId() );
//
// AppdefResourceValue resource = ab.findById(sessionId, adeId);
// resourceName = resource.getName();
// } catch (AppdefEntityNotFoundException e) {
// // it's okay -- maybe the resource was deleted
// if ( log.isDebugEnabled() ) {
// log.debug("Resource not found: " + adeId, e);
// }
// continue;
// } catch (PermissionException e) {
// continue;
// }
// alertDef = null;
//
// recentAlertBeans.add(0,
// new RecentAlertBean(alert.getId(),
// alert.getCtime(),
// alert.getAlertDefinition().getId(),
// alertDef.getName(),
// alertDef.getPriority(),
// null, //alertDef.getAppdefId(),
// null, //alertDef.getAppdefType(),
// resourceName));
// }
//
// RecentAlertBean[] recentAlerts =
// (RecentAlertBean[]) recentAlertBeans.toArray(new RecentAlertBean[0]);
//
// request.setAttribute(var, recentAlerts);
// request.setAttribute(sizeVar, recentAlerts.length);
//
return SKIP_BODY;
//// } catch (FinderException e) {
//// throw new JspTagException( e.getMessage() );
// } catch (SessionNotFoundException e) {
// throw new JspTagException( e.getMessage() );
// } catch (SessionTimeoutException e) {
// throw new JspTagException( e.getMessage() );
// } catch (RemoteException e) {
// throw new JspTagException( e.getMessage() );
// } catch (ServletException e) {
// throw new JspTagException( e.getMessage() );
// } catch (PermissionException e) {
// throw new JspTagException( e.getMessage() );
// }
}
@Override
public int doEndTag() throws JspException {
release();
return EVAL_PAGE;
}
@Override
public void release() {
maxAlerts = 2;
var = null;
sizeVar = null;
super.release();
}
}
// EOF