/* * StringLineBreakConverter.java * * Copyright (C) 2009 Interactive Media Management * * 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, either version 3 of the License, or * (at your option) any later version. * * 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, see <http://www.gnu.org/licenses/>. */ package dk.i2m.jsf.converters; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; /** * Converter for replacing system line breaks with HTML break lines * (<code><br /></code>). * * @author Allan Lykke Christensen */ public class StringLineBreakConverter implements Converter { private static final String LINE_BREAK = System.getProperty("line.separator"); /** * Converts HTML break lines to system line break. * * @param ctx * Facelets context * @param comp * Component using the converter * @param value * Value to conver * @return {@link String} with HTML break lines replaced with system line * breaks * @throws javax.faces.convert.ConverterException * If the convertion failed */ @Override public Object getAsObject(FacesContext ctx, UIComponent comp, String value) throws ConverterException { String html = value.replaceAll("<br/>", LINE_BREAK); return html.replaceAll("<br>", LINE_BREAK); } /** * Converts the {@link String} with line break to a {@link String} with HTML * break lines. * * @param ctx * Facelets context * @param comp * Component using the converter * @param obj * Object to convert * @return String with HTML break lines * @throws javax.faces.convert.ConverterException * If the convertion failed */ @Override public String getAsString(FacesContext ctx, UIComponent comp, Object obj) throws ConverterException { String plain = (String) obj; return plain.replaceAll(LINE_BREAK, "<br/>"); } }