2020-06-11 11:25:18 +02:00
|
|
|
|
|
|
|
package eu.dnetlib.dhp.broker.oa.util.aggregators.withRels;
|
|
|
|
|
2020-06-16 12:34:13 +02:00
|
|
|
import eu.dnetlib.broker.objects.Dataset;
|
|
|
|
import eu.dnetlib.broker.objects.Project;
|
|
|
|
import eu.dnetlib.broker.objects.Publication;
|
|
|
|
import eu.dnetlib.broker.objects.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) {
|
|
|
|
if (clazz == RelatedProject.class) {
|
|
|
|
return (RT) new RelatedProject(sourceId, relType, (Project) target);
|
|
|
|
}
|
|
|
|
if (clazz == RelatedSoftware.class) {
|
|
|
|
return (RT) new RelatedSoftware(sourceId, relType, (Software) target);
|
|
|
|
}
|
|
|
|
if (clazz == RelatedDataset.class) {
|
|
|
|
return (RT) new RelatedDataset(sourceId, relType, (Dataset) target);
|
|
|
|
}
|
|
|
|
if (clazz == RelatedPublication.class) {
|
|
|
|
return (RT) new RelatedPublication(sourceId, relType, (Publication) target);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|