package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; import java.util.Objects; public class Datasource extends OafEntity implements Serializable { private Qualifier datasourcetype; private Qualifier openairecompatibility; private Field officialname; private Field englishname; private Field websiteurl; private Field logourl; private Field contactemail; private Field namespaceprefix; private Field latitude; private Field longitude; private Field dateofvalidation; private Field description; private List subjects; // opendoar specific fields (od*) private Field odnumberofitems; private Field odnumberofitemsdate; private Field odpolicies; private List> odlanguages; private List> odcontenttypes; private List> accessinfopackage; // re3data fields private Field releasestartdate; private Field releaseenddate; private Field missionstatementurl; private Field dataprovider; private Field serviceprovider; // {open, restricted or closed} private Field databaseaccesstype; // {open, restricted or closed} private Field datauploadtype; // {feeRequired, registration, other} private Field databaseaccessrestriction; // {feeRequired, registration, other} private Field datauploadrestriction; private Field versioning; private Field citationguidelineurl; // {yes, no, uknown} private Field qualitymanagementkind; private Field pidsystems; private Field certificates; private List policies; private Journal journal; public Qualifier getDatasourcetype() { return datasourcetype; } public void setDatasourcetype(Qualifier datasourcetype) { this.datasourcetype = datasourcetype; } public Qualifier getOpenairecompatibility() { return openairecompatibility; } public void setOpenairecompatibility(Qualifier openairecompatibility) { this.openairecompatibility = openairecompatibility; } public Field getOfficialname() { return officialname; } public void setOfficialname(Field officialname) { this.officialname = officialname; } public Field getEnglishname() { return englishname; } public void setEnglishname(Field englishname) { this.englishname = englishname; } public Field getWebsiteurl() { return websiteurl; } public void setWebsiteurl(Field websiteurl) { this.websiteurl = websiteurl; } public Field getLogourl() { return logourl; } public void setLogourl(Field logourl) { this.logourl = logourl; } public Field getContactemail() { return contactemail; } public void setContactemail(Field contactemail) { this.contactemail = contactemail; } public Field getNamespaceprefix() { return namespaceprefix; } public void setNamespaceprefix(Field namespaceprefix) { this.namespaceprefix = namespaceprefix; } public Field getLatitude() { return latitude; } public void setLatitude(Field latitude) { this.latitude = latitude; } public Field getLongitude() { return longitude; } public void setLongitude(Field longitude) { this.longitude = longitude; } public Field getDateofvalidation() { return dateofvalidation; } public void setDateofvalidation(Field dateofvalidation) { this.dateofvalidation = dateofvalidation; } public Field getDescription() { return description; } public void setDescription(Field description) { this.description = description; } public List getSubjects() { return subjects; } public void setSubjects(List subjects) { this.subjects = subjects; } public Field getOdnumberofitems() { return odnumberofitems; } public void setOdnumberofitems(Field odnumberofitems) { this.odnumberofitems = odnumberofitems; } public Field getOdnumberofitemsdate() { return odnumberofitemsdate; } public void setOdnumberofitemsdate(Field odnumberofitemsdate) { this.odnumberofitemsdate = odnumberofitemsdate; } public Field getOdpolicies() { return odpolicies; } public void setOdpolicies(Field odpolicies) { this.odpolicies = odpolicies; } public List> getOdlanguages() { return odlanguages; } public void setOdlanguages(List> odlanguages) { this.odlanguages = odlanguages; } public List> getOdcontenttypes() { return odcontenttypes; } public void setOdcontenttypes(List> odcontenttypes) { this.odcontenttypes = odcontenttypes; } public List> getAccessinfopackage() { return accessinfopackage; } public void setAccessinfopackage(List> accessinfopackage) { this.accessinfopackage = accessinfopackage; } public Field getReleasestartdate() { return releasestartdate; } public void setReleasestartdate(Field releasestartdate) { this.releasestartdate = releasestartdate; } public Field getReleaseenddate() { return releaseenddate; } public void setReleaseenddate(Field releaseenddate) { this.releaseenddate = releaseenddate; } public Field getMissionstatementurl() { return missionstatementurl; } public void setMissionstatementurl(Field missionstatementurl) { this.missionstatementurl = missionstatementurl; } public Field getDataprovider() { return dataprovider; } public void setDataprovider(Field dataprovider) { this.dataprovider = dataprovider; } public Field getServiceprovider() { return serviceprovider; } public void setServiceprovider(Field serviceprovider) { this.serviceprovider = serviceprovider; } public Field getDatabaseaccesstype() { return databaseaccesstype; } public void setDatabaseaccesstype(Field databaseaccesstype) { this.databaseaccesstype = databaseaccesstype; } public Field getDatauploadtype() { return datauploadtype; } public void setDatauploadtype(Field datauploadtype) { this.datauploadtype = datauploadtype; } public Field getDatabaseaccessrestriction() { return databaseaccessrestriction; } public void setDatabaseaccessrestriction(Field databaseaccessrestriction) { this.databaseaccessrestriction = databaseaccessrestriction; } public Field getDatauploadrestriction() { return datauploadrestriction; } public void setDatauploadrestriction(Field datauploadrestriction) { this.datauploadrestriction = datauploadrestriction; } public Field getVersioning() { return versioning; } public void setVersioning(Field versioning) { this.versioning = versioning; } public Field getCitationguidelineurl() { return citationguidelineurl; } public void setCitationguidelineurl(Field citationguidelineurl) { this.citationguidelineurl = citationguidelineurl; } public Field getQualitymanagementkind() { return qualitymanagementkind; } public void setQualitymanagementkind(Field qualitymanagementkind) { this.qualitymanagementkind = qualitymanagementkind; } public Field getPidsystems() { return pidsystems; } public void setPidsystems(Field pidsystems) { this.pidsystems = pidsystems; } public Field getCertificates() { return certificates; } public void setCertificates(Field certificates) { this.certificates = certificates; } public List getPolicies() { return policies; } public void setPolicies(List policies) { this.policies = policies; } public Journal getJournal() { return journal; } public void setJournal(Journal journal) { this.journal = journal; } @Override public void mergeFrom(OafEntity e) { super.mergeFrom(e); if (!Datasource.class.isAssignableFrom(e.getClass())) { return; } Datasource d = (Datasource) e; datasourcetype = d.getDatasourcetype() != null && compareTrust(this, e) < 0 ? d.getDatasourcetype() : datasourcetype; openairecompatibility = d.getOpenairecompatibility() != null && compareTrust(this, e) < 0 ? d.getOpenairecompatibility() : openairecompatibility; officialname = d.getOfficialname() != null && compareTrust(this, e) < 0 ? d.getOfficialname() : officialname; englishname = d.getEnglishname() != null && compareTrust(this, e) < 0 ? d.getEnglishname() : officialname; websiteurl = d.getWebsiteurl() != null && compareTrust(this, e) < 0 ? d.getWebsiteurl() : websiteurl; logourl = d.getLogourl() != null && compareTrust(this, e) < 0 ? d.getLogourl() : getLogourl(); contactemail = d.getContactemail() != null && compareTrust(this, e) < 0 ? d.getContactemail() : contactemail; namespaceprefix = d.getNamespaceprefix() != null && compareTrust(this, e) < 0 ? d.getNamespaceprefix() : namespaceprefix; latitude = d.getLatitude() != null && compareTrust(this, e) < 0 ? d.getLatitude() : latitude; longitude = d.getLongitude() != null && compareTrust(this, e) < 0 ? d.getLongitude() : longitude; dateofvalidation = d.getDateofvalidation() != null && compareTrust(this, e) < 0 ? d.getDateofvalidation() : dateofvalidation; description = d.getDescription() != null && compareTrust(this, e) < 0 ? d.getDescription() : description; subjects = mergeLists(subjects, d.getSubjects()); // opendoar specific fields (od*) odnumberofitems = d.getOdnumberofitems() != null && compareTrust(this, e) < 0 ? d.getOdnumberofitems() : odnumberofitems; odnumberofitemsdate = d.getOdnumberofitemsdate() != null && compareTrust(this, e) < 0 ? d.getOdnumberofitemsdate() : odnumberofitemsdate; odpolicies = d.getOdpolicies() != null && compareTrust(this, e) < 0 ? d.getOdpolicies() : odpolicies; odlanguages = mergeLists(odlanguages, d.getOdlanguages()); odcontenttypes = mergeLists(odcontenttypes, d.getOdcontenttypes()); accessinfopackage = mergeLists(accessinfopackage, d.getAccessinfopackage()); // re3data fields releasestartdate = d.getReleasestartdate() != null && compareTrust(this, e) < 0 ? d.getReleasestartdate() : releasestartdate; releaseenddate = d.getReleaseenddate() != null && compareTrust(this, e) < 0 ? d.getReleaseenddate() : releaseenddate; missionstatementurl = d.getMissionstatementurl() != null && compareTrust(this, e) < 0 ? d.getMissionstatementurl() : missionstatementurl; dataprovider = d.getDataprovider() != null && compareTrust(this, e) < 0 ? d.getDataprovider() : dataprovider; serviceprovider = d.getServiceprovider() != null && compareTrust(this, e) < 0 ? d.getServiceprovider() : serviceprovider; // {open, restricted or closed} databaseaccesstype = d.getDatabaseaccesstype() != null && compareTrust(this, e) < 0 ? d.getDatabaseaccesstype() : databaseaccesstype; // {open, restricted or closed} datauploadtype = d.getDatauploadtype() != null && compareTrust(this, e) < 0 ? d.getDatauploadtype() : datauploadtype; // {feeRequired, registration, other} databaseaccessrestriction = d.getDatabaseaccessrestriction() != null && compareTrust(this, e) < 0 ? d.getDatabaseaccessrestriction() : databaseaccessrestriction; // {feeRequired, registration, other} datauploadrestriction = d.getDatauploadrestriction() != null && compareTrust(this, e) < 0 ? d.getDatauploadrestriction() : datauploadrestriction; versioning = d.getVersioning() != null && compareTrust(this, e) < 0 ? d.getVersioning() : versioning; citationguidelineurl = d.getCitationguidelineurl() != null && compareTrust(this, e) < 0 ? d.getCitationguidelineurl() : citationguidelineurl; // {yes, no, unknown} qualitymanagementkind = d.getQualitymanagementkind() != null && compareTrust(this, e) < 0 ? d.getQualitymanagementkind() : qualitymanagementkind; pidsystems = d.getPidsystems() != null && compareTrust(this, e) < 0 ? d.getPidsystems() : pidsystems; certificates = d.getCertificates() != null && compareTrust(this, e) < 0 ? d.getCertificates() : certificates; policies = mergeLists(policies, d.getPolicies()); journal = d.getJournal() != null && compareTrust(this, e) < 0 ? d.getJournal() : journal; mergeOAFDataInfo(e); } @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; Datasource that = (Datasource) o; return Objects.equals(datasourcetype, that.datasourcetype) && Objects.equals(openairecompatibility, that.openairecompatibility) && Objects.equals(officialname, that.officialname) && Objects.equals(englishname, that.englishname) && Objects.equals(websiteurl, that.websiteurl) && Objects.equals(logourl, that.logourl) && Objects.equals(contactemail, that.contactemail) && Objects.equals(namespaceprefix, that.namespaceprefix) && Objects.equals(latitude, that.latitude) && Objects.equals(longitude, that.longitude) && Objects.equals(dateofvalidation, that.dateofvalidation) && Objects.equals(description, that.description) && Objects.equals(subjects, that.subjects) && Objects.equals(odnumberofitems, that.odnumberofitems) && Objects.equals(odnumberofitemsdate, that.odnumberofitemsdate) && Objects.equals(odpolicies, that.odpolicies) && Objects.equals(odlanguages, that.odlanguages) && Objects.equals(odcontenttypes, that.odcontenttypes) && Objects.equals(accessinfopackage, that.accessinfopackage) && Objects.equals(releasestartdate, that.releasestartdate) && Objects.equals(releaseenddate, that.releaseenddate) && Objects.equals(missionstatementurl, that.missionstatementurl) && Objects.equals(dataprovider, that.dataprovider) && Objects.equals(serviceprovider, that.serviceprovider) && Objects.equals(databaseaccesstype, that.databaseaccesstype) && Objects.equals(datauploadtype, that.datauploadtype) && Objects.equals(databaseaccessrestriction, that.databaseaccessrestriction) && Objects.equals(datauploadrestriction, that.datauploadrestriction) && Objects.equals(versioning, that.versioning) && Objects.equals(citationguidelineurl, that.citationguidelineurl) && Objects.equals(qualitymanagementkind, that.qualitymanagementkind) && Objects.equals(pidsystems, that.pidsystems) && Objects.equals(certificates, that.certificates) && Objects.equals(policies, that.policies) && Objects.equals(journal, that.journal); } @Override public int hashCode() { return Objects.hash( super.hashCode(), datasourcetype, openairecompatibility, officialname, englishname, websiteurl, logourl, contactemail, namespaceprefix, latitude, longitude, dateofvalidation, description, subjects, odnumberofitems, odnumberofitemsdate, odpolicies, odlanguages, odcontenttypes, accessinfopackage, releasestartdate, releaseenddate, missionstatementurl, dataprovider, serviceprovider, databaseaccesstype, datauploadtype, databaseaccessrestriction, datauploadrestriction, versioning, citationguidelineurl, qualitymanagementkind, pidsystems, certificates, policies, journal); } }