BrBETA_dnet-hadoop/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleaningRuleMap.java

47 lines
1.5 KiB
Java
Raw Normal View History

2020-06-09 17:20:40 +02:00
package eu.dnetlib.dhp.oa.graph.clean;
2020-06-13 13:06:04 +02:00
import java.io.Serializable;
import java.util.HashMap;
2020-06-12 12:03:25 +02:00
import org.apache.commons.lang3.StringUtils;
2020-06-13 13:06:04 +02:00
import eu.dnetlib.dhp.common.FunctionalInterfaceSupport.SerializableConsumer;
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
import eu.dnetlib.dhp.schema.common.ModelConstants;
import eu.dnetlib.dhp.schema.oaf.AccessRight;
import eu.dnetlib.dhp.schema.oaf.Country;
2020-06-09 17:20:40 +02:00
import eu.dnetlib.dhp.schema.oaf.Qualifier;
2020-06-12 10:45:18 +02:00
2020-06-13 13:06:04 +02:00
public class CleaningRuleMap extends HashMap<Class, SerializableConsumer<Object>> implements Serializable {
2020-06-09 17:20:40 +02:00
2020-06-12 18:25:47 +02:00
/**
2020-06-13 13:06:04 +02:00
* Creates the mapping for the Oaf types subject to cleaning
*
2020-06-12 18:25:47 +02:00
* @param vocabularies
*/
2020-06-13 13:06:04 +02:00
public static CleaningRuleMap create(VocabularyGroup vocabularies) {
CleaningRuleMap mapping = new CleaningRuleMap();
mapping.put(Qualifier.class, o -> cleanQualifier(vocabularies, (Qualifier) o));
mapping.put(AccessRight.class, o -> cleanQualifier(vocabularies, (AccessRight) o));
mapping.put(Country.class, o -> {
final Country c = (Country) o;
if (StringUtils.isBlank(c.getSchemeid())) {
c.setSchemeid(ModelConstants.DNET_COUNTRY_TYPE);
c.setSchemename(ModelConstants.DNET_COUNTRY_TYPE);
2020-06-12 10:45:18 +02:00
}
cleanQualifier(vocabularies, c);
2020-06-12 18:25:47 +02:00
});
2020-06-13 13:06:04 +02:00
return mapping;
2020-06-09 19:52:53 +02:00
}
2020-06-12 18:25:47 +02:00
private static <Q extends Qualifier> void cleanQualifier(VocabularyGroup vocabularies, Q q) {
if (vocabularies.vocabularyExists(q.getSchemeid())) {
Qualifier newValue = vocabularies.lookup(q.getSchemeid(), q.getClassid());
q.setClassid(newValue.getClassid());
q.setClassname(newValue.getClassname());
}
}
2020-06-09 17:20:40 +02:00
}