/**
* =============================================================================
*
* 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.manager;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import org.orcid.core.manager.read_only.ProfileEntityManagerReadOnly;
import org.orcid.jaxb.model.clientgroup.MemberType;
import org.orcid.jaxb.model.common_v2.Locale;
import org.orcid.jaxb.model.message.OrcidProfile;
import org.orcid.jaxb.model.common_v2.Visibility;
import org.orcid.pojo.ApplicationSummary;
import org.orcid.pojo.ajaxForm.Claim;
/**
* User: Declan Newman (declan) Date: 10/02/2012 </p>
*/
public interface ProfileEntityManager extends ProfileEntityManagerReadOnly {
String findByCreditName(String creditName);
boolean orcidExists(String orcid);
boolean hasBeenGivenPermissionTo(String giverOrcid, String receiverOrcid);
boolean existsAndNotClaimedAndBelongsTo(String messageOrcid, String clientId);
boolean deprecateProfile(String deprecated, String primary);
boolean isProfileDeprecated(String orcid);
boolean enableDeveloperTools(OrcidProfile profile);
boolean disableDeveloperTools(OrcidProfile profile);
boolean isProfileClaimed(String orcid);
boolean isProfileClaimedByEmail(String email);
MemberType getGroupType(String orcid);
boolean isDeactivated(String deactivated);
boolean unreviewProfile(String orcid);
boolean reviewProfile(String orcid);
List<ApplicationSummary> getApplications(String orcid);
void disableApplication(Long tokenId, String userOrcid);
String getOrcidHash(String orcid) throws NoSuchAlgorithmException;
String retrivePublicDisplayName(String orcid);
boolean claimProfileAndUpdatePreferences(String orcid, String email, Locale locale, Claim claim);
boolean deactivateRecord(String orcid);
boolean reactivateRecord(String orcid);
void updateLastModifed(String orcid);
void updateLocale(String orcid, Locale locale);
void reactivate(String orcid, String givenNames, String familyName, String password, Visibility defaultVisibility);
public void updatePassword(String orcid, String encryptedPassword);
public void updateSecurityQuestion(String orcid, Integer questionId, String answer);
public void updateIpAddress(String orcid, String ipAddress);
public Locale retrieveLocale(String orcid);
boolean lockProfile(String orcid, String lockReason, String description);
boolean unlockProfile(String orcid);
}