Faster XML creation for Publications

git-svn-id: https://svn.libreccm.org/ccm/trunk@5486 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2018-06-06 09:24:42 +00:00
parent 289396315b
commit c9b802a317
1 changed files with 52 additions and 28 deletions

View File

@ -32,19 +32,23 @@ import com.arsdigita.cms.contenttypes.SeriesCollection;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.cms.scipublications.imexporter.PublicationFormat; import com.arsdigita.cms.scipublications.imexporter.PublicationFormat;
import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporters; import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporters;
import com.arsdigita.cms.scipublications.importer.report.OrganizationalUnitImportReport;
import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* *
* @author Jens Pelzetter * @author Jens Pelzetter
* @version $Id$ * @version $Id: PublicationExtraXmlGenerator.java 4544 2017-01-30 20:34:53Z
* jensp $
*/ */
public class PublicationExtraXmlGenerator implements ExtraXMLGenerator { public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
private final static List<ExtraXMLGenerator> EXTENDING_GENERATORS = new ArrayList<ExtraXMLGenerator>(); private final static List<ExtraXMLGenerator> EXTENDING_GENERATORS
= new ArrayList<ExtraXMLGenerator>();
private boolean listMode; private boolean listMode;
public static void addExtendingGenerator(final ExtraXMLGenerator generator) { public static void addExtendingGenerator(final ExtraXMLGenerator generator) {
@ -75,7 +79,8 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
if (!listMode) { if (!listMode) {
createOrgaUnitsXml(publication, element, state); createOrgaUnitsXml(publication, element, state);
final List<PublicationFormat> formats = SciPublicationsExporters.getInstance().getSupportedFormats(); final List<PublicationFormat> formats = SciPublicationsExporters
.getInstance().getSupportedFormats();
for (PublicationFormat format : formats) { for (PublicationFormat format : formats) {
createExportLink(format, element, (Publication) item, state); createExportLink(format, element, (Publication) item, state);
@ -137,8 +142,9 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
private void createOrgaUnitsXml(final Publication publication, private void createOrgaUnitsXml(final Publication publication,
final Element parent, final Element parent,
final PageState state) { final PageState state) {
final PublicationGenericOrganizationalsUnitCollection orgaunits = final PublicationGenericOrganizationalsUnitCollection orgaunits
publication.getOrganizationalUnits(); = publication
.getOrganizationalUnits();
if ((orgaunits == null) || orgaunits.isEmpty()) { if ((orgaunits == null) || orgaunits.isEmpty()) {
return; return;
} }
@ -146,9 +152,17 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
final Element orgaunitsElem = parent.newChildElement( final Element orgaunitsElem = parent.newChildElement(
"organizationalunits"); "organizationalunits");
while (orgaunits.next()) { while (orgaunits.next()) {
createOrgaUnitXml(orgaunits.getOrganizationalUnit(GlobalizationHelper.getNegotiatedLocale().getLanguage()), // createOrgaUnitXml(orgaunits.getOrganizationalUnit(
orgaunitsElem, // GlobalizationHelper.getNegotiatedLocale().getLanguage()),
state); // orgaunitsElem,
// state);
final GenericOrganizationalUnit orgaUnit = orgaunits
.getOrganizationalUnit();
final Element orgaUnitElem = orgaunitsElem.newChildElement("organizationalunit");
orgaUnitElem.addAttribute("oid", orgaUnit.getOID().toString());
final Element titleElem = orgaUnitElem.newChildElement("title");
titleElem.setText(orgaUnit.getTitle());
} }
} }
@ -170,7 +184,8 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
final Element seriesElem = parent.newChildElement("series"); final Element seriesElem = parent.newChildElement("series");
while (series.next()) { while (series.next()) {
createSeriesElemXml(series.getSeries(GlobalizationHelper.getNegotiatedLocale().getLanguage()), createSeriesElemXml(series.getSeries(GlobalizationHelper
.getNegotiatedLocale().getLanguage()),
series.getVolumeOfSeries(), series.getVolumeOfSeries(),
seriesElem, seriesElem,
state); state);
@ -184,13 +199,21 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
if (series == null) { if (series == null) {
return; return;
} }
final XmlGenerator generator = new XmlGenerator(series);
generator.setItemElemName("series", ""); final Element seriesItemElem = seriesElem.newChildElement("series");
if (volumeOfSeries != null) { seriesItemElem.addAttribute("oid", series.getOID().toString());
generator.addItemAttribute("volume", volumeOfSeries); seriesItemElem.addAttribute("volume", volumeOfSeries);
}
generator.setListMode(listMode); final Element titleElem = seriesItemElem.newChildElement("title");
generator.generateXML(state, seriesElem, ""); titleElem.setText(series.getTitle());
// final XmlGenerator generator = new XmlGenerator(series);
// generator.setItemElemName("series", "");
// if (volumeOfSeries != null) {
// generator.addItemAttribute("volume", volumeOfSeries);
// }
// generator.setListMode(listMode);
// generator.generateXML(state, seriesElem, "");
} }
private void createExportLink(final PublicationFormat format, private void createExportLink(final PublicationFormat format,
@ -199,8 +222,8 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
final PageState state) { final PageState state) {
final Element exportLinkElem = parent.newChildElement( final Element exportLinkElem = parent.newChildElement(
"publicationExportLink"); "publicationExportLink");
final Element formatKeyElem = final Element formatKeyElem = exportLinkElem
exportLinkElem.newChildElement("formatKey"); .newChildElement("formatKey");
formatKeyElem.setText(format.getName().toLowerCase()); formatKeyElem.setText(format.getName().toLowerCase());
final Element formatNameElem = exportLinkElem.newChildElement( final Element formatNameElem = exportLinkElem.newChildElement(
"formatName"); "formatName");
@ -235,4 +258,5 @@ public class PublicationExtraXmlGenerator implements ExtraXMLGenerator {
} }
} }
} }