CSV Exporter for publications
git-svn-id: https://svn.libreccm.org/ccm/trunk@2543 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
3984e532d9
commit
175e24a95b
|
|
@ -462,12 +462,49 @@ public class SciPublicationsServlet extends BaseApplicationServlet {
|
|||
exportPublications(format, publicationIds, response);
|
||||
|
||||
} else {
|
||||
LOGGER.warn("Export action needs either a publication id or a "
|
||||
+ "term id. Neither was found in the query parameters."
|
||||
+ "Responding with BAD_REQUEST status.");
|
||||
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
|
||||
"The export action needs either a publication id or "
|
||||
+ "a term id. Neither was found in the query parameters.");
|
||||
// LOGGER.warn("Export action needs either a publication id or a "
|
||||
// + "term id. Neither was found in the query parameters."
|
||||
// + "Responding with BAD_REQUEST status.");
|
||||
// response.sendError(HttpServletResponse.SC_BAD_REQUEST,
|
||||
// "The export action needs either a publication id or "
|
||||
// + "a term id. Neither was found in the query parameters.");
|
||||
//Otherwise, export all publications
|
||||
final DataCollection publications = SessionManager.getSession().retrieve(
|
||||
Publication.BASE_DATA_OBJECT_TYPE);
|
||||
|
||||
if (Kernel.getConfig().languageIndependentItems()) {
|
||||
final FilterFactory filterFactory = publications.getFilterFactory();
|
||||
final Filter filter = filterFactory.or().
|
||||
addFilter(filterFactory.equals("language", GlobalizationHelper.
|
||||
getNegotiatedLocale().getLanguage())).
|
||||
addFilter(filterFactory.and().
|
||||
addFilter(
|
||||
filterFactory.equals("language",
|
||||
GlobalizationHelper.LANG_INDEPENDENT)).
|
||||
addFilter(filterFactory.notIn("parent",
|
||||
"com.arsdigita.navigation.getParentIDsOfMatchedItems").
|
||||
set("language", GlobalizationHelper.
|
||||
getNegotiatedLocale().getLanguage())));
|
||||
publications.addFilter(filter);
|
||||
|
||||
} else {
|
||||
publications.addEqualsFilter("language",
|
||||
GlobalizationHelper.
|
||||
getNegotiatedLocale().getLanguage());
|
||||
}
|
||||
|
||||
publications.addOrder("yearOfPublication desc");
|
||||
publications.addOrder("authorsStr");
|
||||
publications.addOrder("title");
|
||||
|
||||
final List<BigDecimal> publicationIds =
|
||||
new ArrayList<BigDecimal>();
|
||||
while(publications.next()) {
|
||||
publicationIds.add((BigDecimal) publications.get("id"));
|
||||
|
||||
}
|
||||
|
||||
exportPublications(format, publicationIds, response);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
@ -520,6 +557,10 @@ public class SciPublicationsServlet extends BaseApplicationServlet {
|
|||
String publicationName = "publication";
|
||||
final StringBuilder result = new StringBuilder();
|
||||
|
||||
if (exporter.getPreamble() != null) {
|
||||
result.append(exporter.getPreamble());
|
||||
}
|
||||
|
||||
for (BigDecimal publicationId : publicationIds) {
|
||||
try {
|
||||
//Get the publication
|
||||
|
|
|
|||
|
|
@ -43,4 +43,10 @@ public interface SciPublicationsExporter {
|
|||
*/
|
||||
String exportPublication(Publication publication);
|
||||
|
||||
/**
|
||||
* @return If the format requires some sort of preamble this method should return it.
|
||||
* If the format needs no preamble the method must return null.
|
||||
*/
|
||||
String getPreamble();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,4 +59,9 @@ public class BibTeXExporter implements SciPublicationsExporter {
|
|||
public String exportPublication(final Publication publication) {
|
||||
return BibTeXConverters.getInstance().convert(publication);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreamble() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import com.arsdigita.cms.contenttypes.Publication;
|
|||
import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.ServiceLoader;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -59,4 +59,9 @@ public class RisExporter implements SciPublicationsExporter {
|
|||
public String exportPublication(final Publication publication) {
|
||||
return RisConverters.getInstance().convert(publication);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreamble() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0"?>
|
||||
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
||||
name="ccm-sci-publicationscsvexporter"
|
||||
version="6.6.0"
|
||||
release="1"
|
||||
webapp="ROOT">
|
||||
|
||||
<ccm:dependencies>
|
||||
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
||||
<ccm:requires name="ccm-cms" version="6.6.6" relation="ge"/>
|
||||
<ccm:requires name="ccm-sci-publications" version="6.6.3" relation="ge"/>
|
||||
</ccm:dependencies>
|
||||
|
||||
<ccm:directories>
|
||||
<ccm:directory name="src"/>
|
||||
</ccm:directories>
|
||||
|
||||
<ccm:contacts>
|
||||
<ccm:contact uri="http://www.scientificcms.org" type="website"/>
|
||||
<ccm:contact uri="mailto:info@scientificcms.org" type="support"/>
|
||||
</ccm:contacts>
|
||||
|
||||
<ccm:description>
|
||||
Importer for Publications using a CSV file. Only used for internal purposes
|
||||
at the University of Bremen.
|
||||
</ccm:description>
|
||||
|
||||
</ccm:application>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<registry>
|
||||
<config class="com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConfig" storage="ccm-sci-publications/csvexporter.properties"/>
|
||||
</registry>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<load>
|
||||
<requires>
|
||||
<table name="inits"/>
|
||||
<table name="acs_objects"/>
|
||||
<table name="cms_items"/>
|
||||
<table name="ct_publications"/>
|
||||
<initializer class="com.arsdigita.cms.Initializer"/>
|
||||
<initializer class="com.arsdigita.cms.contenttypes.PublicationInitializer"/>
|
||||
</requires>
|
||||
|
||||
<provides>
|
||||
<initializer class="com.arsdigita.cms.scipublications.exporter.csv.Initializer"/>
|
||||
</provides>
|
||||
</load>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
||||
import com.arsdigita.cms.contenttypes.CollectedVolume;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class ArticleInCollectedVolumeConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof ArticleInCollectedVolume)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The ArticleInCollectedVolumeConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type ArticleInCollectedVolume or which are extending "
|
||||
+ "ArticleInCollectedVolume. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type ArticleInCollectedVolume and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final ArticleInCollectedVolume article = (ArticleInCollectedVolume) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(PAGES_FROM, convertIntegerValue(article.getPagesFrom()));
|
||||
values.put(PAGES_TO, convertIntegerValue(article.getPagesTo()));
|
||||
values.put(CHAPTER, article.getChapter());
|
||||
|
||||
if (article.getCollectedVolume() != null) {
|
||||
final CollectedVolume collectedVolume = article.getCollectedVolume();
|
||||
values.put(COLLECTED_VOLUME, collectedVolume.getTitle());
|
||||
values.put(COLLECTED_VOLUME_EDITORS, convertAuthors(collectedVolume.getAuthors()));
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return ArticleInCollectedVolume.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.ArticleInJournal;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class ArticleInJournalConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof ArticleInJournal)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The ArticleInJournalConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type ArticleInJournal or which are extending "
|
||||
+ "ArticleInJournal. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type ArticleInJournal and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final ArticleInJournal article = (ArticleInJournal) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(VOLUME_OF_JOURNAL, convertIntegerValue(article.getVolume()));
|
||||
values.put(ISSUE_OF_JOURNAL, article.getIssue());
|
||||
values.put(PAGES_FROM, convertIntegerValue(article.getPagesFrom()));
|
||||
values.put(PAGES_TO, convertIntegerValue(article.getPagesTo()));
|
||||
values.put(PUBLICATION_DATE, convertDateValue(article.getPublicationDate()));
|
||||
|
||||
if (article.getJournal() != null) {
|
||||
values.put(JOURNAL, article.getJournal().getTitle());
|
||||
values.put(JOURNAL_SYMBOL, article.getJournal().getSymbol());
|
||||
values.put(ISSN, article.getJournal().getISSN());
|
||||
}
|
||||
|
||||
return values;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return ArticleInJournal.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.CollectedVolume;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class CollectedVolumeConverter extends PublicationWithPublisherConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof CollectedVolume)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The CollectedVolumeConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type CollectedVolume or which are extending "
|
||||
+ "CollectedVolume. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type CollectedVolume and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final CollectedVolume collectedVolume = (CollectedVolume) publication;
|
||||
|
||||
return super.convert(publication);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return CollectedVolume.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Interface for the converter classes which are transforming publication objects into a CSV line.
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public interface CsvConverter {
|
||||
|
||||
/**
|
||||
* Converts a publication to CSV.
|
||||
*
|
||||
* @param publication The publication to convert.
|
||||
* @return The values for the CSV line. They are returned as a map, where each entry is
|
||||
* a column in the CSV line. For the key the values from {@link CsvExporterConstants} are used.
|
||||
*/
|
||||
Map<CsvExporterConstants, String> convert(Publication publication);
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return The CCM publication type supported by this converter.
|
||||
*/
|
||||
String getCCMType();
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* Registry for the available {@link CsvConverter} implementations.
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class CsvConverters {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(CsvConverters.class);
|
||||
|
||||
private final Map<String, CsvConverter> converters = new HashMap<String, CsvConverter>();
|
||||
|
||||
private CsvConverters() {
|
||||
//Nothing
|
||||
}
|
||||
|
||||
private static class Instance {
|
||||
|
||||
private final static CsvConverters INSTANCE = new CsvConverters();
|
||||
}
|
||||
|
||||
public static CsvConverters getInstance() {
|
||||
return Instance.INSTANCE;
|
||||
}
|
||||
|
||||
public static void register(final CsvConverter converter) {
|
||||
getInstance().registerConverter(converter);
|
||||
}
|
||||
|
||||
public void registerConverter(final CsvConverter converter) {
|
||||
converters.put(converter.getCCMType(), converter);
|
||||
}
|
||||
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
try {
|
||||
CsvConverter converter;
|
||||
LOGGER.debug(String.format("Trying to find converter for type '%s'.",
|
||||
publication.getClass().getName()));
|
||||
converter = converters.get(publication.getClass().getName());
|
||||
|
||||
if (converter == null) {
|
||||
LOGGER.debug("No converter found...");
|
||||
if (publication instanceof PublicationWithPublisher) {
|
||||
LOGGER.debug("Publication is a PublicationWithPublisher, using"
|
||||
+ "converter for this type.");
|
||||
converter = converters.get(PublicationWithPublisher.class.getName());
|
||||
} else {
|
||||
LOGGER.debug("Publication is a Publication, using"
|
||||
+ "converter for this type.");
|
||||
converter = converters.get(Publication.class.getName());
|
||||
}
|
||||
}
|
||||
|
||||
if (converter == null) {
|
||||
LOGGER.error(String.format("Converter is null. This should not happen. Publication "
|
||||
+ "to convert is of type '%s'.", publication.getClass().getName()));
|
||||
}
|
||||
|
||||
converter = converter.getClass().newInstance();
|
||||
|
||||
return converter.convert(publication);
|
||||
} catch (InstantiationException ex) {
|
||||
LOGGER.warn("Failed to instaniate CSV converter.", ex);
|
||||
return null;
|
||||
} catch (IllegalAccessException ex) {
|
||||
LOGGER.warn("Failed to instaniate CSV converter.", ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporter;
|
||||
import com.arsdigita.cms.scipublications.imexporter.PublicationFormat;
|
||||
import java.util.Map;
|
||||
import javax.activation.MimeType;
|
||||
import javax.activation.MimeTypeParseException;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class CsvExporter implements SciPublicationsExporter {
|
||||
|
||||
private final static Logger LOGGER = Logger.getLogger(CsvExporter.class);
|
||||
private final static CsvExporterConfig CONFIG = new CsvExporterConfig();
|
||||
|
||||
@Override
|
||||
public PublicationFormat getSupportedFormat() {
|
||||
try {
|
||||
return new PublicationFormat("CSV",
|
||||
new MimeType("text", "csv"),
|
||||
"csv");
|
||||
} catch (MimeTypeParseException ex) {
|
||||
LOGGER.warn("Failed to create MimeType for PublicationFormat."
|
||||
+ "Using null mimetype instead. Cause: ", ex);
|
||||
return new PublicationFormat("CSV",
|
||||
null,
|
||||
"csv");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String exportPublication(final Publication publication) {
|
||||
final Map<CsvExporterConstants, String> line = CsvConverters.getInstance().convert(
|
||||
publication);
|
||||
|
||||
final String[] columns = CONFIG.getColumns().split(",");
|
||||
final String separator = CONFIG.getSeparator();
|
||||
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
|
||||
String value;
|
||||
for (String token : columns) {
|
||||
value = line.get(CsvExporterConstants.valueOf(token));
|
||||
if ((value == null) || value.isEmpty()) {
|
||||
builder.append(" ");
|
||||
} else {
|
||||
builder.append(value);
|
||||
}
|
||||
builder.append(separator);
|
||||
}
|
||||
|
||||
builder.append("\n");
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreamble() {
|
||||
|
||||
final String[] columns = CONFIG.getColumns().split(",");
|
||||
final String separator = CONFIG.getSeparator();
|
||||
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
|
||||
for(String column : columns) {
|
||||
builder.append(column);
|
||||
builder.append(separator);
|
||||
}
|
||||
builder.append("\n");
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.runtime.AbstractConfig;
|
||||
import com.arsdigita.util.parameter.Parameter;
|
||||
import com.arsdigita.util.parameter.StringParameter;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class CsvExporterConfig extends AbstractConfig {
|
||||
|
||||
private Parameter columns;
|
||||
private Parameter separator;
|
||||
|
||||
public CsvExporterConfig() {
|
||||
super();
|
||||
|
||||
separator = new StringParameter("com.arsdigita.cms.scipublications.exporter.csv.separator",
|
||||
Parameter.REQUIRED,
|
||||
"\t");
|
||||
|
||||
columns = new StringParameter("com.arsdigita.cms.scipublications.exporter.csv.columns",
|
||||
Parameter.REQUIRED,
|
||||
PUBLICATION_ID + "," +
|
||||
PUBLICATION_TYPE + "," +
|
||||
AUTHORS + "," +
|
||||
YEAR + "," +
|
||||
YEAR_FIRST_PUBLISHED + "," +
|
||||
TITLE + "," +
|
||||
PUBLISHER + "," +
|
||||
PLACE + "," +
|
||||
EDITION + "," +
|
||||
ABSTRACT + "," +
|
||||
MISC + "," +
|
||||
LANGUAGE_OF_PUBLICATION + "," +
|
||||
REVIEWED + "," +
|
||||
VOLUME + "," +
|
||||
NUMBER + "," +
|
||||
NUMBER_OF_VOLUMES + "," +
|
||||
NUMBER_OF_PAGES + "," +
|
||||
VOLUME_OF_JOURNAL + "," +
|
||||
ISSUE_OF_JOURNAL + "," +
|
||||
JOURNAL + "," +
|
||||
JOURNAL_SYMBOL + "," +
|
||||
CHAPTER + "," +
|
||||
PUBLICATION_DATE + "," +
|
||||
COLLECTED_VOLUME + "," +
|
||||
COLLECTED_VOLUME_EDITORS + "," +
|
||||
CONFERENCE + "," +
|
||||
CONFERENCE_PLACE + "," +
|
||||
CONFERENCE_DATE_FROM + "," +
|
||||
CONFERENCE_DATE_TO + "," +
|
||||
IN_SERIES + "," +
|
||||
VOLUME_OF_SERIES + "," +
|
||||
EDITOR_OF_SERIES + "," +
|
||||
ORGANISATION + "," +
|
||||
URL + "," +
|
||||
ISBN + "," +
|
||||
ISSN + "," +
|
||||
URN + "," +
|
||||
DOI + "," +
|
||||
LAST_ACCESS + ",");
|
||||
|
||||
register(columns);
|
||||
register(separator);
|
||||
|
||||
loadInfo();
|
||||
}
|
||||
|
||||
public String getColumns() {
|
||||
return (String) get(columns);
|
||||
}
|
||||
|
||||
public String getSeparator() {
|
||||
return (String) get(separator);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
com.arsdigita.cms.scipublications.exporter.csv.separator.title = CSV Exporter Separator
|
||||
com.arsdigita.cms.scipublications.exporter.csv.separator.purpose = Separator used in CSV file between columns
|
||||
com.arsdigita.cms.scipublications.exporter.csv.separator.example = |
|
||||
com.arsdigita.cms.scipublications.exporter.csv.separator.format = [String]
|
||||
|
||||
com.arsdigita.cms.scipublications.exporter.csv.columns.title = CSV Columns
|
||||
com.arsdigita.cms.scipublications.exporter.csv.columns.purpose = Columns to include into the CSV file. Also defines the order of the columns.
|
||||
com.arsdigita.cms.scipublications.exporter.csv.columns.example =
|
||||
com.arsdigita.cms.scipublications.exporter.csv.columns.format = [String]
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
/**
|
||||
* Constants used in for CSV Exporter, most of them are the field names used in the maps from which
|
||||
* which the CSV lines are created.
|
||||
*
|
||||
* The constants are ordered alphabetically.
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public enum CsvExporterConstants {
|
||||
|
||||
ABSTRACT,
|
||||
AUTHORS,
|
||||
|
||||
CHAPTER,
|
||||
COLLECTED_VOLUME,
|
||||
COLLECTED_VOLUME_EDITORS,
|
||||
CONFERENCE,
|
||||
CONFERENCE_DATE_FROM,
|
||||
CONFERENCE_DATE_TO,
|
||||
CONFERENCE_PLACE,
|
||||
|
||||
DOI,
|
||||
|
||||
EDITION,
|
||||
EDITOR_OF_SERIES,
|
||||
|
||||
IN_SERIES,
|
||||
ISBN,
|
||||
ISSN,
|
||||
ISSUE_OF_JOURNAL,
|
||||
|
||||
JOURNAL,
|
||||
JOURNAL_SYMBOL,
|
||||
|
||||
LANGUAGE_OF_PUBLICATION,
|
||||
LAST_ACCESS,
|
||||
|
||||
MISC,
|
||||
|
||||
NUMBER,
|
||||
NUMBER_OF_VOLUMES,
|
||||
NUMBER_OF_PAGES,
|
||||
|
||||
ORGANISATION,
|
||||
|
||||
PAGES_FROM,
|
||||
PAGES_TO,
|
||||
PLACE,
|
||||
PUBLICATION_DATE,
|
||||
PUBLICATION_ID,
|
||||
PUBLICATION_TYPE,
|
||||
PUBLISHER,
|
||||
|
||||
REVIEWED,
|
||||
|
||||
YEAR,
|
||||
YEAR_FIRST_PUBLISHED,
|
||||
|
||||
TITLE,
|
||||
|
||||
URL,
|
||||
URN,
|
||||
|
||||
VOLUME,
|
||||
VOLUME_OF_JOURNAL,
|
||||
VOLUME_OF_SERIES
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.Expertise;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class ExpertiseConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof Expertise)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The ExpertiseConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type Expertise or which are extending "
|
||||
+ "Expertise. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type Expertise and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final Expertise expertise = (Expertise) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(PLACE, expertise.getPlace());
|
||||
values.put(NUMBER_OF_PAGES, convertIntegerValue(expertise.getNumberOfPages()));
|
||||
if (expertise.getOrganization() != null) {
|
||||
values.put(ORGANISATION, expertise.getOrganization().getTitle());
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return Expertise.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.GreyLiterature;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class GreyLiteratureConverter extends UnPublishedConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof GreyLiterature)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The GreyLiteratureConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type GreyLiterature or which are extending "
|
||||
+ "GreyLiterature. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type GreyLiterature and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final GreyLiterature greyLiterature = (GreyLiterature) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(PAGES_FROM, convertIntegerValue(greyLiterature.getPagesFrom()));
|
||||
values.put(PAGES_TO, convertIntegerValue(greyLiterature.getPagesTo()));
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return GreyLiterature.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.InProceedings;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class InProceedingsConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof InProceedings)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The InProceedingsConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type InProceedings or which are extending "
|
||||
+ "InProceedings. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type InProceedings and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final InProceedings inProceedings = (InProceedings) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(PAGES_FROM, convertIntegerValue(inProceedings.getPagesFrom()));
|
||||
values.put(PAGES_TO, convertIntegerValue(inProceedings.getPagesTo()));
|
||||
|
||||
if (inProceedings.getProceedings() != null) {
|
||||
values.put(COLLECTED_VOLUME, inProceedings.getProceedings().getTitle());
|
||||
values.put(COLLECTED_VOLUME_EDITORS, convertAuthors(inProceedings.getProceedings().
|
||||
getAuthors()));
|
||||
values.put(CONFERENCE, inProceedings.getProceedings().getNameOfConference());
|
||||
values.put(CONFERENCE_PLACE, inProceedings.getProceedings().getPlaceOfConference());
|
||||
values.put(CONFERENCE_DATE_FROM, convertDateValue(inProceedings.getProceedings().
|
||||
getDateFromOfConference()));
|
||||
values.put(CONFERENCE_DATE_TO, convertDateValue(inProceedings.getProceedings().
|
||||
getDateToOfConference()));
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return InProceedings.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporter;
|
||||
import com.arsdigita.cms.scipublications.exporter.SciPublicationsExporters;
|
||||
import com.arsdigita.db.DbHelper;
|
||||
import com.arsdigita.persistence.pdl.ManifestSource;
|
||||
import com.arsdigita.persistence.pdl.NameFilter;
|
||||
import com.arsdigita.runtime.CompoundInitializer;
|
||||
import com.arsdigita.runtime.DomainInitEvent;
|
||||
import com.arsdigita.runtime.PDLInitializer;
|
||||
import com.arsdigita.runtime.RuntimeConfig;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class Initializer extends CompoundInitializer {
|
||||
|
||||
public Initializer() {
|
||||
super();
|
||||
|
||||
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
||||
final int database = DbHelper.getDatabaseFromURL(url);
|
||||
|
||||
add(new PDLInitializer(new ManifestSource("empty.pdl.mf",
|
||||
new NameFilter((DbHelper.getDatabaseSuffix(
|
||||
database)), "pdl"))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(final DomainInitEvent event) {
|
||||
super.init(event);
|
||||
|
||||
SciPublicationsExporters.register(new CsvExporter());
|
||||
|
||||
CsvConverters.register(new ArticleInCollectedVolumeConverter());
|
||||
CsvConverters.register(new ArticleInJournalConverter());
|
||||
CsvConverters.register(new CollectedVolumeConverter());
|
||||
CsvConverters.register(new ExpertiseConverter());
|
||||
CsvConverters.register(new GreyLiteratureConverter());
|
||||
CsvConverters.register(new InProceedingsConverter());
|
||||
CsvConverters.register(new InternetArticleConverter());
|
||||
CsvConverters.register(new MonographConverter());
|
||||
CsvConverters.register(new ProceedingsConverter());
|
||||
CsvConverters.register(new PublicationConverter());
|
||||
CsvConverters.register(new PublicationWithPublisherConverter());
|
||||
CsvConverters.register(new ReviewConverter());
|
||||
CsvConverters.register(new UnPublishedConverter());
|
||||
CsvConverters.register(new WorkingPaperConverter());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.InternetArticle;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class InternetArticleConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof InternetArticle)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The InternetArticleConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type InternetArticle or which are extending "
|
||||
+ "InternetArticle. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type InternetArticle and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final InternetArticle article = (InternetArticle) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(PLACE, article.getPlace());
|
||||
values.put(NUMBER, article.getNumber());
|
||||
values.put(NUMBER_OF_PAGES, convertIntegerValue(article.getNumberOfPages()));
|
||||
values.put(EDITION, article.getEdition());
|
||||
values.put(ISSN, article.getISSN());
|
||||
values.put(LAST_ACCESS, convertDateValue(article.getLastAccessed()));
|
||||
values.put(PUBLICATION_DATE, convertDateValue(article.getPublicationDate()));
|
||||
values.put(URL, article.getUrl());
|
||||
values.put(URN, article.getUrn());
|
||||
values.put(DOI, article.getDoi());
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return InternetArticle.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Monograph;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class MonographConverter extends PublicationWithPublisherConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof Monograph)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The MonographConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type Monograph or which are extending "
|
||||
+ "Monograph. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type Monograph and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return Monograph.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Proceedings;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class ProceedingsConverter extends PublicationWithPublisherConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof Proceedings)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The ProceedingsConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type Proceedings or which are extending "
|
||||
+ "Proceedings. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type Proceedings and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
final Proceedings proceedings = (Proceedings) publication;
|
||||
|
||||
values.put(CONFERENCE, proceedings.getNameOfConference());
|
||||
values.put(CONFERENCE_PLACE, proceedings.getPlaceOfConference());
|
||||
values.put(CONFERENCE_DATE_FROM, convertDateValue(proceedings.getDateFromOfConference()));
|
||||
values.put(CONFERENCE_DATE_TO, convertDateValue(proceedings.getDateToOfConference()));
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return Proceedings.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.AuthorshipCollection;
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class PublicationConverter implements CsvConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (publication == null) {
|
||||
throw new IllegalArgumentException("Can't convert null values");
|
||||
}
|
||||
|
||||
final Map<CsvExporterConstants, String> values = new EnumMap<CsvExporterConstants, String>(
|
||||
CsvExporterConstants.class);
|
||||
|
||||
values.put(PUBLICATION_ID, publication.getID().toString());
|
||||
values.put(PUBLICATION_TYPE, publication.getClass().getName());
|
||||
values.put(TITLE, publication.getTitle());
|
||||
values.put(YEAR, convertIntegerValue(publication.getYearOfPublication()));
|
||||
values.put(YEAR_FIRST_PUBLISHED, convertIntegerValue(publication.getYearFirstPublished()));
|
||||
values.put(LANGUAGE_OF_PUBLICATION, publication.getLanguageOfPublication());
|
||||
values.put(REVIEWED, convertBooleanValue(publication.getReviewed()));
|
||||
|
||||
values.put(AUTHORS, convertAuthors(publication.getAuthors()));
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
protected String convertAuthors(final AuthorshipCollection authors) {
|
||||
final StringBuilder authorsCol = new StringBuilder();
|
||||
|
||||
while (authors.next()) {
|
||||
authorsCol.append(authors.getSurname());
|
||||
if (authors.getGivenName() != null) {
|
||||
authorsCol.append(", ");
|
||||
authorsCol.append(authors.getGivenName());
|
||||
}
|
||||
authorsCol.append(';');
|
||||
}
|
||||
|
||||
return authorsCol.toString();
|
||||
}
|
||||
|
||||
protected String convertIntegerValue(final Integer value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
} else {
|
||||
return value.toString();
|
||||
}
|
||||
}
|
||||
|
||||
protected String convertBooleanValue(final Boolean value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
} else {
|
||||
return value.toString();
|
||||
}
|
||||
}
|
||||
|
||||
protected String convertDateValue(final Date value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
} else {
|
||||
final Calendar calender = Calendar.getInstance();
|
||||
calender.setTime(value);
|
||||
|
||||
return String.format("%d-%d-%d", calender.get(Calendar.YEAR),
|
||||
calender.get(Calendar.MONTH),
|
||||
calender.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return Publication.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.PublicationWithPublisher;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class PublicationWithPublisherConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof PublicationWithPublisher)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The PublicationWithPublisherConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type PublicationWithPublisher or which are extending "
|
||||
+ "PublicationWithPublisher. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type PublicationWithPublisher and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final PublicationWithPublisher publicationWithPublisher
|
||||
= (PublicationWithPublisher) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(ISBN, publicationWithPublisher.getISBN());
|
||||
values.put(VOLUME, convertIntegerValue(publicationWithPublisher.getVolume()));
|
||||
values.put(NUMBER_OF_VOLUMES, convertIntegerValue(publicationWithPublisher.
|
||||
getNumberOfVolumes()));
|
||||
values.put(NUMBER_OF_PAGES, convertIntegerValue(
|
||||
publicationWithPublisher.getNumberOfPages()));
|
||||
values.put(EDITION, publicationWithPublisher.getEdition());
|
||||
if (publicationWithPublisher.getPublisher() != null) {
|
||||
values.put(PLACE, publicationWithPublisher.getPublisher().getPlace());
|
||||
values.put(PUBLISHER, publicationWithPublisher.getPublisher().getPublisherName());
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return PublicationWithPublisher.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.Review;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class ReviewConverter extends ArticleInJournalConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof Review)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The ReviewConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type Review or which are extending "
|
||||
+ "Review. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type Review and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
return super.convert(publication);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return Review.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.UnPublished;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.arsdigita.cms.scipublications.exporter.csv.CsvExporterConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class UnPublishedConverter extends PublicationConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof UnPublished)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The UnPublishedConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type UnPublished or which are extending "
|
||||
+ "UnPublished. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type UnPublished and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
final UnPublished unPublished = (UnPublished) publication;
|
||||
|
||||
final Map<CsvExporterConstants, String> values = super.convert(publication);
|
||||
|
||||
values.put(PLACE, unPublished.getPlace());
|
||||
values.put(NUMBER, unPublished.getNumber());
|
||||
values.put(NUMBER_OF_PAGES, convertIntegerValue(unPublished.getNumberOfPages()));
|
||||
|
||||
if (unPublished.getOrganization() != null) {
|
||||
values.put(ORGANISATION, unPublished.getOrganization().getTitle());
|
||||
}
|
||||
|
||||
return values;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return UnPublished.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class UnsupportedCcmTypeException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Creates a new instance of <code>UnsupportedCcmType</code> without detail message.
|
||||
*/
|
||||
public UnsupportedCcmTypeException() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs an instance of <code>UnsupportedCcmType</code> with the specified detail message.
|
||||
* @param msg the detail message.
|
||||
*/
|
||||
public UnsupportedCcmTypeException(final String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
public UnsupportedCcmTypeException(final Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public UnsupportedCcmTypeException(final String msg, Throwable cause) {
|
||||
super(msg, cause);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright (c) 2014 Jens Pelzetter
|
||||
*
|
||||
* This library is free software, you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation, either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library, if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.scipublications.exporter.csv;
|
||||
|
||||
import com.arsdigita.cms.contenttypes.Publication;
|
||||
import com.arsdigita.cms.contenttypes.WorkingPaper;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class WorkingPaperConverter extends UnPublishedConverter {
|
||||
|
||||
@Override
|
||||
public Map<CsvExporterConstants, String> convert(final Publication publication) {
|
||||
|
||||
if (!(publication instanceof WorkingPaper)) {
|
||||
throw new UnsupportedCcmTypeException(
|
||||
String.format("The WorkingPaperConverter only "
|
||||
+ "supports publication types which are of the"
|
||||
+ "type WorkingPaper or which are extending "
|
||||
+ "WorkingPaper. The "
|
||||
+ "provided publication is of type '%s' which "
|
||||
+ "is not of type WorkingPaper and does not "
|
||||
+ "extends PubliccationWithPublisher.",
|
||||
publication.getClass().getName()));
|
||||
}
|
||||
|
||||
return super.convert(publication);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCCMType() {
|
||||
return WorkingPaper.class.getName();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue