63 lines
1.4 KiB
Java
63 lines
1.4 KiB
Java
|
|
package eu.dnetlib.dhp.schema.oaf.utils;
|
|
|
|
import java.util.Optional;
|
|
|
|
import eu.dnetlib.dhp.schema.oaf.StructuredProperty;
|
|
|
|
public class PidCleaner {
|
|
|
|
/**
|
|
* Utility method that normalises PID values on a per-type basis.
|
|
* @param pid the PID whose value will be normalised.
|
|
* @return the PID containing the normalised value.
|
|
*/
|
|
public static StructuredProperty normalizePidValue(StructuredProperty pid) {
|
|
pid
|
|
.setValue(
|
|
normalizePidValue(
|
|
pid.getQualifier().getClassid(),
|
|
pid.getValue()));
|
|
|
|
return pid;
|
|
}
|
|
|
|
public static String normalizePidValue(String pidType, String pidValue) {
|
|
String value = Optional
|
|
.ofNullable(pidValue)
|
|
.map(String::trim)
|
|
.orElseThrow(() -> new IllegalArgumentException("PID value cannot be empty"));
|
|
|
|
switch (pidType) {
|
|
|
|
// TODO add cleaning for more PID types as needed
|
|
|
|
// Result
|
|
case "doi":
|
|
return DoiCleaningRule.clean(value);
|
|
case "pmid":
|
|
return PmidCleaningRule.clean(value);
|
|
case "pmc":
|
|
return PmcCleaningRule.clean(value);
|
|
case "handle":
|
|
case "arXiv":
|
|
return value;
|
|
|
|
// Organization
|
|
case "GRID":
|
|
return GridCleaningRule.clean(value);
|
|
case "ISNI":
|
|
return ISNICleaningRule.clean(value);
|
|
case "ROR":
|
|
return RorCleaningRule.clean(value);
|
|
case "PIC":
|
|
return PICCleaningRule.clean(value);
|
|
case "FundRef":
|
|
return FundRefCleaningRule.clean(value);
|
|
default:
|
|
return value;
|
|
}
|
|
}
|
|
|
|
}
|