/*
* Copyright (C) 2003-2009 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero 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 org.exoplatform.faq.rendering;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.faq.service.Answer;
import org.exoplatform.faq.service.Comment;
import org.exoplatform.faq.service.Question;
import org.exoplatform.ks.bbcode.core.BBCodeRenderer;
import org.exoplatform.ks.rendering.MarkupRenderingService;
import org.exoplatform.ks.rendering.spi.MarkupRenderDelegate;
/**
* @author <a href="mailto:patrice.lamarque@exoplatform.com">Patrice Lamarque</a>
* @version $Revision$
*/
public class RenderHelper {
private MarkupRenderingService markupRenderingService;
public RenderHelper() {
}
/**
* Render markup for a faq answer
*
* @param answer
* @return
*/
public String renderAnswer(Answer answer) {
try {
return getMarkupRenderingService().delegateRendering(new AnswerDelegate(), answer);
} catch (Exception e) {
throw new RenderingException(e);
}
}
public String renderComment(Comment comment) {
try {
return getMarkupRenderingService().delegateRendering(new CommentDelegate(), comment);
} catch (Exception e) {
throw new RenderingException(e);
}
}
public String renderQuestion(Question question) {
try {
return getMarkupRenderingService().delegateRendering(new QuestionDelegate(), question);
} catch (Exception e) {
throw new RenderingException(e);
}
}
static class AnswerDelegate implements MarkupRenderDelegate<Answer> {
public String getMarkup(Answer answer) {
return answer.getResponses();
}
public String getSyntax(Answer target) {
return BBCodeRenderer.BBCODE_SYNTAX_ID;
}
}
static class CommentDelegate implements MarkupRenderDelegate<Comment> {
public String getMarkup(Comment answer) {
return answer.getComments();
}
public String getSyntax(Comment target) {
return BBCodeRenderer.BBCODE_SYNTAX_ID;
}
}
static class QuestionDelegate implements MarkupRenderDelegate<Question> {
public String getMarkup(Question question) {
return question.getDetail();
}
public String getSyntax(Question target) {
return BBCodeRenderer.BBCODE_SYNTAX_ID;
}
}
public MarkupRenderingService getMarkupRenderingService() {
if (this.markupRenderingService == null) {
this.markupRenderingService = (MarkupRenderingService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(MarkupRenderingService.class);
/*
* BBCodeRenderer renderer = (BBCodeRenderer) markupRenderingService.getRenderer(BBCodeRenderer.BBCODE_SYNTAX_ID); renderer.setBbCodeProvider(new ExtendedBBCodeProvider());
*/
}
return this.markupRenderingService;
}
public void setMarkupRenderingService(MarkupRenderingService markupRenderingService) {
this.markupRenderingService = markupRenderingService;
}
}