/* * 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.display; import javax.servlet.jsp.JspException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.util.RequestUtils; import org.apache.taglibs.standard.tag.common.core.NullAttributeException; /** * This class acts as a decorator for tables, displaying "YES" "NO" or "SOME", depending if total is 0, equal to, or * less than active. */ public class GroupMetricsDecorator extends BaseDecorator { protected String locale = org.apache.struts.Globals.LOCALE_KEY; protected String bundle = org.apache.struts.Globals.MESSAGES_KEY; private static Log log = LogFactory.getLog(GroupMetricsDecorator.class.getName()); /** * Holds value of property active. */ private String active; /** * Holds value of property total. */ private String total; /** * Compares active and total, and outputs "YES" "NO" or "SOME" * * @param obj Does not use this value * * @return formatted date */ public String decorate(Object obj) { String tmpActive = null; int tmpIntActive = 0; int tmpIntTotal = 0; if ((getActive() != null) && (getTotal() != null)) { String tmpName = getActive(); try { tmpActive = (String) evalAttr("active", this.getActive(), String.class); tmpIntActive = Integer.parseInt(tmpActive); tmpActive = (String) evalAttr("total", this.getTotal(), String.class); tmpIntTotal = Integer.parseInt(tmpActive); } catch (NumberFormatException nfe) { log.debug("invalid property"); return ""; } catch (NullAttributeException ne) { log.debug("bean " + this.getActive() + " not found"); return ""; } catch (JspException je) { log.debug("can't evaluate name [" + this.getActive() + "]: ", je); return ""; } } try { if (tmpIntActive == 0) { return RequestUtils.message(this.getPageContext(), bundle, locale, "resource.common.monitor.visibility.config.NO"); } else if (tmpIntActive < tmpIntTotal) { return RequestUtils.message(this.getPageContext(), bundle, locale, "resource.common.monitor.visibility.config.SOME"); } else { return RequestUtils.message(this.getPageContext(), bundle, locale, "resource.common.monitor.visibility.config.YES"); } } catch (JspException je) { log.debug("could not look up message: " + je); } return ""; } public void release() { super.release(); active = null; total = null; } /** * Getter for property active. * * @return Value of property active. */ public String getActive() { return this.active; } /** * Setter for property active. * * @param active New value of property active. */ public void setActive(String active) { this.active = active; } /** * Getter for property total. * * @return Value of property total. */ public String getTotal() { return this.total; } /** * Setter for property total. * * @param total New value of property total. */ public void setTotal(String total) { this.total = total; } }