/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2000 Blacksmith, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see http://www.gnu.org */ package net.wotonomy.web; import java.text.Format; import net.wotonomy.foundation.NSDictionary; import net.wotonomy.foundation.NSNumberFormatter; import net.wotonomy.foundation.NSTimestampFormatter; /** * WOString renders a dynamically generated string in the output. Bindings are: * * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 905 $ */ public class WOString extends WODynamicElement { protected Object value; protected boolean escapeHTML; protected Format formatter; protected String dateformat; protected String numberformat; protected Object valueWhenEmpty; /** * The default constructor. */ protected WOString() { } public WOString(String aName, NSDictionary anAssociationMap, WOElement aRootElement) { super(aName, anAssociationMap, aRootElement); escapeHTML = true; } public void appendToResponse(WOResponse aResponse, WOContext aContext) { WOComponent c = aContext.component(); numberformat = stringForProperty("numberformat", c); dateformat = stringForProperty("dateformat", c); formatter = (Format) valueForProperty("formatter", c); escapeHTML = booleanForProperty("escapeHTML", c); value = valueForProperty("value", c); valueWhenEmpty = valueForProperty("valueWhenEmpty", c); Object result = value; if (result != null) { if (formatter != null) { try { result = formatter.format(result); } catch (IllegalArgumentException exc) { } } if (dateformat != null) { try { result = new NSTimestampFormatter(dateformat).format(result); } catch (IllegalArgumentException exc) { } } if (numberformat != null) { try { result = new NSNumberFormatter(numberformat).format(result); } catch (IllegalArgumentException exc) { } } } if (result == null) { result = valueWhenEmpty; if (result == null) { result = "nil"; } } if (escapeHTML) { aResponse.appendContentHTMLString(result.toString()); } else { aResponse.appendContentString(result.toString()); } } }