1
0
Fork 0

Fixed ticket 6282

This commit is contained in:
Sandro La Bruzzo 2021-03-11 10:32:45 +01:00
parent f74e464942
commit f5e7c57654
2 changed files with 46 additions and 3 deletions

View File

@ -18,6 +18,9 @@ public class ModelConstants {
public static final String PUBMED_CENTRAL_ID = "10|opendoar____::eda80a3d5b344bc40f3bc04f65b7a357";
public static final String ARXIV_ID = "10|opendoar____::6f4922f45568161a8cdf4ad2299f6d23";
//VOCABULARY VALUE
public static final String ACCESS_RIGHT_OPEN = "OPEN";
public static final String DNET_SUBJECT_TYPOLOGIES = "dnet:subject_classification_typologies";
public static final String DNET_RESULT_TYPOLOGIES = "dnet:result_typologies";
public static final String DNET_PUBLICATION_RESOURCE = "dnet:publication_resource";

View File

@ -1,7 +1,8 @@
package eu.dnetlib.doiboost.uw
import eu.dnetlib.dhp.schema.common.ModelConstants
import eu.dnetlib.dhp.schema.oaf.utils.IdentifierFactory
import eu.dnetlib.dhp.schema.oaf.{Instance, Publication}
import eu.dnetlib.dhp.schema.oaf.{AccessRight, Instance, OpenAccessRoute, Publication}
import org.json4s
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse
@ -21,6 +22,31 @@ case class OALocation(evidence:Option[String], host_type:Option[String], is_best
object UnpayWallToOAF {
val logger: Logger = LoggerFactory.getLogger(getClass)
def get_color(is_oa:Boolean, location: OALocation, journal_is_oa:Boolean):Option[OpenAccessRoute] = {
if (is_oa) {
if (location.host_type.isDefined) {
{
if (location.host_type.get.equalsIgnoreCase("repository"))
return Some(OpenAccessRoute.green)
else if (location.host_type.get.equalsIgnoreCase("publisher")) {
if (journal_is_oa)
return Some(OpenAccessRoute.gold)
else {
if (location.license.isDefined)
return Some(OpenAccessRoute.hybrid)
else
return Some(OpenAccessRoute.bronze)
}
}
}
}
}
None
}
def convertToOAF(input:String):Publication = {
val pub = new Publication
@ -32,13 +58,17 @@ object UnpayWallToOAF {
val is_oa = (json\ "is_oa").extract[Boolean]
val journal_is_oa= (json\ "journal_is_oa").extract[Boolean]
val oaLocation:OALocation = (json \ "best_oa_location").extractOrElse[OALocation](null)
val colour = get_color(is_oa, oaLocation, journal_is_oa)
pub.setPid(List(createSP(doi, "doi", PID_TYPES)).asJava)
//IMPORTANT
//The old method pub.setId(IdentifierFactory.createIdentifier(pub))
//will be replaced using IdentifierFactory
pub.setId(generateIdentifier(pub, doi.toLowerCase))
//pub.setId(generateIdentifier(pub, doi.toLowerCase))
pub.setId(IdentifierFactory.createIdentifier(pub))
@ -61,8 +91,18 @@ object UnpayWallToOAF {
if (oaLocation.license.isDefined)
i.setLicense(asField(oaLocation.license.get))
pub.setInstance(List(i).asJava)
// Ticket #6282 Adding open Access Colour
if (colour.isDefined) {
val a = new AccessRight
a.setClassid(ModelConstants.ACCESS_RIGHT_OPEN)
a.setClassname(ModelConstants.ACCESS_RIGHT_OPEN)
a.setSchemeid(ModelConstants.DNET_ACCESS_MODES)
a.setSchemename(ModelConstants.DNET_ACCESS_MODES)
a.setOpenAccessRoute(colour.get)
}
pub.setInstance(List(i).asJava)
pub
}