diff --git a/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticleInitializer.java b/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticleInitializer.java index 155a0e7a9..c6ac6117d 100755 --- a/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticleInitializer.java +++ b/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticleInitializer.java @@ -19,6 +19,7 @@ package com.arsdigita.cms.contenttypes; import org.apache.log4j.Logger; +import org.libreccm.export.ExportManager; /** * Executes at each system startup and initializes the Article content type. @@ -41,6 +42,8 @@ public class ArticleInitializer extends ContentTypeInitializer { */ public ArticleInitializer() { super("ccm-cms-types-article.pdl.mf", Article.BASE_DATA_OBJECT_TYPE); + + ExportManager.getInstance().registerExporter(new ArticlesExporter()); } /** diff --git a/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticlesExporter.java b/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticlesExporter.java new file mode 100644 index 000000000..805398a6d --- /dev/null +++ b/ccm-cms-types-article/src/com/arsdigita/cms/contenttypes/ArticlesExporter.java @@ -0,0 +1,74 @@ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ItemCollection; + +import com.fasterxml.jackson.core.JsonGenerator; +import org.librecms.contentsection.AbstractContentItemsExporter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +public class ArticlesExporter extends AbstractContentItemsExporter
{ + + @Override + protected void exportContentItemProperties( + final Article contentItem, final JsonGenerator jsonGenerator) + throws IOException { + + } + + @Override + protected Map> collectLocalizedValues( + final ItemCollection instances) { + + final Map leadPropertyValues = new HashMap<>(); + final Map textPropertyValues = new HashMap<>(); + + while (instances.next()) { + + final Article article = (Article) instances.getContentItem(); + final String lang = article.getLanguage(); + final Locale locale = new Locale(lang); + final String lead = article.getLead(); + final String text; + if (article.getTextAsset() == null) { + text = ""; + } else { + text = article.getTextAsset().getText(); + } + + leadPropertyValues.put(locale, lead); + textPropertyValues.put(locale, text); + } + + instances.rewind(); + + final Map> properties = new HashMap<>(); + properties.put("description", leadPropertyValues); + properties.put("text", textPropertyValues); + + return properties; + } + + @Override + public Class
exportsType() { + return Article.class; + } + + @Override + public String exportsBaseDataObjectType() { + return Article.BASE_DATA_OBJECT_TYPE; + } + + @Override + public String convertsToType() { + return "org.librecms.contenttypes.Article"; + } + +}