/* * Copyright (C) 2003-2010 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.social.core.manager; import java.util.List; import org.exoplatform.commons.utils.ListAccess; import org.exoplatform.social.core.identity.IdentityProvider; import org.exoplatform.social.core.identity.IdentityProviderPlugin; import org.exoplatform.social.core.identity.model.GlobalId; import org.exoplatform.social.core.identity.model.Identity; import org.exoplatform.social.core.identity.model.Profile; import org.exoplatform.social.core.profile.ProfileFilter; import org.exoplatform.social.core.profile.ProfileListener; import org.exoplatform.social.core.profile.ProfileListenerPlugin; import org.exoplatform.social.core.storage.api.IdentityStorage; /** * The Interface IdentityManager. * * @author <a href="mailto:vien_levan@exoplatform.com">vien_levan</a> * @author <a href="http://hoatle.net">hoatle</a> */ public interface IdentityManager { /** * Gets or creates an Identity object provided by a identity provider. * * @param providerId the name of identity provider name id. * @param remoteId the identifier that identifies the identity in the specific identity provider. * @param forceLoadOrReloadProfile force load or reload profile * @return the Identity object provided from identity provider. */ Identity getOrCreateIdentity(String providerId, String remoteId, boolean forceLoadOrReloadProfile); /** * Gets the stored identity by its identity id, this id is its uuid stored by JCR. * * @param identityId the stored JCR uuid. * @param forceLoadOrReloadProfile force load or reload profile * @return the found identity object */ Identity getIdentity(String identityId, boolean forceLoadOrReloadProfile); /** * Updates existing identity's properties. * * @param identity the identity to be updated. * @return the updated identity. * @since 1.2.0-GA */ Identity updateIdentity(Identity identity); /** * Deletes an existing identity. * * @param identity the existing identity. */ void deleteIdentity(Identity identity); /** * Gets identity list access which contains all the identities connected with the provided identity. * * @param identity the provided identity * @return the identity list access * @since 1.2.0-GA */ ListAccess<Identity> getConnectionsWithListAccess(Identity identity); /** * Gets a profile associated with a provided identity. * * @param identity the provided identity * @return the profile associated with the provided identity * @since 1.2.0-GA */ Profile getProfile(Identity identity); /** * Updates an existing profile. * * @param existingProfile the existing profile * @since 1.2.0-GA */ void updateProfile(Profile existingProfile); /** * Gets identity list access which contains all the identities from a provided provider which are filtered by profile * filter. * * @param providerId the provider name id * @param profileFilter the profile filter * @param forceLoadOrReloadProfile force load or reload profile or not * @return the identity list access * @since 1.2.0-GA */ ListAccess<Identity> getIdentitiesByProfileFilter(String providerId, ProfileFilter profileFilter, boolean forceLoadOrReloadProfile); /** * Adds an identity provider to identity manager. * * @param identityProvider an identity provider */ void addIdentityProvider(IdentityProvider<?> identityProvider); /** * Remove an existing identity provider. * * @param identityProvider the existing identity provider * @since 1.2.0-GA */ void removeIdentityProvider(IdentityProvider<?> identityProvider); /** * Registers a profile listener plugin by external compnent plugin mechanism. * * For example: * <pre> * <external-component-plugins> * <target-component>org.exoplatform.social.core.manager.IdentityManager</target-component> * <component-plugin> * <name>ProfileUpdatesPublisher</name> * <set-method>registerProfileListener</set-method> * <type>org.exoplatform.social.core.application.ProfileUpdatesPublisher</type> * </component-plugin> * </external-component-plugins> * </pre> * * @param profileListenerPlugin a profile listener plugin * @since 1.2.0-GA */ void registerProfileListener(ProfileListenerPlugin profileListenerPlugin); /** * Registers one or more {@link IdentityProvider} through an * {@link IdentityProviderPlugin}. * * @param plugin */ void registerIdentityProviders(IdentityProviderPlugin plugin); /** * Gets the identity by id and also loads his profile. * * @param id ID can be a social {@link GlobalId} or a raw identity such as in * {@link Identity#getId()} * @return null if nothing is found, or the Identity object * @see #getIdentity(String, boolean) * @deprecated Use {@link #getIdentity(String, boolean)} instead. * Will be removed by 1.3.x */ Identity getIdentity(String id); /** * Gets the identity by remote id. * * @param providerId the provider id * @param remoteId the remote id * @return the identity * @deprecated Use {@link #getOrCreateIdentity(String, String, boolean)} instead. * Will be moved by 1.3.x */ Identity getOrCreateIdentity(String providerId, String remoteId); /** * Gets the identities by profile filter. * * @param providerId the provider id * @param profileFilter the profile filter * @return the identities by profile filter * @throws Exception the exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesByProfileFilter(String providerId, ProfileFilter profileFilter) throws Exception; /** * Gets the identities by profile filter. * * @param providerId * @param profileFilter * @param offset * @param limit * @return identity list * @throws Exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesByProfileFilter(String providerId, ProfileFilter profileFilter, long offset, long limit) throws Exception; /** * Gets the identities by profile filter. * * @param profileFilter the profile filter * @return the identities by profile filter * @throws Exception the exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesByProfileFilter(ProfileFilter profileFilter) throws Exception; /** * Gets the identities by profile filter. * * @param profileFilter * @param offset * @param limit * @return the identities by profile filter * @throws Exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesByProfileFilter(ProfileFilter profileFilter, long offset, long limit) throws Exception; /** * Gets the identities filter by alpha bet. * * @param providerId the provider id * @param profileFilter the profile filter * @return the identities filter by alpha bet * @throws Exception the exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesFilterByAlphaBet(String providerId, ProfileFilter profileFilter) throws Exception; /** * Gets the identities fileter by alpha bet with offset and limit. * * @param providerId * @param profileFilter * @param offset * @param limit * @return the identitities list * @throws Exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesFilterByAlphaBet(String providerId, ProfileFilter profileFilter, long offset, long limit) throws Exception; /** * Gets the identities filter by alpha bet. * * @param profileFilter the profile filter * @return the identities filter by alpha bet * @throws Exception the exception * @deprecated Use {@link #getIdentitiesByProfileFilter(String, org.exoplatform.social.core.profile.ProfileFilter, * boolean)} instead. Will be removed by 1.3.x */ List<Identity> getIdentitiesFilterByAlphaBet(ProfileFilter profileFilter) throws Exception; /** * Gets identity from the provider, not in JCR. To make sure to gets the info * from JCR, use {@link #getOrCreateIdentity(String, String, boolean)}. * * @param providerId * @param remoteId * @param loadProfile * @return identity * @deprecated Use {@link #getOrCreateIdentity(String, String, boolean)} instead. * Will be removed by 1.3.x */ Identity getIdentity(String providerId, String remoteId, boolean loadProfile); /** * Gets the number of indentities. * * @return Number of identities. * @deprecated Will be removed by 1.3.x */ long getIdentitiesCount(String providerId); /** * Checks if identity existed or not. * * @param providerId * @param remoteId * @return true or false * @deprecated Will be removed by 1.3.x */ boolean identityExisted(String providerId, String remoteId); /** * Saves identity. * * @param identity the identity * @deprecated Use {@link #getOrCreateIdentity(String, String, boolean)} instead. * Will be removed by 1.3.x */ void saveIdentity(Identity identity); /** * Saves a profile. * * @param profile * @deprecated Use {@link #updateProfile(org.exoplatform.social.core.identity.model.Profile)} instead. * Will be removed by 1.3.x */ void saveProfile(Profile profile); /** * Adds or modifies properties of profile. Profile parameter is a lightweight * that contains only the property that you want to add or modify. NOTE: The * method will not delete the properties on old profile when the param profile * have not those keys. * * @param profile * @throws Exception * @deprecated Will be removed by 1.3.x */ void addOrModifyProfileProperties(Profile profile) throws Exception; /** * Updates avatar. * * @param p * @throws Exception * @deprecated Will be removed by 1.3.x */ void updateAvatar(Profile p); /** * Updates basic info. * * @param p * @throws Exception * @deprecated Will be removed by 1.3.x */ void updateBasicInfo(Profile p) throws Exception; /** * Updates the contact section of profile. * * @param p * @throws Exception * @deprecated Will be removed by 1.3.x */ void updateContactSection(Profile p) throws Exception; /** * Updates the experience section of profile. * * @param p * @throws Exception * @deprecated Will be removed by 1.3.x */ void updateExperienceSection(Profile p) throws Exception; /** * Updates the header section of profile. * * @param p * @throws Exception * @deprecated Will be removed by 1.3.x */ void updateHeaderSection(Profile p) throws Exception; /** * Gets the identities. * * @param providerId the provider id * @return the identities * @throws Exception the exception * @deprecated Use {@link #getIdentities(String, boolean)} instead. * Will be removed by 1.3.x */ List<Identity> getIdentities(String providerId) throws Exception; /** * Gets all the identities from a providerId. * * @param providerId the provider id * @param loadProfile the load profile * @return the identities * @deprecated Use {@link #getIdentities(String, boolean)} instead. * Will be removed by 1.3.x */ List<Identity> getIdentities(String providerId, boolean loadProfile) throws Exception; /** * Gets connections of an identity. * * @param ownerIdentity * @return list of identity * @throws Exception * @since 1.1.1 * @deprecated Use {@link #getConnectionsWithListAccess(org.exoplatform.social.core.identity.model.Identity)} * instead. Will be removed by 1.3.x */ List<Identity> getConnections(Identity ownerIdentity) throws Exception; /** * Gets the identity activityStorage. * * @return the activityStorage * @deprecated Will be removed by 1.3.x */ IdentityStorage getIdentityStorage(); /** * Gets identityStorage. * * @return identityStorage * @deprecated Will be removed by 1.3.x */ IdentityStorage getStorage(); /** * Registers the profile listener. * * @param listener * @deprecated Will be removed by 1.3.x */ void registerProfileListener(ProfileListener listener); /** * Unregisters the profile listener. * * @param listener * @deprecated Will be removed by 1.3.x */ void unregisterProfileListener(ProfileListener listener); /** * Registers a profile listener component plugin. * * @param plugin * @deprecated Use {@link #registerProfileListener(org.exoplatform.social.core.profile.ProfileListenerPlugin)} * instead. Will be removed by 1.3.x */ void addProfileListener(ProfileListenerPlugin plugin); }