Exporter for Event

git-svn-id: https://svn.libreccm.org/ccm/trunk@5798 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2019-01-16 19:09:04 +00:00
parent 0b986f95a1
commit 965ee740de
2 changed files with 151 additions and 0 deletions

View File

@ -19,6 +19,8 @@
package com.arsdigita.cms.contenttypes; package com.arsdigita.cms.contenttypes;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.libreccm.export.ExportManager;
import org.librecms.contenttypes.EventExporter;
/** /**
* Executes at each system startup and initializes the Event content type. * Executes at each system startup and initializes the Event content type.
@ -42,6 +44,8 @@ public class EventInitializer extends ContentTypeInitializer {
*/ */
public EventInitializer() { public EventInitializer() {
super("ccm-cms-types-event.pdl.mf", Event.BASE_DATA_OBJECT_TYPE); super("ccm-cms-types-event.pdl.mf", Event.BASE_DATA_OBJECT_TYPE);
ExportManager.getInstance().registerExporter(new EventExporter());
} }
/** /**

View File

@ -0,0 +1,147 @@
package org.librecms.contenttypes;
import com.arsdigita.cms.ItemCollection;
import com.arsdigita.cms.contenttypes.Event;
import com.fasterxml.jackson.core.JsonGenerator;
import org.librecms.contentsection.AbstractContentItemsExporter;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class EventExporter extends AbstractContentItemsExporter<Event> {
@Override
protected void exportContentItemProperties(
final Event event, final JsonGenerator jsonGenerator)
throws IOException {
final DateTimeFormatter dateTimeFormatter
= DateTimeFormatter.ISO_DATE_TIME;
if (event.getEndDate() != null) {
final LocalDateTime endDate = LocalDateTime
.ofInstant(event.getEndDate().toInstant(),
ZoneId.systemDefault());
final LocalDateTime endDateTime;
if (event.getEndTime() == null) {
endDateTime = endDate;
} else {
final LocalDateTime endTime = LocalDateTime
.ofInstant(event.getEndTime().toInstant(),
ZoneId.systemDefault());
endDateTime = LocalDateTime.of(endDate.toLocalDate(),
endTime.toLocalTime());
}
jsonGenerator.writeStringField(
"endDate", dateTimeFormatter.format(endDateTime));
}
if (event.getStartDate() != null) {
final LocalDateTime startDate = LocalDateTime
.ofInstant(event.getStartDate().toInstant(),
ZoneId.systemDefault());
final LocalDateTime startDateTime;
if (event.getStartTime() == null) {
startDateTime = startDate;
} else {
final LocalDateTime startTime = LocalDateTime
.ofInstant(event.getStartTime().toInstant(),
ZoneId.systemDefault());
startDateTime = LocalDateTime.of(startDate.toLocalDate(),
startTime.toLocalTime());
}
jsonGenerator.writeStringField(
"startDate", dateTimeFormatter.format(startDateTime));
}
jsonGenerator.writeStringField("mapLink", event.getMapLink());
}
@Override
protected Map<String, Map<Locale, String>> collectLocalizedValues(
final ItemCollection instances) {
final Map<Locale, String> eventDateValues = new HashMap<>();
final Map<Locale, String> locationValues = new HashMap<>();
final Map<Locale, String> mainContributorValues = new HashMap<>();
final Map<Locale, String> eventTypeValues = new HashMap<>();
final Map<Locale, String> leadValues = new HashMap<>();
final Map<Locale, String> textValues = new HashMap<>();
while(instances.next()) {
final Event event = (Event) instances.getContentItem();
final String lang = event.getLanguage();
final Locale locale = new Locale(lang);
final String eventDate = event.getEventDate();
final String location = event.getLocation();
final String mainContributor = event.getMainContributor();
final String eventType = event.getEventType();
final String lead = event.getLead();
final String text;
if (event.getTextAsset() == null) {
text = "";
} else {
text = event.getTextAsset().getText();
}
eventDateValues.put(locale, eventDate);
locationValues.put(locale, location);
mainContributorValues.put(locale, mainContributor);
eventTypeValues.put(locale, eventType);
leadValues.put(locale, lead);
textValues.put(locale, text);
}
instances.rewind();
final Map<String, Map<Locale, String>> properties = new HashMap<>();
properties.put("eventDate", eventDateValues);
properties.put("location", locationValues);
properties.put("mainContributor", mainContributorValues);
properties.put("eventType", eventTypeValues);
properties.put("description", leadValues);
properties.put("text", textValues);
return properties;
}
@Override
public Class<Event> exportsType() {
return Event.class;
}
@Override
public String exportsBaseDataObjectType() {
return Event.BASE_DATA_OBJECT_TYPE;
}
@Override
public String convertsToType() {
return "org.librecms.contenttypes.Event";
}
}