/**
* 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.DCValue;
import org.dspace.content.Item;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.swordapp.server.DepositReceipt;
import org.swordapp.server.SwordError;
import org.swordapp.server.SwordServerException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class SimpleDCEntryDisseminator implements SwordEntryDisseminator
{
private Map<String, String> dcMap;
public SimpleDCEntryDisseminator()
{
// we should load our DC map from configuration
this.dcMap = new HashMap<String, String>();
Properties props = ConfigurationManager.getProperties();
for (Object key : props.keySet())
{
String keyString = (String) key;
if (keyString.startsWith("sword2.simpledc."))
{
String k = keyString.substring("sword2.simpledc.".length());
String v = (String) props.get(key);
this.dcMap.put(k, v);
}
}
}
public DepositReceipt disseminate(Context context, Item item, DepositReceipt receipt)
throws DSpaceSwordException, SwordError, SwordServerException
{
DCValue[] all = item.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
for (DCValue dcv : all)
{
String valueMatch = dcv.schema + "." + dcv.element;
if (dcv.qualifier != null)
{
valueMatch += "." + dcv.qualifier;
}
for (String key : this.dcMap.keySet())
{
String value = this.dcMap.get(key);
if (valueMatch.equals(value))
{
receipt.addDublinCore(key, dcv.value);
if (key.equals("title"))
{
receipt.getWrappedEntry().setTitle(dcv.value);
}
if (key.equals("abstract"))
{
receipt.getWrappedEntry().setSummary(dcv.value);
}
}
}
}
return receipt;
}
}