001
014
015 package com.liferay.portlet.dynamicdatamapping.registry;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.io.unsync.UnsyncStringWriter;
019 import com.liferay.portal.kernel.language.LanguageUtil;
020 import com.liferay.portal.kernel.template.Template;
021 import com.liferay.portal.kernel.template.TemplateConstants;
022 import com.liferay.portal.kernel.template.TemplateManagerUtil;
023 import com.liferay.portal.kernel.template.TemplateResource;
024 import com.liferay.portal.kernel.template.URLTemplateResource;
025 import com.liferay.portlet.dynamicdatamapping.model.DDMFormField;
026 import com.liferay.portlet.dynamicdatamapping.render.DDMFormFieldRenderingContext;
027
028 import java.io.Writer;
029
030 import java.net.URL;
031
032 import java.util.Locale;
033
034
037 public abstract class BaseDDMFormFieldRenderer implements DDMFormFieldRenderer {
038
039 @Override
040 public String render(
041 DDMFormField ddmFormField,
042 DDMFormFieldRenderingContext ddmFormFieldRenderingContext)
043 throws PortalException {
044
045 Template template = TemplateManagerUtil.getTemplate(
046 getTemplateLanguage(), getTemplateResource(), false);
047
048 template.put(TemplateConstants.NAMESPACE, getTemplateNamespace());
049
050 populateRequiredContext(
051 template, ddmFormField, ddmFormFieldRenderingContext);
052
053 populateOptionalContext(
054 template, ddmFormField, ddmFormFieldRenderingContext);
055
056 return render(template);
057 }
058
059 protected TemplateResource getTemplateResource(String templatePath) {
060 Class<?> clazz = getClass();
061
062 ClassLoader classLoader = clazz.getClassLoader();
063
064 URL templateURL = classLoader.getResource(templatePath);
065
066 return new URLTemplateResource(templateURL.getPath(), templateURL);
067 }
068
069 protected void populateOptionalContext(
070 Template template, DDMFormField ddmFormField,
071 DDMFormFieldRenderingContext ddmFormFieldRenderingContext) {
072 }
073
074 protected void populateRequiredContext(
075 Template template, DDMFormField ddmFormField,
076 DDMFormFieldRenderingContext ddmFormFieldRenderingContext) {
077
078 Locale locale = ddmFormFieldRenderingContext.getLocale();
079
080 template.put(
081 "childElementsHTML",
082 ddmFormFieldRenderingContext.getChildElementsHTML());
083 template.put("dir", LanguageUtil.get(locale, "lang.dir"));
084 template.put("label", ddmFormFieldRenderingContext.getLabel());
085 template.put("name", ddmFormFieldRenderingContext.getName());
086 template.put("value", ddmFormFieldRenderingContext.getValue());
087 template.put("visible", ddmFormFieldRenderingContext.isVisible());
088 }
089
090 protected String render(Template template) throws PortalException {
091 Writer writer = new UnsyncStringWriter();
092
093 template.processTemplate(writer);
094
095 return writer.toString();
096 }
097
098 }