/**
* =============================================================================
*
* 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.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.orcid.core.salesforce.model.CommunityType;
import org.orcid.core.salesforce.model.Contact;
import org.orcid.core.salesforce.model.Member;
import org.orcid.core.salesforce.model.MemberDetails;
import org.orcid.core.salesforce.model.SubMember;
public class ConsortiumForm implements ErrorsInterface, Serializable {
private static final long serialVersionUID = 1L;
private String accountId;
private List<String> errors = new ArrayList<String>();
private Text name;
private Text website;
private Text email;
private Text description;
private Text community;
private List<Contact> contactsList;
private List<SubMember> subMembers;
private Map<String, String> roleMap;
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
@Override
public List<String> getErrors() {
return errors;
}
@Override
public void setErrors(List<String> errors) {
this.errors = errors;
}
public Text getName() {
return name;
}
public void setName(Text name) {
this.name = name;
}
public Text getWebsite() {
return website;
}
public void setWebsite(Text website) {
this.website = website;
}
public Text getEmail() {
return email;
}
public void setEmail(Text email) {
this.email = email;
}
public Text getDescription() {
return description;
}
public void setDescription(Text description) {
this.description = description;
}
public Text getCommunity() {
return community;
}
public void setCommunity(Text community) {
this.community = community;
}
public List<Contact> getContactsList() {
return contactsList;
}
public void setContactsList(List<Contact> contactsList) {
this.contactsList = contactsList;
}
public List<SubMember> getSubMembers() {
return subMembers;
}
public void setSubMembers(List<SubMember> subMembers) {
this.subMembers = subMembers;
}
public Map<String, String> getRoleMap() {
return roleMap;
}
public void setRoleMap(Map<String, String> roleMap) {
this.roleMap = roleMap;
}
public static ConsortiumForm fromMemberDetails(MemberDetails memberDetails) {
ConsortiumForm form = new ConsortiumForm();
Member member = memberDetails.getMember();
form.setAccountId(member.getId());
form.setName(Text.valueOf(member.getPublicDisplayName()));
form.setWebsite(Text.valueOf(member.getWebsiteUrl().toString()));
form.setEmail(Text.valueOf(member.getPublicDisplayEmail()));
form.setDescription(Text.valueOf(member.getDescription()));
CommunityType researchCommunity = member.getResearchCommunity();
if (researchCommunity != null) {
form.setCommunity(Text.valueOf(researchCommunity.name()));
}
form.setSubMembers(memberDetails.getSubMembers());
return form;
}
public MemberDetails toMemberDetails() {
MemberDetails memberDetails = new MemberDetails();
Member member = new Member();
memberDetails.setMember(member);
member.setId(getAccountId());
member.setPublicDisplayName(getName().getValue());
try {
member.setWebsiteUrl(new URL(getWebsite().getValue()));
} catch (MalformedURLException e) {
throw new RuntimeException("Error parsing website", e);
}
member.setPublicDisplayEmail(getEmail().getValue());
member.setDescription(getDescription().getValue());
member.setResearchCommunity(CommunityType.valueOf(getCommunity().getValue()));
return memberDetails;
}
}