All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dspace.xoai.app.plugins.AccessStatusElementItemCompilePlugin Maven / Gradle / Ivy

The newest version!
/**
 * 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.xoai.app.plugins;

import java.sql.SQLException;
import java.util.List;

import com.lyncode.xoai.dataprovider.xml.xoai.Element;
import com.lyncode.xoai.dataprovider.xml.xoai.Metadata;
import org.apache.commons.lang3.StringUtils;
import org.dspace.access.status.factory.AccessStatusServiceFactory;
import org.dspace.access.status.service.AccessStatusService;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.xoai.app.XOAIExtensionItemCompilePlugin;
import org.dspace.xoai.util.ItemUtils;

/**
 * AccessStatusElementItemCompilePlugin aims to add structured information about the
 * Access Status of the item (if any).

 * The xoai document will be enriched with a structure like that
 * 
 * {@code
 *   
 *       
 *          open.access
 *       
 *   
 *   OR
 *   
 *       
 *          embargo
 *          2024-10-10
 *       
 *   
 * }
 * 
* Returning Values are based on: * @see org.dspace.access.status.DefaultAccessStatusHelper DefaultAccessStatusHelper */ public class AccessStatusElementItemCompilePlugin implements XOAIExtensionItemCompilePlugin { @Override public Metadata additionalMetadata(Context context, Metadata metadata, Item item) { AccessStatusService accessStatusService = AccessStatusServiceFactory.getInstance().getAccessStatusService(); try { String accessStatusType; accessStatusType = accessStatusService.getAccessStatus(context, item); String embargoFromItem = accessStatusService.getEmbargoFromItem(context, item); Element accessStatus = ItemUtils.create("access-status"); accessStatus.getField().add(ItemUtils.createValue("value", accessStatusType)); if (StringUtils.isNotEmpty(embargoFromItem)) { accessStatus.getField().add(ItemUtils.createValue("embargo", embargoFromItem)); } Element others; List elements = metadata.getElement(); if (ItemUtils.getElement(elements, "others") != null) { others = ItemUtils.getElement(elements, "others"); } else { others = ItemUtils.create("others"); } others.getElement().add(accessStatus); } catch (SQLException e) { e.printStackTrace(); } return metadata; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy