/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.core.adapter.impl.jsonidentifiers;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.orcid.core.utils.JsonUtils;
import org.orcid.jaxb.model.record_v2.ExternalID;
import org.orcid.jaxb.model.record_v2.ExternalIDs;
import org.orcid.jaxb.model.record_v2.Relationship;
public class FundingExternalIdentifiers implements Serializable, JSONIdentifierAdapter<org.orcid.jaxb.model.message.FundingExternalIdentifiers, ExternalIDs> {
private static final long serialVersionUID = 1L;
protected List<FundingExternalIdentifier> fundingExternalIdentifier;
public FundingExternalIdentifiers() {
}
public FundingExternalIdentifiers(org.orcid.jaxb.model.message.FundingExternalIdentifiers messagePojo) {
if (messagePojo != null && !messagePojo.getFundingExternalIdentifier().isEmpty()) {
for (org.orcid.jaxb.model.message.FundingExternalIdentifier messageFei : messagePojo.getFundingExternalIdentifier()) {
this.getFundingExternalIdentifier().add(new FundingExternalIdentifier(messageFei));
}
for (FundingExternalIdentifier fei : this.getFundingExternalIdentifier()) {
if (fei.getRelationship() == null) {
fei.setRelationship(Relationship.SELF.value());
}
}
}
}
public FundingExternalIdentifiers(ExternalIDs recordPojo) {
if (recordPojo != null && !recordPojo.getExternalIdentifier().isEmpty()) {
for (ExternalID recordEi : recordPojo.getExternalIdentifier()) {
this.getFundingExternalIdentifier().add(new FundingExternalIdentifier(recordEi));
}
}
}
public List<FundingExternalIdentifier> getFundingExternalIdentifier() {
if (fundingExternalIdentifier == null)
fundingExternalIdentifier = new ArrayList<FundingExternalIdentifier>();
return fundingExternalIdentifier;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((fundingExternalIdentifier == null) ? 0 : fundingExternalIdentifier.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
FundingExternalIdentifiers other = (FundingExternalIdentifiers) obj;
if (fundingExternalIdentifier == null) {
if (other.fundingExternalIdentifier != null)
return false;
} else {
if (other.fundingExternalIdentifier == null)
return false;
else if (!(fundingExternalIdentifier.containsAll(other.fundingExternalIdentifier) && other.fundingExternalIdentifier.containsAll(fundingExternalIdentifier)
&& other.fundingExternalIdentifier.size() == fundingExternalIdentifier.size())) {
return false;
}
}
return true;
}
public org.orcid.jaxb.model.message.FundingExternalIdentifiers toMessagePojo() {
org.orcid.jaxb.model.message.FundingExternalIdentifiers result = new org.orcid.jaxb.model.message.FundingExternalIdentifiers();
if (!this.getFundingExternalIdentifier().isEmpty()) {
for (FundingExternalIdentifier fei : this.getFundingExternalIdentifier()) {
result.getFundingExternalIdentifier().add(fei.toMessagePojo());
}
}
return result;
}
public ExternalIDs toRecordPojo() {
ExternalIDs result = new ExternalIDs();
if (!this.getFundingExternalIdentifier().isEmpty()) {
for (FundingExternalIdentifier fei : this.getFundingExternalIdentifier()) {
result.getExternalIdentifier().add(fei.toRecordPojo());
}
}
return result;
}
public String toDBJSONString() {
return JsonUtils.convertToJsonString(this);
}
public static FundingExternalIdentifiers fromDBJSONString(String dbJSON) {
return JsonUtils.readObjectFromJsonString(dbJSON, FundingExternalIdentifiers.class);
}
}