2022-07-20 11:38:40 +02:00
|
|
|
|
|
|
|
package eu.dnetlib.dhp.oa.graph.dump.complete;
|
|
|
|
|
|
|
|
import java.io.Serializable;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
|
|
|
import eu.dnetlib.dhp.oa.graph.dump.Constants;
|
|
|
|
import eu.dnetlib.dhp.oa.graph.dump.Utils;
|
|
|
|
import eu.dnetlib.dhp.oa.graph.dump.exceptions.MyRuntimeException;
|
2022-08-03 11:42:56 +02:00
|
|
|
import eu.dnetlib.dhp.oa.model.Provenance;
|
|
|
|
import eu.dnetlib.dhp.oa.model.graph.*;
|
2022-07-20 11:38:40 +02:00
|
|
|
import eu.dnetlib.dhp.schema.common.ModelConstants;
|
|
|
|
import eu.dnetlib.dhp.schema.common.ModelSupport;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* It process the ContextInfo information to produce a new Context Entity or a set of Relations between the generic
|
|
|
|
* context entity and datasource/projects related to the context.
|
|
|
|
*/
|
|
|
|
public class Process implements Serializable {
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public static <R extends ResearchInitiative> R getEntity(ContextInfo ci) {
|
|
|
|
try {
|
|
|
|
ResearchInitiative ri;
|
|
|
|
if (ci.getType().equals("community")) {
|
|
|
|
ri = new ResearchCommunity();
|
|
|
|
((ResearchCommunity) ri).setSubject(ci.getSubject());
|
|
|
|
ri.setType(Constants.RESEARCH_COMMUNITY);
|
|
|
|
} else {
|
|
|
|
ri = new ResearchInitiative();
|
|
|
|
ri.setType(Constants.RESEARCH_INFRASTRUCTURE);
|
|
|
|
}
|
|
|
|
ri.setId(Utils.getContextId(ci.getId()));
|
|
|
|
ri.setAcronym(ci.getId());
|
|
|
|
|
|
|
|
ri.setDescription(ci.getDescription());
|
|
|
|
ri.setName(ci.getName());
|
|
|
|
if (StringUtils.isNotEmpty(ci.getZenodocommunity())) {
|
|
|
|
ri.setZenodo_community(Constants.ZENODO_COMMUNITY_PREFIX + ci.getZenodocommunity());
|
|
|
|
}
|
|
|
|
return (R) ri;
|
|
|
|
|
|
|
|
} catch (final Exception e) {
|
|
|
|
throw new MyRuntimeException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static List<Relation> getRelation(ContextInfo ci) {
|
|
|
|
try {
|
|
|
|
|
|
|
|
List<Relation> relationList = new ArrayList<>();
|
|
|
|
ci
|
|
|
|
.getDatasourceList()
|
|
|
|
.forEach(ds -> {
|
|
|
|
String nodeType = ModelSupport.idPrefixEntity.get(ds.substring(0, 2));
|
2023-08-04 16:22:23 +02:00
|
|
|
String datasourceId = ds;
|
|
|
|
if (ds.startsWith("10|") || ds.startsWith("40|"))
|
|
|
|
datasourceId = ds.substring(3);
|
2022-07-20 11:38:40 +02:00
|
|
|
|
|
|
|
String contextId = Utils.getContextId(ci.getId());
|
|
|
|
relationList
|
|
|
|
.add(
|
|
|
|
Relation
|
|
|
|
.newInstance(
|
2023-06-01 12:58:56 +02:00
|
|
|
contextId, eu.dnetlib.dhp.oa.model.graph.Constants.CONTEXT_ENTITY,
|
2023-07-28 10:26:22 +02:00
|
|
|
datasourceId, nodeType,
|
2022-07-20 11:38:40 +02:00
|
|
|
RelType.newInstance(ModelConstants.IS_RELATED_TO, ModelConstants.RELATIONSHIP),
|
|
|
|
Provenance
|
|
|
|
.newInstance(
|
|
|
|
Constants.USER_CLAIM,
|
|
|
|
Constants.DEFAULT_TRUST)));
|
|
|
|
|
|
|
|
relationList
|
|
|
|
.add(
|
|
|
|
Relation
|
|
|
|
.newInstance(
|
2023-07-28 10:26:22 +02:00
|
|
|
datasourceId, nodeType,
|
2023-06-01 12:58:56 +02:00
|
|
|
contextId, eu.dnetlib.dhp.oa.model.graph.Constants.CONTEXT_ENTITY,
|
2022-07-20 11:38:40 +02:00
|
|
|
RelType.newInstance(ModelConstants.IS_RELATED_TO, ModelConstants.RELATIONSHIP),
|
|
|
|
Provenance
|
|
|
|
.newInstance(
|
|
|
|
Constants.USER_CLAIM,
|
|
|
|
Constants.DEFAULT_TRUST)));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
return relationList;
|
|
|
|
|
|
|
|
} catch (final Exception e) {
|
|
|
|
throw new MyRuntimeException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|