package eu.dnetlib.dhp.bulktag.community; import java.util.List; import org.dom4j.DocumentException; import org.xml.sax.SAXException; import com.google.common.base.Joiner; import eu.dnetlib.dhp.utils.ISLookupClientFactory; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; public class QueryInformationSystem { private static final String XQUERY = "for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') " + " let $subj := $x//CONFIGURATION/context/param[./@name='subject']/text() " + " let $datasources := $x//CONFIGURATION/context/category[./@id=concat($x//CONFIGURATION/context/@id,'::contentproviders')]/concept " + " let $organizations := $x//CONFIGURATION/context/category[./@id=concat($x//CONFIGURATION/context/@id,'::resultorganizations')]/concept " + " let $communities := $x//CONFIGURATION/context/category[./@id=concat($x//CONFIGURATION/context/@id,'::zenodocommunities')]/concept " + " let $fos := $x//CONFIGURATION/context/param[./@name='fos']/text() " + " let $sdg := $x//CONFIGURATION/context/param[./@name='sdg']/text() " + "let $zenodo := $x//param[./@name='zenodoCommunity']/text() " + " where $x//CONFIGURATION/context[./@type='community' or ./@type='ri'] and $x//context/param[./@name = 'status']/text() != 'hidden' " + " return " + " " + " { $x//CONFIGURATION/context/@id} " + " " + " {for $y in tokenize($subj,',') " + " return " + " {$y}} " + " {for $y in tokenize($fos,',') " + " return " + " {$y}} " + " {for $y in tokenize($sdg,',') " + " return " + " {$y}} " + " " + " " + " {for $d in $datasources " + " where $d/param[./@name='enabled']/text()='true' " + " return " + " " + " " + " {$d//param[./@name='openaireId']/text()} " + " " + " " + " {$d/param[./@name='selcriteria']/text()} " + " " + " } " + " " + " " + "{for $zc in $zenodo " + "return " + " " + " " + "{$zc} " + " " + "}" + " {for $zc in $communities " + " return " + " " + " " + " {$zc/param[./@name='zenodoid']/text()} " + " " + " " + " {$zc/param[./@name='selcriteria']/text()} " + " " + " } " + " " + "" + "{$x//CONFIGURATION/context/param[./@name='advancedConstraint']/text()} " + "" + " "; public static CommunityConfiguration getCommunityConfiguration(final String isLookupUrl) throws ISLookUpException, DocumentException, SAXException { ISLookUpService isLookUp = ISLookupClientFactory.getLookUpService(isLookupUrl); final List res = isLookUp.quickSearchProfile(XQUERY); final String xmlConf = "" + Joiner.on(" ").join(res) + ""; return CommunityConfigurationFactory.newInstance(xmlConf); } }