2019-10-24 11:39:41 +02:00
|
|
|
package eu.dnetlib.dhp.schema.oaf;
|
|
|
|
|
|
|
|
import java.io.Serializable;
|
2019-12-10 14:57:16 +01:00
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2019-10-25 18:10:30 +02:00
|
|
|
public abstract class OafEntity extends Oaf implements Serializable {
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private String id;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private List<String> originalId;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private List<StructuredProperty> pid;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private String dateofcollection;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private String dateoftransformation;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private List<ExtraInfo> extraInfo;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
private OAIProvenance oaiprovenance;
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public String getId() {
|
|
|
|
return id;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setId(String id) {
|
|
|
|
this.id = id;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public List<String> getOriginalId() {
|
|
|
|
return originalId;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setOriginalId(List<String> originalId) {
|
|
|
|
this.originalId = originalId;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public List<StructuredProperty> getPid() {
|
|
|
|
return pid;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setPid(List<StructuredProperty> pid) {
|
|
|
|
this.pid = pid;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public String getDateofcollection() {
|
|
|
|
return dateofcollection;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setDateofcollection(String dateofcollection) {
|
|
|
|
this.dateofcollection = dateofcollection;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public String getDateoftransformation() {
|
|
|
|
return dateoftransformation;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setDateoftransformation(String dateoftransformation) {
|
|
|
|
this.dateoftransformation = dateoftransformation;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public List<ExtraInfo> getExtraInfo() {
|
|
|
|
return extraInfo;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setExtraInfo(List<ExtraInfo> extraInfo) {
|
|
|
|
this.extraInfo = extraInfo;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public OAIProvenance getOaiprovenance() {
|
|
|
|
return oaiprovenance;
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void setOaiprovenance(OAIProvenance oaiprovenance) {
|
|
|
|
this.oaiprovenance = oaiprovenance;
|
|
|
|
}
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
public void mergeFrom(OafEntity e) {
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
if (e == null) return;
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
originalId = mergeLists(originalId, e.getOriginalId());
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
collectedfrom = mergeLists(collectedfrom, e.getCollectedfrom());
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
pid = mergeLists(pid, e.getPid());
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
if (e.getDateofcollection() != null && compareTrust(this, e) < 0)
|
|
|
|
dateofcollection = e.getDateofcollection();
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
if (e.getDateoftransformation() != null && compareTrust(this, e) < 0)
|
|
|
|
dateoftransformation = e.getDateoftransformation();
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
extraInfo = mergeLists(extraInfo, e.getExtraInfo());
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
if (e.getOaiprovenance() != null && compareTrust(this, e) < 0)
|
|
|
|
oaiprovenance = e.getOaiprovenance();
|
|
|
|
}
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
protected <T> List<T> mergeLists(final List<T>... lists) {
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
return Arrays.stream(lists)
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
.flatMap(List::stream)
|
|
|
|
.distinct()
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
}
|
2019-12-10 14:57:16 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
@Override
|
|
|
|
public boolean equals(Object o) {
|
|
|
|
if (this == o) return true;
|
|
|
|
if (o == null || getClass() != o.getClass()) return false;
|
|
|
|
if (!super.equals(o)) return false;
|
|
|
|
OafEntity oafEntity = (OafEntity) o;
|
|
|
|
return Objects.equals(id, oafEntity.id);
|
|
|
|
}
|
2020-03-11 16:57:28 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
|
|
|
return Objects.hash(super.hashCode(), id);
|
|
|
|
}
|
2019-10-24 11:39:41 +02:00
|
|
|
}
|