/** * 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; /** * * @author Lyncode Development Team <dspace@lyncode.com> */ public class DSpaceSolrItem extends DSpaceItem { private static Logger log = LogManager .getLogger(DSpaceSolrItem.class); private String unparsedMD; private ItemMetadata metadata; private String handle; private Date lastMod; private List<ReferenceSet> sets; private 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<ReferenceSet>(); for (Object obj : doc.getFieldValues("item.communities")) sets.add(new ReferenceSet((String) obj)); for (Object obj : doc.getFieldValues("item.collections")) 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; } }