/**
* =============================================================================
*
* 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.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.orcid.jaxb.model.clientgroup.ClientType;
import org.orcid.jaxb.model.clientgroup.OrcidClient;
import org.orcid.jaxb.model.clientgroup.RedirectUris;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.ClientRedirectUriEntity;
public class Client implements ErrorsInterface, Serializable {
private static final long serialVersionUID = 2L;
private List<String> errors = new ArrayList<String>();
private Text displayName;
private Text website;
private Text shortDescription;
private Text clientId;
private Text clientSecret;
private Text type;
private Text memberId;
private Text memberName;
private Text authenticationProviderId;
private Checkbox persistentTokenEnabled;
private List<RedirectUri> redirectUris;
private Set<String> scopes;
private Checkbox allowAutoDeprecate;
public static Client valueOf(ClientDetailsEntity clientDetails) {
Client client = new Client();
if (clientDetails != null) {
client.setClientId(Text.valueOf(clientDetails.getClientId()));
client.setDisplayName(Text.valueOf(clientDetails.getClientName()));
client.setShortDescription(Text.valueOf(clientDetails.getClientDescription()));
client.setWebsite(Text.valueOf(clientDetails.getClientWebsite()));
client.redirectUris = new ArrayList<RedirectUri>();
if (clientDetails.getClientRegisteredRedirectUris() != null) {
for (ClientRedirectUriEntity rUri : clientDetails.getClientRegisteredRedirectUris()) {
client.redirectUris.add(RedirectUri.valueOf(rUri));
}
}
client.persistentTokenEnabled = new Checkbox();
client.persistentTokenEnabled.setValue(clientDetails.isPersistentTokensEnabled());
if(clientDetails.getClientType() != null)
client.setType(Text.valueOf(clientDetails.getClientType().value()));
if(clientDetails.isScoped())
client.setScopes(clientDetails.getScope());
client.setMemberId(Text.valueOf(clientDetails.getGroupProfileId()));
if(!PojoUtil.isEmpty(clientDetails.getAuthenticationProviderId())) {
client.setAuthenticationProviderId(Text.valueOf(clientDetails.getAuthenticationProviderId()));
}
client.setAllowAutoDeprecate(Checkbox.valueOf(clientDetails.getAllowAutoDeprecate()));
}
return client;
}
public static List<Client> valueOf(List<ClientDetailsEntity> clientDetails) {
List<Client> clients = new ArrayList<Client>();
for(ClientDetailsEntity entity : clientDetails) {
clients.add(Client.valueOf(entity));
}
return clients;
}
public static Client valueOf(OrcidClient orcidClient) {
Client client = new Client();
client.setClientId(Text.valueOf(orcidClient.getClientId()));
client.setClientSecret(Text.valueOf(orcidClient.getClientSecret()));
client.setDisplayName(Text.valueOf(orcidClient.getDisplayName()));
client.setShortDescription(Text.valueOf(orcidClient.getShortDescription()));
if (orcidClient.getType() != null)
client.setType(Text.valueOf(orcidClient.getType().value()));
client.setWebsite(Text.valueOf(orcidClient.getWebsite()));
Checkbox persistentTokenEnabled = new Checkbox();
persistentTokenEnabled.setValue(orcidClient.isPersistentTokenEnabled());
client.setPersistentTokenEnabled(persistentTokenEnabled);
List<RedirectUri> redirectUris = new ArrayList<RedirectUri>();
RedirectUris orcidRedirectUris = orcidClient.getRedirectUris();
if (orcidRedirectUris != null && orcidRedirectUris.getRedirectUri() != null) {
for (org.orcid.jaxb.model.clientgroup.RedirectUri orcidRedirectUri : orcidRedirectUris.getRedirectUri()) {
redirectUris.add(RedirectUri.toRedirectUri(orcidRedirectUri));
}
}
if(orcidClient.getIdp() != null) {
client.setAuthenticationProviderId(Text.valueOf(orcidClient.getIdp()));
}
client.setRedirectUris(redirectUris);
client.setAllowAutoDeprecate(Checkbox.valueOf(orcidClient.getAllowAutoDeprecate()));
return client;
}
public OrcidClient toOrcidClient() {
OrcidClient orcidClient = new OrcidClient();
orcidClient.setDisplayName(this.displayName.getValue());
orcidClient.setWebsite(this.website.getValue());
orcidClient.setShortDescription(this.shortDescription.getValue());
orcidClient.setClientId(this.clientId.getValue());
if(this.getAuthenticationProviderId() != null) {
orcidClient.setIdp(this.getAuthenticationProviderId().getValue());
}
if (!PojoUtil.isEmpty(this.clientSecret))
orcidClient.setClientSecret(this.clientSecret.getValue());
if (!PojoUtil.isEmpty(this.type))
orcidClient.setType(ClientType.fromValue(this.type.getValue()));
RedirectUris redirectUris = new RedirectUris();
for (RedirectUri redirectUri : this.redirectUris) {
redirectUris.getRedirectUri().add(redirectUri.toRedirectUri());
}
orcidClient.setRedirectUris(redirectUris);
if(persistentTokenEnabled != null)
orcidClient.setPersistentTokenEnabled(persistentTokenEnabled.getValue());
orcidClient.setAllowAutoDeprecate(this.getAllowAutoDeprecate() == null ? false : this.getAllowAutoDeprecate().getValue());
return orcidClient;
}
public List<String> getErrors() {
return errors;
}
public void setErrors(List<String> errors) {
this.errors = errors;
}
public Text getDisplayName() {
return displayName;
}
public void setDisplayName(Text displayName) {
this.displayName = displayName;
}
public Text getWebsite() {
return website;
}
public void setWebsite(Text website) {
this.website = website;
}
public Text getShortDescription() {
return shortDescription;
}
public void setShortDescription(Text shortDescription) {
this.shortDescription = shortDescription;
}
public Text getClientId() {
return clientId;
}
public void setClientId(Text clientId) {
this.clientId = clientId;
}
public Text getClientSecret() {
return clientSecret;
}
public void setClientSecret(Text clientSecret) {
this.clientSecret = clientSecret;
}
public Text getType() {
return type;
}
public void setType(Text type) {
this.type = type;
}
public List<RedirectUri> getRedirectUris() {
return redirectUris;
}
public void setRedirectUris(List<RedirectUri> redirectUris) {
this.redirectUris = redirectUris;
}
public Checkbox getPersistentTokenEnabled() {
return persistentTokenEnabled;
}
public void setPersistentTokenEnabled(Checkbox persistentTokenEnabled) {
this.persistentTokenEnabled = persistentTokenEnabled;
}
public void setScopes(Set<String> scopes) {
this.scopes = scopes;
}
public Set<String> getScopes() {
return scopes;
}
public Text getMemberId() {
return memberId;
}
public void setMemberId(Text memberId) {
this.memberId = memberId;
}
public Text getMemberName() {
return memberName;
}
public void setMemberName(Text memberName) {
this.memberName = memberName;
}
public Text getAuthenticationProviderId() {
return authenticationProviderId;
}
public void setAuthenticationProviderId(Text authenticationProviderId) {
this.authenticationProviderId = authenticationProviderId;
}
public Checkbox getAllowAutoDeprecate() {
return allowAutoDeprecate;
}
public void setAllowAutoDeprecate(Checkbox allowAutoDeprecate) {
this.allowAutoDeprecate = allowAutoDeprecate;
}
}