/**
* 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.submit.lookup;
import java.util.LinkedList;
import java.util.List;
import gr.ekt.bte.core.MutableRecord;
import gr.ekt.bte.core.Record;
import gr.ekt.bte.core.StringValue;
import gr.ekt.bte.core.Value;
import org.dspace.app.util.XMLUtils;
import org.dspace.submit.util.SubmissionLookupPublication;
import org.w3c.dom.Element;
/**
*
* @author Andrea Bollini
* @author Kostas Stamatis
* @author Luigi Andrea Pascarelli
* @author Panagiotis Koutsourakis
*
*/
public class ArxivUtils
{
public static Record convertArxixDomToRecord(Element dataRoot)
{
MutableRecord record = new SubmissionLookupPublication("");
String articleTitle = XMLUtils.getElementValue(dataRoot, "title");
if (articleTitle != null)
record.addValue("title", new StringValue(articleTitle));
String summary = XMLUtils.getElementValue(dataRoot, "summary");
if (summary != null)
record.addValue("summary", new StringValue(summary));
String year = XMLUtils.getElementValue(dataRoot, "published");
if (year != null)
record.addValue("published", new StringValue(year));
String splashPageUrl = XMLUtils.getElementValue(dataRoot, "id");
if (splashPageUrl != null)
record.addValue("id", new StringValue(splashPageUrl));
String comment = XMLUtils.getElementValue(dataRoot, "arxiv:comment");
if (comment != null)
record.addValue("comment", new StringValue(comment));
List<Element> links = XMLUtils.getElementList(dataRoot, "link");
if (links != null)
{
for (Element link : links)
{
if ("related".equals(link.getAttribute("rel"))
&& "pdf".equals(link.getAttribute("title")))
{
String pdfUrl = link.getAttribute("href");
if (pdfUrl != null)
record.addValue("pdfUrl", new StringValue(pdfUrl));
}
}
}
String doi = XMLUtils.getElementValue(dataRoot, "arxiv:doi");
if (doi != null)
record.addValue("doi", new StringValue(doi));
String journalRef = XMLUtils.getElementValue(dataRoot,
"arxiv:journal_ref");
if (journalRef != null)
record.addValue("journalRef", new StringValue(journalRef));
List<String> primaryCategory = new LinkedList<String>();
List<Element> primaryCategoryList = XMLUtils.getElementList(dataRoot,
"arxiv:primary_category");
if (primaryCategoryList != null)
{
for (Element primaryCategoryElement : primaryCategoryList)
{
primaryCategory
.add(primaryCategoryElement.getAttribute("term"));
}
}
if (primaryCategory.size() > 0)
{
List<Value> values = new LinkedList<Value>();
for (String s : primaryCategory)
{
values.add(new StringValue(s));
}
record.addField("primaryCategory", values);
}
List<String> category = new LinkedList<String>();
List<Element> categoryList = XMLUtils.getElementList(dataRoot,
"category");
if (categoryList != null)
{
for (Element categoryElement : categoryList)
{
category.add(categoryElement.getAttribute("term"));
}
}
if (category.size() > 0)
{
List<Value> values = new LinkedList<Value>();
for (String s : category)
{
values.add(new StringValue(s));
}
record.addField("category", values);
}
List<String> authors = new LinkedList<String>();
List<String> authorsWithAffiliations = new LinkedList<String>();
List<Element> authorList = XMLUtils.getElementList(dataRoot, "author");
if (authorList != null)
{
for (Element authorElement : authorList)
{
String authorName = XMLUtils.getElementValue(authorElement, "name");
String authorAffiliation = XMLUtils.getElementValue(authorElement, "arxiv:affiliation");
authors.add(authorName);
authorsWithAffiliations.add(authorName +": " + authorAffiliation);
}
}
if (authors.size() > 0)
{
List<Value> values = new LinkedList<Value>();
for (String sArray : authors)
{
values.add(new StringValue(sArray));
}
record.addField("author", values);
}
if (authorsWithAffiliations.size() > 0)
{
List<Value> values = new LinkedList<Value>();
for (String sArray : authorsWithAffiliations)
{
values.add(new StringValue(sArray));
}
record.addField("authorWithAffiliation", values);
}
return record;
}
}