dnet-hadoop/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/dump/QueryInformationSystem.java

64 lines
1.6 KiB
Java
Raw Normal View History

package eu.dnetlib.dhp.oa.graph.dump.community;
2020-06-15 11:12:14 +02:00
import java.io.StringReader;
import java.util.List;
import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap;
2020-06-11 12:59:22 +02:00
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
2020-06-15 11:12:14 +02:00
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
public class QueryInformationSystem {
2020-06-11 12:59:22 +02:00
private ISLookUpService isLookUp;
2020-06-15 11:12:14 +02:00
private static final String XQUERY = "for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') "
+
" where $x//CONFIGURATION/context[./@type='community' or ./@type='ri'] " +
2020-07-08 10:29:37 +02:00
" and ($x//context/param[./@name = 'status']/text() = 'manager' or $x//context/param[./@name = 'status']/text() = 'all') "
+
2020-06-15 11:12:14 +02:00
" return " +
"<community> " +
"{$x//CONFIGURATION/context/@id}" +
"{$x//CONFIGURATION/context/@label}" +
"</community>";
2020-06-15 11:12:14 +02:00
public CommunityMap getCommunityMap()
2020-06-11 10:49:01 +02:00
throws ISLookUpException {
2020-06-11 12:59:22 +02:00
return getMap(isLookUp.quickSearchProfile(XQUERY));
}
2020-06-11 12:59:22 +02:00
public ISLookUpService getIsLookUp() {
return isLookUp;
}
2020-06-11 12:59:22 +02:00
public void setIsLookUp(ISLookUpService isLookUpService) {
this.isLookUp = isLookUpService;
}
2020-06-19 17:39:46 +02:00
private CommunityMap getMap(List<String> communityMap) {
2020-06-15 11:12:14 +02:00
final CommunityMap map = new CommunityMap();
2020-06-11 12:59:22 +02:00
communityMap.stream().forEach(xml -> {
final Document doc;
try {
doc = new SAXReader().read(new StringReader(xml));
Element root = doc.getRootElement();
map.put(root.attribute("id").getValue(), root.attribute("label").getValue());
} catch (DocumentException e) {
e.printStackTrace();
}
2020-06-11 12:59:22 +02:00
});
2020-06-11 12:59:22 +02:00
return map;
}
}