/* 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() ); } } }