/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.user.server; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.model.user.Profile; import org.eclipse.che.api.core.model.user.User; import org.eclipse.che.api.user.server.model.impl.ProfileImpl; import org.eclipse.che.api.user.server.spi.ProfileDao; import javax.inject.Inject; import javax.inject.Singleton; import static java.util.Objects.requireNonNull; /** * Preferences manager layer, simplifies prefernces service by * taking all the business logic out from the service and making that logic * easily reusable throughout the system. * * <p>The manager doesn't perform any bean validations and it * is expected that all the incoming objects are valid, nevertheless * this exactly the right place for performing business validations. * * @author Yevhenii Voevodin */ @Singleton public class ProfileManager { @Inject private ProfileDao profileDao; /** * Finds the profile related to the user with given {@code userId}. * * @param userId * the id to search the user's profile * @return found profile * @throws NullPointerException * when {@code userId} is null * @throws NotFoundException * when there is no profile for the user with the id {@code userId} * @throws ServerException * when any other error occurs */ public Profile getById(String userId) throws NotFoundException, ServerException { requireNonNull(userId, "Required non-null user id"); return profileDao.getById(userId); } /** * Creates a new user's profile . * * @param profile * new profile * @throws NullPointerException * when profile is null * @throws ConflictException * when profile for the user {@code profile.getUserId()} already exists * @throws ServerException * when any other error occurs */ public void create(Profile profile) throws ServerException, ConflictException { requireNonNull(profile, "Required non-null profile"); profileDao.create(new ProfileImpl(profile)); } /** * Updates current profile using replace strategy. * * <p>Note that {@link Profile#getEmail()} can't be updated using this method * as it is mirrored from the {@link User#getEmail()}. * * @param profile * profile update * @throws NullPointerException * when {@code profile} is null * @throws NotFoundException * when there is no profile for the user with the id {@code profile.getUserId()} * @throws ServerException * when any other error occurs */ public void update(Profile profile) throws NotFoundException, ServerException { requireNonNull(profile, "Required non-null profile"); profileDao.update(new ProfileImpl(profile)); } /** * Removes the user's profile. * * <p>Note that this method won't throw any exception when * user doesn't have the corresponding profile. * * @param userId * the id of the user, whose profile should be removed * @throws NullPointerException * when {@code id} is null * @throws ServerException * when any other error occurs */ public void remove(String userId) throws ServerException { requireNonNull(userId, "Required non-null user id"); profileDao.remove(userId); } }