/** * ============================================================================= * * 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.pojo.ajaxForm; import java.io.Serializable; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.orcid.jaxb.model.common_v2.ContributorEmail; import org.orcid.jaxb.model.common_v2.ContributorOrcid; import org.orcid.jaxb.model.common_v2.CreditName; import org.orcid.jaxb.model.record_v2.FundingContributor; import org.orcid.jaxb.model.record_v2.FundingContributorAttributes; import org.orcid.jaxb.model.record_v2.FundingContributorRole; public class Contributor implements ErrorsInterface, Serializable { private static final long serialVersionUID = 1L; private List<String> errors = new ArrayList<String>(); private Text contributorSequence; private Text email; private Text orcid; private Text uri; private Text creditName; private Text contributorRole; public static Contributor valueOf(org.orcid.jaxb.model.common_v2.Contributor contributor) { Contributor c = new Contributor(); if (contributor != null) { if (contributor.getContributorAttributes() != null) { contributor.getContributorAttributes(); if (contributor.getContributorAttributes().getContributorRole() != null) c.setContributorRole(Text.valueOf(contributor.getContributorAttributes().getContributorRole().value())); if (contributor.getContributorAttributes().getContributorSequence() != null) c.setContributorSequence(Text.valueOf(contributor.getContributorAttributes().getContributorSequence().value())); } if (contributor.getContributorOrcid() != null) { c.setOrcid(Text.valueOf(contributor.getContributorOrcid().getPath())); c.setUri(Text.valueOf(contributor.getContributorOrcid().getUri())); } //Set default values that must be overwritten by the controller if (contributor.getCreditName() != null) { c.setCreditName(Text.valueOf(contributor.getCreditName().getContent())); } } return c; } public static Contributor valueOf(FundingContributor contributor) { Contributor c = new Contributor(); if (contributor != null) { if (contributor.getContributorAttributes() != null) { contributor.getContributorAttributes(); if (contributor.getContributorAttributes().getContributorRole() != null) c.setContributorRole(Text.valueOf(contributor.getContributorAttributes().getContributorRole().value())); } if (contributor.getContributorOrcid() != null) { c.setOrcid(Text.valueOf(contributor.getContributorOrcid().getPath())); c.setUri(Text.valueOf(contributor.getContributorOrcid().getUri())); } if (contributor.getCreditName() != null) { c.setCreditName(Text.valueOf(contributor.getCreditName().getContent())); } } return c; } @Deprecated public static Contributor valueOf(org.orcid.jaxb.model.message.FundingContributor contributor) { Contributor c = new Contributor(); if (contributor != null) { if (contributor.getContributorAttributes() != null) { contributor.getContributorAttributes(); if (contributor.getContributorAttributes().getContributorRole() != null) c.setContributorRole(Text.valueOf(contributor.getContributorAttributes().getContributorRole().value())); } if (contributor.getContributorEmail() != null) c.setEmail(Text.valueOf(contributor.getContributorEmail().getValue())); if (contributor.getContributorOrcid() != null) { c.setOrcid(Text.valueOf(contributor.getContributorOrcid().getPath())); c.setUri(Text.valueOf(contributor.getContributorOrcid().getUri())); } if (contributor.getCreditName() != null) { c.setCreditName(Text.valueOf(contributor.getCreditName().getContent())); } } return c; } public FundingContributor toFundingContributor() { FundingContributor c = new FundingContributor(); if (this.getContributorRole() != null || this.getContributorSequence() != null) { FundingContributorAttributes ca = new FundingContributorAttributes(); if (!PojoUtil.isEmpty(this.getContributorRole())) ca.setContributorRole(FundingContributorRole.fromValue(this.getContributorRole().getValue())); c.setContributorAttributes(ca); } if (this.getEmail() != null) c.setContributorEmail(new ContributorEmail(this.getEmail().getValue())); if (this.getOrcid() != null) { ContributorOrcid contributorOrcid = new ContributorOrcid(this.getOrcid().getValue()); if (this.getUri() != null) { String uriString = this.getUri().getValue(); if (StringUtils.isNotBlank(uriString)) { try { URI uri = new URI(uriString); contributorOrcid.setHost(uri.getHost()); } catch (URISyntaxException e) { throw new RuntimeException("Problem parsing contributor orcid uri", e); } } } contributorOrcid.setUri(this.getUri().getValue()); c.setContributorOrcid(contributorOrcid); } if (this.getCreditName() != null) { CreditName cn = new CreditName(this.getCreditName().getValue()); c.setCreditName(cn); } return c; } public List<String> getErrors() { return errors; } public void setErrors(List<String> errors) { this.errors = errors; } public Text getContributorSequence() { return contributorSequence; } public void setContributorSequence(Text contributorSequence) { this.contributorSequence = contributorSequence; } public Text getContributorRole() { return contributorRole; } public void setContributorRole(Text contributorRole) { this.contributorRole = contributorRole; } public Text getEmail() { return email; } public void setEmail(Text email) { this.email = email; } public Text getOrcid() { return orcid; } public void setOrcid(Text orcid) { this.orcid = orcid; } public Text getUri() { return uri; } public void setUri(Text uri) { this.uri = uri; } public Text getCreditName() { return creditName; } public void setCreditName(Text creditName) { this.creditName = creditName; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((contributorRole == null) ? 0 : contributorRole.hashCode()); result = prime * result + ((contributorSequence == null) ? 0 : contributorSequence.hashCode()); result = prime * result + ((creditName == null) ? 0 : creditName.hashCode()); result = prime * result + ((email == null) ? 0 : email.hashCode()); result = prime * result + ((errors == null) ? 0 : errors.hashCode()); result = prime * result + ((orcid == null) ? 0 : orcid.hashCode()); result = prime * result + ((uri == null) ? 0 : uri.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; Contributor other = (Contributor) obj; if (contributorRole == null) { if (other.contributorRole != null) return false; } else if (!contributorRole.equals(other.contributorRole)) return false; if (contributorSequence == null) { if (other.contributorSequence != null) return false; } else if (!contributorSequence.equals(other.contributorSequence)) return false; if (creditName == null) { if (other.creditName != null) return false; } else if (!creditName.equals(other.creditName)) return false; if (email == null) { if (other.email != null) return false; } else if (!email.equals(other.email)) return false; if (errors == null) { if (other.errors != null) return false; } else if (!errors.equals(other.errors)) return false; if (orcid == null) { if (other.orcid != null) return false; } else if (!orcid.equals(other.orcid)) return false; if (uri == null) { if (other.uri != null) return false; } else if (!uri.equals(other.uri)) return false; return true; } }