forked from D-Net/dnet-hadoop
Merge pull request 'participant project contribution' (#223) from project_organization_contribution into beta
Reviewed-on: D-Net/dnet-hadoop#223
This commit is contained in:
commit
37cfda0fc5
|
@ -419,4 +419,62 @@ public class OafMapperUtils {
|
||||||
m.setUnit(Arrays.asList(newKeyValueInstance(key, value, dataInfo)));
|
m.setUnit(Arrays.asList(newKeyValueInstance(key, value, dataInfo)));
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Relation getRelation(final String source,
|
||||||
|
final String target,
|
||||||
|
final String relType,
|
||||||
|
final String subRelType,
|
||||||
|
final String relClass,
|
||||||
|
final OafEntity entity) {
|
||||||
|
return getRelation(source, target, relType, subRelType, relClass, entity, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Relation getRelation(final String source,
|
||||||
|
final String target,
|
||||||
|
final String relType,
|
||||||
|
final String subRelType,
|
||||||
|
final String relClass,
|
||||||
|
final OafEntity entity,
|
||||||
|
final String validationDate) {
|
||||||
|
return getRelation(
|
||||||
|
source, target, relType, subRelType, relClass, entity.getCollectedfrom(), entity.getDataInfo(),
|
||||||
|
entity.getLastupdatetimestamp(), validationDate, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Relation getRelation(final String source,
|
||||||
|
final String target,
|
||||||
|
final String relType,
|
||||||
|
final String subRelType,
|
||||||
|
final String relClass,
|
||||||
|
final List<KeyValue> collectedfrom,
|
||||||
|
final DataInfo dataInfo,
|
||||||
|
final Long lastupdatetimestamp) {
|
||||||
|
return getRelation(
|
||||||
|
source, target, relType, subRelType, relClass, collectedfrom, dataInfo, lastupdatetimestamp, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Relation getRelation(final String source,
|
||||||
|
final String target,
|
||||||
|
final String relType,
|
||||||
|
final String subRelType,
|
||||||
|
final String relClass,
|
||||||
|
final List<KeyValue> collectedfrom,
|
||||||
|
final DataInfo dataInfo,
|
||||||
|
final Long lastupdatetimestamp,
|
||||||
|
final String validationDate,
|
||||||
|
final List<KeyValue> properties) {
|
||||||
|
final Relation rel = new Relation();
|
||||||
|
rel.setRelType(relType);
|
||||||
|
rel.setSubRelType(subRelType);
|
||||||
|
rel.setRelClass(relClass);
|
||||||
|
rel.setSource(source);
|
||||||
|
rel.setTarget(target);
|
||||||
|
rel.setCollectedfrom(collectedfrom);
|
||||||
|
rel.setDataInfo(dataInfo);
|
||||||
|
rel.setLastupdatetimestamp(lastupdatetimestamp);
|
||||||
|
rel.setValidated(StringUtils.isNotBlank(validationDate));
|
||||||
|
rel.setValidationDate(StringUtils.isNotBlank(validationDate) ? validationDate : null);
|
||||||
|
rel.setProperties(properties);
|
||||||
|
return rel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,10 +267,13 @@ public abstract class AbstractMdRecordToOafMapper {
|
||||||
|
|
||||||
res
|
res
|
||||||
.add(
|
.add(
|
||||||
getRelation(
|
OafMapperUtils
|
||||||
|
.getRelation(
|
||||||
docId, projectId, RESULT_PROJECT, OUTCOME, IS_PRODUCED_BY, entity, validationdDate));
|
docId, projectId, RESULT_PROJECT, OUTCOME, IS_PRODUCED_BY, entity, validationdDate));
|
||||||
res
|
res
|
||||||
.add(getRelation(projectId, docId, RESULT_PROJECT, OUTCOME, PRODUCES, entity, validationdDate));
|
.add(
|
||||||
|
OafMapperUtils
|
||||||
|
.getRelation(projectId, docId, RESULT_PROJECT, OUTCOME, PRODUCES, entity, validationdDate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,11 +306,14 @@ public abstract class AbstractMdRecordToOafMapper {
|
||||||
final String targetId = createOpenaireId(targetType, target, true);
|
final String targetId = createOpenaireId(targetType, target, true);
|
||||||
rels
|
rels
|
||||||
.add(
|
.add(
|
||||||
getRelation(
|
OafMapperUtils
|
||||||
entity.getId(), targetId, relType, subRelType, relClass, entity, validationdDate));
|
.getRelation(
|
||||||
|
entity.getId(), targetId, relType, subRelType, relClass, entity,
|
||||||
|
validationdDate));
|
||||||
rels
|
rels
|
||||||
.add(
|
.add(
|
||||||
getRelation(
|
OafMapperUtils
|
||||||
|
.getRelation(
|
||||||
targetId, entity.getId(), relType, subRelType, relClassInverse, entity,
|
targetId, entity.getId(), relType, subRelType, relClassInverse, entity,
|
||||||
validationdDate));
|
validationdDate));
|
||||||
}
|
}
|
||||||
|
@ -317,36 +323,6 @@ public abstract class AbstractMdRecordToOafMapper {
|
||||||
return rels;
|
return rels;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Relation getRelation(final String source,
|
|
||||||
final String target,
|
|
||||||
final String relType,
|
|
||||||
final String subRelType,
|
|
||||||
final String relClass,
|
|
||||||
final OafEntity entity) {
|
|
||||||
return getRelation(source, target, relType, subRelType, relClass, entity, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Relation getRelation(final String source,
|
|
||||||
final String target,
|
|
||||||
final String relType,
|
|
||||||
final String subRelType,
|
|
||||||
final String relClass,
|
|
||||||
final OafEntity entity,
|
|
||||||
final String validationDate) {
|
|
||||||
final Relation rel = new Relation();
|
|
||||||
rel.setRelType(relType);
|
|
||||||
rel.setSubRelType(subRelType);
|
|
||||||
rel.setRelClass(relClass);
|
|
||||||
rel.setSource(source);
|
|
||||||
rel.setTarget(target);
|
|
||||||
rel.setCollectedfrom(entity.getCollectedfrom());
|
|
||||||
rel.setDataInfo(entity.getDataInfo());
|
|
||||||
rel.setLastupdatetimestamp(entity.getLastupdatetimestamp());
|
|
||||||
rel.setValidated(StringUtils.isNotBlank(validationDate));
|
|
||||||
rel.setValidationDate(StringUtils.isNotBlank(validationDate) ? validationDate : null);
|
|
||||||
return rel;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract List<Oaf> addOtherResultRels(
|
protected abstract List<Oaf> addOtherResultRels(
|
||||||
final Document doc,
|
final Document doc,
|
||||||
final OafEntity entity);
|
final OafEntity entity);
|
||||||
|
|
|
@ -1,32 +1,7 @@
|
||||||
|
|
||||||
package eu.dnetlib.dhp.oa.graph.raw;
|
package eu.dnetlib.dhp.oa.graph.raw;
|
||||||
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.DATASET_DEFAULT_RESULTTYPE;
|
import static eu.dnetlib.dhp.schema.common.ModelConstants.*;
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.DATASOURCE_ORGANIZATION;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.DNET_PROVENANCE_ACTIONS;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.ENTITYREGISTRY_PROVENANCE_ACTION;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.HAS_PARTICIPANT;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.IS_MERGED_IN;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.IS_PARTICIPANT;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.IS_PRODUCED_BY;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.IS_PROVIDED_BY;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.IS_RELATED_TO;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.MERGES;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.ORG_ORG_RELTYPE;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.ORP_DEFAULT_RESULTTYPE;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.OUTCOME;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PARTICIPATION;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PRODUCES;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PROJECT_ORGANIZATION;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PROVIDES;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PROVISION;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PUBLICATION_DATASET;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.PUBLICATION_DEFAULT_RESULTTYPE;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.RELATIONSHIP;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.RESULT_PROJECT;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.RESULT_RESULT;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.SOFTWARE_DEFAULT_RESULTTYPE;
|
|
||||||
import static eu.dnetlib.dhp.schema.common.ModelConstants.USER_CLAIM;
|
|
||||||
import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.*;
|
import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.*;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
|
@ -45,6 +20,8 @@ import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import eu.dnetlib.dhp.application.ArgumentApplicationParser;
|
import eu.dnetlib.dhp.application.ArgumentApplicationParser;
|
||||||
import eu.dnetlib.dhp.common.DbClient;
|
import eu.dnetlib.dhp.common.DbClient;
|
||||||
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
|
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
|
||||||
|
@ -68,6 +45,7 @@ import eu.dnetlib.dhp.schema.oaf.Relation;
|
||||||
import eu.dnetlib.dhp.schema.oaf.Result;
|
import eu.dnetlib.dhp.schema.oaf.Result;
|
||||||
import eu.dnetlib.dhp.schema.oaf.Software;
|
import eu.dnetlib.dhp.schema.oaf.Software;
|
||||||
import eu.dnetlib.dhp.schema.oaf.StructuredProperty;
|
import eu.dnetlib.dhp.schema.oaf.StructuredProperty;
|
||||||
|
import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils;
|
||||||
import eu.dnetlib.dhp.utils.ISLookupClientFactory;
|
import eu.dnetlib.dhp.utils.ISLookupClientFactory;
|
||||||
|
|
||||||
public class MigrateDbEntitiesApplication extends AbstractMigrationApplication implements Closeable {
|
public class MigrateDbEntitiesApplication extends AbstractMigrationApplication implements Closeable {
|
||||||
|
@ -437,25 +415,14 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i
|
||||||
final List<KeyValue> collectedFrom = listKeyValues(
|
final List<KeyValue> collectedFrom = listKeyValues(
|
||||||
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
||||||
|
|
||||||
final Relation r1 = new Relation();
|
final Relation r1 = OafMapperUtils
|
||||||
r1.setRelType(DATASOURCE_ORGANIZATION);
|
.getRelation(
|
||||||
r1.setSubRelType(PROVISION);
|
dsId, orgId, DATASOURCE_ORGANIZATION, PRODUCES, IS_PROVIDED_BY, collectedFrom, info,
|
||||||
r1.setRelClass(IS_PROVIDED_BY);
|
lastUpdateTimestamp);
|
||||||
r1.setSource(dsId);
|
|
||||||
r1.setTarget(orgId);
|
|
||||||
r1.setCollectedfrom(collectedFrom);
|
|
||||||
r1.setDataInfo(info);
|
|
||||||
r1.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
|
|
||||||
final Relation r2 = new Relation();
|
final Relation r2 = OafMapperUtils
|
||||||
r2.setRelType(DATASOURCE_ORGANIZATION);
|
.getRelation(
|
||||||
r2.setSubRelType(PROVISION);
|
orgId, dsId, DATASOURCE_ORGANIZATION, PRODUCES, PROVIDES, collectedFrom, info, lastUpdateTimestamp);
|
||||||
r2.setRelClass(PROVIDES);
|
|
||||||
r2.setSource(orgId);
|
|
||||||
r2.setTarget(dsId);
|
|
||||||
r2.setCollectedfrom(collectedFrom);
|
|
||||||
r2.setDataInfo(info);
|
|
||||||
r2.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
|
|
||||||
return Arrays.asList(r1, r2);
|
return Arrays.asList(r1, r2);
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
|
@ -471,25 +438,20 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i
|
||||||
final List<KeyValue> collectedFrom = listKeyValues(
|
final List<KeyValue> collectedFrom = listKeyValues(
|
||||||
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
||||||
|
|
||||||
final Relation r1 = new Relation();
|
final List<KeyValue> properties = Lists
|
||||||
r1.setRelType(PROJECT_ORGANIZATION);
|
.newArrayList(
|
||||||
r1.setSubRelType(PARTICIPATION);
|
keyValue("contribution", String.valueOf(rs.getDouble("contribution"))),
|
||||||
r1.setRelClass(HAS_PARTICIPANT);
|
keyValue("currency", rs.getString("currency")));
|
||||||
r1.setSource(projectId);
|
|
||||||
r1.setTarget(orgId);
|
|
||||||
r1.setCollectedfrom(collectedFrom);
|
|
||||||
r1.setDataInfo(info);
|
|
||||||
r1.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
|
|
||||||
final Relation r2 = new Relation();
|
final Relation r1 = OafMapperUtils
|
||||||
r2.setRelType(PROJECT_ORGANIZATION);
|
.getRelation(
|
||||||
r2.setSubRelType(PARTICIPATION);
|
projectId, orgId, PROJECT_ORGANIZATION, PARTICIPATION, HAS_PARTICIPANT, collectedFrom, info,
|
||||||
r2.setRelClass(IS_PARTICIPANT);
|
lastUpdateTimestamp, null, properties);
|
||||||
r2.setSource(orgId);
|
|
||||||
r2.setTarget(projectId);
|
final Relation r2 = OafMapperUtils
|
||||||
r2.setCollectedfrom(collectedFrom);
|
.getRelation(
|
||||||
r2.setDataInfo(info);
|
orgId, projectId, PROJECT_ORGANIZATION, PARTICIPATION, IS_PARTICIPANT, collectedFrom, info,
|
||||||
r2.setLastupdatetimestamp(lastUpdateTimestamp);
|
lastUpdateTimestamp, null, properties);
|
||||||
|
|
||||||
return Arrays.asList(r1, r2);
|
return Arrays.asList(r1, r2);
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
|
@ -703,25 +665,12 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i
|
||||||
final List<KeyValue> collectedFrom = listKeyValues(
|
final List<KeyValue> collectedFrom = listKeyValues(
|
||||||
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
||||||
|
|
||||||
final Relation r1 = new Relation();
|
final Relation r1 = OafMapperUtils
|
||||||
r1.setRelType(ORG_ORG_RELTYPE);
|
.getRelation(orgId1, orgId2, ORG_ORG_RELTYPE, DEDUP, MERGES, collectedFrom, info, lastUpdateTimestamp);
|
||||||
r1.setSubRelType(ModelConstants.DEDUP);
|
|
||||||
r1.setRelClass(MERGES);
|
|
||||||
r1.setSource(orgId1);
|
|
||||||
r1.setTarget(orgId2);
|
|
||||||
r1.setCollectedfrom(collectedFrom);
|
|
||||||
r1.setDataInfo(info);
|
|
||||||
r1.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
|
|
||||||
final Relation r2 = new Relation();
|
final Relation r2 = OafMapperUtils
|
||||||
r2.setRelType(ORG_ORG_RELTYPE);
|
.getRelation(
|
||||||
r2.setSubRelType(ModelConstants.DEDUP);
|
orgId2, orgId1, ORG_ORG_RELTYPE, DEDUP, IS_MERGED_IN, collectedFrom, info, lastUpdateTimestamp);
|
||||||
r2.setRelClass(IS_MERGED_IN);
|
|
||||||
r2.setSource(orgId2);
|
|
||||||
r2.setTarget(orgId1);
|
|
||||||
r2.setCollectedfrom(collectedFrom);
|
|
||||||
r2.setDataInfo(info);
|
|
||||||
r2.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
return Arrays.asList(r1, r2);
|
return Arrays.asList(r1, r2);
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
@ -738,17 +687,12 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i
|
||||||
final List<KeyValue> collectedFrom = listKeyValues(
|
final List<KeyValue> collectedFrom = listKeyValues(
|
||||||
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
||||||
|
|
||||||
final Relation r = new Relation();
|
return Arrays
|
||||||
r.setRelType(ORG_ORG_RELTYPE);
|
.asList(
|
||||||
r.setSubRelType(ModelConstants.RELATIONSHIP);
|
OafMapperUtils
|
||||||
r.setRelClass(rs.getString("type"));
|
.getRelation(
|
||||||
r.setSource(orgId1);
|
orgId1, orgId2, ORG_ORG_RELTYPE, RELATIONSHIP, rs.getString("type"), collectedFrom, info,
|
||||||
r.setTarget(orgId2);
|
lastUpdateTimestamp));
|
||||||
r.setCollectedfrom(collectedFrom);
|
|
||||||
r.setDataInfo(info);
|
|
||||||
r.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
|
|
||||||
return Arrays.asList(r);
|
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -765,29 +709,12 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i
|
||||||
final List<KeyValue> collectedFrom = listKeyValues(
|
final List<KeyValue> collectedFrom = listKeyValues(
|
||||||
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname"));
|
||||||
|
|
||||||
final Relation r1 = new Relation();
|
return Arrays
|
||||||
r1.setRelType(ORG_ORG_RELTYPE);
|
.asList(
|
||||||
r1.setSubRelType(ModelConstants.DEDUP);
|
OafMapperUtils
|
||||||
r1.setRelClass(relClass);
|
.getRelation(
|
||||||
r1.setSource(orgId1);
|
orgId1, orgId2, ORG_ORG_RELTYPE, DEDUP, relClass, collectedFrom, info,
|
||||||
r1.setTarget(orgId2);
|
lastUpdateTimestamp));
|
||||||
r1.setCollectedfrom(collectedFrom);
|
|
||||||
r1.setDataInfo(info);
|
|
||||||
r1.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
|
|
||||||
// removed because there's no difference between two sides //TODO
|
|
||||||
// final Relation r2 = new Relation();
|
|
||||||
// r2.setRelType(ORG_ORG_RELTYPE);
|
|
||||||
// r2.setSubRelType(ORG_ORG_SUBRELTYPE);
|
|
||||||
// r2.setRelClass(relClass);
|
|
||||||
// r2.setSource(orgId2);
|
|
||||||
// r2.setTarget(orgId1);
|
|
||||||
// r2.setCollectedfrom(collectedFrom);
|
|
||||||
// r2.setDataInfo(info);
|
|
||||||
// r2.setLastupdatetimestamp(lastUpdateTimestamp);
|
|
||||||
// return Arrays.asList(r1, r2);
|
|
||||||
|
|
||||||
return Arrays.asList(r1);
|
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ SELECT
|
||||||
po.resporganization AS resporganization,
|
po.resporganization AS resporganization,
|
||||||
po.participantnumber AS participantnumber,
|
po.participantnumber AS participantnumber,
|
||||||
po.contribution AS contribution,
|
po.contribution AS contribution,
|
||||||
|
po.currency AS currency,
|
||||||
NULL AS startdate,
|
NULL AS startdate,
|
||||||
NULL AS enddate,
|
NULL AS enddate,
|
||||||
false AS inferred,
|
false AS inferred,
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
|
|
||||||
package eu.dnetlib.dhp.oa.graph.raw;
|
package eu.dnetlib.dhp.oa.graph.raw;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.Mockito.lenient;
|
import static org.mockito.Mockito.lenient;
|
||||||
|
|
||||||
|
@ -31,11 +29,12 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
|
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
|
||||||
|
import eu.dnetlib.dhp.schema.common.ModelConstants;
|
||||||
import eu.dnetlib.dhp.schema.oaf.*;
|
import eu.dnetlib.dhp.schema.oaf.*;
|
||||||
import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils;
|
import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils;
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
public class MigrateDbEntitiesApplicationTest {
|
class MigrateDbEntitiesApplicationTest {
|
||||||
|
|
||||||
private MigrateDbEntitiesApplication app;
|
private MigrateDbEntitiesApplication app;
|
||||||
|
|
||||||
|
@ -61,7 +60,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessService() throws Exception {
|
void testProcessService() throws Exception {
|
||||||
final List<TypedField> fields = prepareMocks("services_resultset_entry.json");
|
final List<TypedField> fields = prepareMocks("services_resultset_entry.json");
|
||||||
|
|
||||||
final List<Oaf> list = app.processService(rs);
|
final List<Oaf> list = app.processService(rs);
|
||||||
|
@ -74,7 +73,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
.getCollectedfrom()
|
.getCollectedfrom()
|
||||||
.stream()
|
.stream()
|
||||||
.map(KeyValue::getKey)
|
.map(KeyValue::getKey)
|
||||||
.forEach(dsId -> assertValidId(dsId));
|
.forEach(this::assertValidId);
|
||||||
|
|
||||||
assertEquals(1, ds.getPid().size());
|
assertEquals(1, ds.getPid().size());
|
||||||
assertEquals("r3d100010218", ds.getPid().get(0).getValue());
|
assertEquals("r3d100010218", ds.getPid().get(0).getValue());
|
||||||
|
@ -163,14 +162,14 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
.stream()
|
.stream()
|
||||||
.map(Qualifier::getSchemeid)
|
.map(Qualifier::getSchemeid)
|
||||||
.collect(Collectors.toCollection(HashSet::new));
|
.collect(Collectors.toCollection(HashSet::new));
|
||||||
assertTrue(cpSchemeId.size() == 1);
|
assertEquals(1,cpSchemeId.size());
|
||||||
assertTrue(cpSchemeId.contains("eosc:contentpolicies"));
|
assertTrue(cpSchemeId.contains("eosc:contentpolicies"));
|
||||||
HashSet<String> cpSchemeName = ds
|
HashSet<String> cpSchemeName = ds
|
||||||
.getContentpolicies()
|
.getContentpolicies()
|
||||||
.stream()
|
.stream()
|
||||||
.map(Qualifier::getSchemename)
|
.map(Qualifier::getSchemename)
|
||||||
.collect(Collectors.toCollection(HashSet::new));
|
.collect(Collectors.toCollection(HashSet::new));
|
||||||
assertTrue(cpSchemeName.size() == 1);
|
assertEquals(1, cpSchemeName.size());
|
||||||
assertTrue(cpSchemeName.contains("eosc:contentpolicies"));
|
assertTrue(cpSchemeName.contains("eosc:contentpolicies"));
|
||||||
assertEquals(2, ds.getContentpolicies().size());
|
assertEquals(2, ds.getContentpolicies().size());
|
||||||
assertEquals("Taxonomic classification", ds.getContentpolicies().get(0).getClassid());
|
assertEquals("Taxonomic classification", ds.getContentpolicies().get(0).getClassid());
|
||||||
|
@ -193,7 +192,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessProject() throws Exception {
|
void testProcessProject() throws Exception {
|
||||||
final List<TypedField> fields = prepareMocks("projects_resultset_entry.json");
|
final List<TypedField> fields = prepareMocks("projects_resultset_entry.json");
|
||||||
|
|
||||||
final List<Oaf> list = app.processProject(rs);
|
final List<Oaf> list = app.processProject(rs);
|
||||||
|
@ -211,7 +210,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessOrganization() throws Exception {
|
void testProcessOrganization() throws Exception {
|
||||||
final List<TypedField> fields = prepareMocks("organizations_resultset_entry.json");
|
final List<TypedField> fields = prepareMocks("organizations_resultset_entry.json");
|
||||||
|
|
||||||
final List<Oaf> list = app.processOrganization(rs);
|
final List<Oaf> list = app.processOrganization(rs);
|
||||||
|
@ -238,7 +237,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessDatasourceOrganization() throws Exception {
|
void testProcessDatasourceOrganization() throws Exception {
|
||||||
final List<TypedField> fields = prepareMocks("datasourceorganization_resultset_entry.json");
|
final List<TypedField> fields = prepareMocks("datasourceorganization_resultset_entry.json");
|
||||||
|
|
||||||
final List<Oaf> list = app.processServiceOrganization(rs);
|
final List<Oaf> list = app.processServiceOrganization(rs);
|
||||||
|
@ -255,7 +254,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessProjectOrganization() throws Exception {
|
void testProcessProjectOrganization() throws Exception {
|
||||||
final List<TypedField> fields = prepareMocks("projectorganization_resultset_entry.json");
|
final List<TypedField> fields = prepareMocks("projectorganization_resultset_entry.json");
|
||||||
|
|
||||||
final List<Oaf> list = app.processProjectOrganization(rs);
|
final List<Oaf> list = app.processProjectOrganization(rs);
|
||||||
|
@ -271,6 +270,38 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
assertEquals(r2.getSource(), r1.getTarget());
|
assertEquals(r2.getSource(), r1.getTarget());
|
||||||
assertValidId(r1.getCollectedfrom().get(0).getKey());
|
assertValidId(r1.getCollectedfrom().get(0).getKey());
|
||||||
assertValidId(r2.getCollectedfrom().get(0).getKey());
|
assertValidId(r2.getCollectedfrom().get(0).getKey());
|
||||||
|
|
||||||
|
assertEquals(ModelConstants.PROJECT_ORGANIZATION, r1.getRelType());
|
||||||
|
assertEquals(ModelConstants.PROJECT_ORGANIZATION, r2.getRelType());
|
||||||
|
|
||||||
|
assertEquals(ModelConstants.PARTICIPATION, r1.getSubRelType());
|
||||||
|
assertEquals(ModelConstants.PARTICIPATION, r2.getSubRelType());
|
||||||
|
|
||||||
|
if (r1.getSource().startsWith("40")) {
|
||||||
|
assertEquals(ModelConstants.HAS_PARTICIPANT, r1.getRelClass());
|
||||||
|
assertEquals(ModelConstants.IS_PARTICIPANT, r2.getRelClass());
|
||||||
|
} else if (r1.getSource().startsWith("20")) {
|
||||||
|
assertEquals(ModelConstants.IS_PARTICIPANT, r1.getRelClass());
|
||||||
|
assertEquals(ModelConstants.HAS_PARTICIPANT, r2.getRelClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
assertNotNull(r1.getProperties());
|
||||||
|
checkProperty(r1, "contribution", "436754.0");
|
||||||
|
checkProperty(r2, "contribution", "436754.0");
|
||||||
|
|
||||||
|
checkProperty(r1, "currency","EUR");
|
||||||
|
checkProperty(r2, "currency", "EUR");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkProperty(Relation r, String property, String value) {
|
||||||
|
final List<KeyValue> p = r
|
||||||
|
.getProperties()
|
||||||
|
.stream()
|
||||||
|
.filter(kv -> kv.getKey().equals(property))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
assertFalse(p.isEmpty());
|
||||||
|
assertEquals(1, p.size());
|
||||||
|
assertEquals(value, p.get(0).getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -289,7 +320,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessClaims_rels() throws Exception {
|
void testProcessClaims_rels() throws Exception {
|
||||||
final List<TypedField> fields = prepareMocks("claimsrel_resultset_entry.json");
|
final List<TypedField> fields = prepareMocks("claimsrel_resultset_entry.json");
|
||||||
|
|
||||||
final List<Oaf> list = app.processClaims(rs);
|
final List<Oaf> list = app.processClaims(rs);
|
||||||
|
@ -320,9 +351,6 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
|
|
||||||
assertValidId(r1.getCollectedfrom().get(0).getKey());
|
assertValidId(r1.getCollectedfrom().get(0).getKey());
|
||||||
assertValidId(r2.getCollectedfrom().get(0).getKey());
|
assertValidId(r2.getCollectedfrom().get(0).getKey());
|
||||||
|
|
||||||
// System.out.println(new ObjectMapper().writeValueAsString(r1));
|
|
||||||
// System.out.println(new ObjectMapper().writeValueAsString(r2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<TypedField> prepareMocks(final String jsonFile) throws IOException, SQLException {
|
private List<TypedField> prepareMocks(final String jsonFile) throws IOException, SQLException {
|
||||||
|
@ -385,7 +413,7 @@ public class MigrateDbEntitiesApplicationTest {
|
||||||
final String[] values = ((List<?>) tf.getValue())
|
final String[] values = ((List<?>) tf.getValue())
|
||||||
.stream()
|
.stream()
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.map(o -> o.toString())
|
.map(Object::toString)
|
||||||
.toArray(String[]::new);
|
.toArray(String[]::new);
|
||||||
|
|
||||||
Mockito.when(arr.getArray()).thenReturn(values);
|
Mockito.when(arr.getArray()).thenReturn(values);
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
{
|
{
|
||||||
"field": "project",
|
"field": "project",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"value": "nsf_________::1700003"
|
"value": "corda__h2020::824273"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"field": "resporganization",
|
"field": "resporganization",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"value": "nsf_________::University_of_Notre_Dame"
|
"value": "corda__h2020::999945647"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"field": "participantnumber",
|
"field": "participantnumber",
|
||||||
|
@ -16,8 +16,13 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"field": "contribution",
|
"field": "contribution",
|
||||||
"type": "not_used",
|
"type": "double",
|
||||||
"value": null
|
"value": 436754
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "currency",
|
||||||
|
"type": "string",
|
||||||
|
"value": "EUR"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"field": "startdate",
|
"field": "startdate",
|
||||||
|
@ -52,12 +57,12 @@
|
||||||
{
|
{
|
||||||
"field": "collectedfromid",
|
"field": "collectedfromid",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"value": "openaire____::nsf"
|
"value": "openaire____::corda_h2020"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"field": "collectedfromname",
|
"field": "collectedfromname",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"value": "NSF - National Science Foundation"
|
"value": "CORDA - COmmon Research DAta Warehouse - Horizon 2020"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"field": "semantics",
|
"field": "semantics",
|
||||||
|
|
Loading…
Reference in New Issue