dnet-hadoop/dhp-workflows/dhp-broker-events/src/main/java/eu/dnetlib/dhp/broker/oa/util/aggregators/withRels/RelatedEntityFactory.java

35 lines
1.2 KiB
Java
Raw Normal View History

2020-06-11 11:25:18 +02:00
package eu.dnetlib.dhp.broker.oa.util.aggregators.withRels;
2020-06-16 15:53:13 +02:00
import eu.dnetlib.dhp.broker.oa.util.ConversionUtils;
import eu.dnetlib.dhp.schema.oaf.Dataset;
import eu.dnetlib.dhp.schema.oaf.Project;
import eu.dnetlib.dhp.schema.oaf.Publication;
import eu.dnetlib.dhp.schema.oaf.Software;
2020-06-11 11:25:18 +02:00
public class RelatedEntityFactory {
@SuppressWarnings("unchecked")
2020-06-16 12:34:13 +02:00
public static <RT, T> RT newRelatedEntity(final String sourceId,
final String relType,
final T target,
2020-06-11 11:25:18 +02:00
final Class<RT> clazz) {
2020-06-16 15:53:13 +02:00
2020-06-11 11:25:18 +02:00
if (clazz == RelatedProject.class) {
2020-06-16 15:55:42 +02:00
return (RT) new RelatedProject(sourceId, relType,
ConversionUtils.oafProjectToBrokerProject((Project) target));
2020-06-16 15:53:13 +02:00
} else if (clazz == RelatedSoftware.class) {
2020-06-16 15:55:42 +02:00
return (RT) new RelatedSoftware(sourceId, relType,
ConversionUtils.oafSoftwareToBrokerSoftware((Software) target));
2020-06-16 15:53:13 +02:00
} else if (clazz == RelatedDataset.class) {
2020-06-16 15:55:42 +02:00
return (RT) new RelatedDataset(sourceId, relType,
ConversionUtils.oafDatasetToBrokerDataset((Dataset) target));
2020-06-16 15:53:13 +02:00
} else if (clazz == RelatedPublication.class) {
2020-06-16 15:55:42 +02:00
return (RT) new RelatedPublication(sourceId, relType,
ConversionUtils.oafPublicationToBrokerPublication((Publication) target));
2020-06-16 15:53:13 +02:00
} else {
return null;
2020-06-11 11:25:18 +02:00
}
}
}