/**
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is OpenELIS code.
*
* Copyright (C) The Minnesota Department of Health. All Rights Reserved.
*/
package us.mn.state.health.lims.taglib;
import javax.servlet.jsp.JspException;
import org.apache.struts.taglib.TagUtils;
import us.mn.state.health.lims.common.log.LogEvent;
import us.mn.state.health.lims.common.util.StringUtil;
/**
* @author Benzd1 bugzilla 1351
*
*/
public class WriteTag extends org.apache.struts.taglib.bean.WriteTag {
protected String maxLength = null;
public String getMaxLength() {
return maxLength;
}
public void setMaxLength(String maxLength) {
this.maxLength = maxLength;
}
// --------------------------------------------------------- Public Methods
/**
* Process the start tag.
*
* @exception JspException
* if a JSP exception has occurred
*/
public int doStartTag() throws JspException {
// Look up the requested bean (if necessary)
if (ignore) {
if (TagUtils.getInstance().lookup(pageContext, name, scope) == null) {
return (SKIP_BODY); // Nothing to output
}
}
// Look up the requested property value
Object value = TagUtils.getInstance().lookup(pageContext, name,
property, scope);
if (value == null) {
return (SKIP_BODY); // Nothing to output
}
// Convert value to the String with some formatting
String output = formatValue(value);
// truncate to maxLength
int truncateLength = 0;
try {
//bugzilla 2541 to eliminate NumberFormatException logging when not needed
if (!StringUtil.isNullorNill(maxLength)) {
truncateLength = (new Integer(maxLength)).intValue();
}
} catch (NumberFormatException nfe) {
//bugzilla 2154
LogEvent.logError("WriteTag","doStartTag()",nfe.toString());
}
if (truncateLength > 0) {
if (output.length() > truncateLength) {
// now find next space after truncateLength
int indexOfNextSpaceForTruncation = output.indexOf(" ",
truncateLength);
//bugzilla 1399 fixed array index exception
if (indexOfNextSpaceForTruncation >= 0) {
output = output.substring(0, indexOfNextSpaceForTruncation);
} else {
output = output.substring(0, truncateLength);
}
}
}
// Print this property value to our output writer, suitably filtered
if (filter) {
TagUtils.getInstance().write(pageContext,
TagUtils.getInstance().filter(output));
} else {
TagUtils.getInstance().write(pageContext, output);
}
// Continue processing this page
return (SKIP_BODY);
}
}