/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.sword2; import org.dspace.content.Item; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.swordapp.server.AtomStatement; import org.swordapp.server.Statement; import org.swordapp.server.SwordError; import org.swordapp.server.SwordServerException; import java.util.List; public class AtomStatementDisseminator extends GenericStatementDisseminator implements SwordStatementDisseminator { protected ItemService itemService = ContentServiceFactory.getInstance() .getItemService(); public Statement disseminate(Context context, Item item) throws DSpaceSwordException, SwordError, SwordServerException { SwordUrlManager urlManager = new SwordUrlManager( new SwordConfigurationDSpace(), context); String feedUri = urlManager.getAtomStatementUri(item); String authorField = ConfigurationManager .getProperty("swordv2-server", "author.field"); String titleField = ConfigurationManager .getProperty("swordv2-server", "title.field"); String updatedField = ConfigurationManager .getProperty("swordv2-server", "updated.field"); String author = this.stringMetadata(item, authorField); String title = this.stringMetadata(item, titleField); String updated = this.stringMetadata(item, updatedField); Statement s = new AtomStatement(feedUri, author, title, updated); this.populateStatement(context, item, s); return s; } private String stringMetadata(Item item, String field) { if (field == null) { return null; } List<MetadataValue> dcvs = itemService .getMetadataByMetadataString(item, field); if (dcvs == null || dcvs.isEmpty()) { return null; } StringBuilder md = new StringBuilder(); for (MetadataValue dcv : dcvs) { if (md.length() > 0) { md.append(", "); } md.append(dcv.getValue()); } return md.toString(); } }