/** * 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.data; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.solr.common.SolrDocument; import com.lyncode.xoai.dataprovider.core.ItemMetadata; import com.lyncode.xoai.dataprovider.core.ReferenceSet; import java.util.Collection; /** * * @author Lyncode Development Team (dspace at lyncode dot com) */ public class DSpaceSolrItem extends DSpaceItem { private static final Logger log = LogManager .getLogger(DSpaceSolrItem.class); private final String unparsedMD; private ItemMetadata metadata; private final String handle; private final Date lastMod; private final List<ReferenceSet> sets; private final boolean deleted; public DSpaceSolrItem (SolrDocument doc) { log.debug("Creating OAI Item from Solr source"); unparsedMD = (String) doc.getFieldValue("item.compile"); handle = (String) doc.getFieldValue("item.handle"); lastMod = (Date) doc.getFieldValue("item.lastmodified"); sets = new ArrayList<>(); Collection<Object> fieldValues; fieldValues = doc.getFieldValues("item.communities"); if (null != fieldValues) for (Object obj : fieldValues) sets.add(new ReferenceSet((String) obj)); fieldValues = doc.getFieldValues("item.collections"); if (null != fieldValues) for (Object obj : fieldValues) sets.add(new ReferenceSet((String) obj)); deleted = (Boolean) doc.getFieldValue("item.deleted"); } @Override public ItemMetadata getMetadata() { if (metadata == null) { metadata = new ItemMetadata(unparsedMD); } return metadata; } @Override public Date getDatestamp() { return lastMod; } @Override public List<ReferenceSet> getSets() { return sets; } @Override public boolean isDeleted() { return deleted; } @Override protected String getHandle() { return handle; } }