package org.ovirt.engine.core.dao;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.UserProfile;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class UserProfileDaoImpl extends BaseDao implements UserProfileDao {
private static final RowMapper<UserProfile> userProfileRowMapper = (rs, rowNum) -> {
UserProfile entity = new UserProfile();
entity.setId(getGuidDefaultEmpty(rs, "profile_id"));
entity.setUserId(getGuidDefaultEmpty(rs, "user_id"));
entity.setSshPublicKeyId(getGuidDefaultEmpty(rs, "ssh_public_key_id"));
entity.setSshPublicKey(rs.getString("ssh_public_key"));
entity.setLoginName(rs.getString("login_name"));
entity.setUserPortalVmLoginAutomatically(rs.getBoolean("user_portal_vm_auto_login"));
return entity;
};
@Override
public UserProfile get(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("profile_id", id);
return getCallsHandler().executeRead("GetUserProfileByProfileId", userProfileRowMapper, parameterSource);
}
@Override
public UserProfile getByUserId(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("user_id", id);
return getCallsHandler().executeRead("GetUserProfileByUserId", userProfileRowMapper, parameterSource);
}
@Override
public List<UserProfile> getAll() {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource();
return getCallsHandler().executeReadList("GetAllFromUserProfiles", userProfileRowMapper, parameterSource);
}
private MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("profile_id", id);
}
@Override
public void save(UserProfile profile) {
getCallsHandler().executeModification("InsertUserProfile",
createIdParameterMapper(profile.getId())
.addValue("user_id", profile.getUserId())
.addValue("ssh_public_key_id", profile.getSshPublicKeyId())
.addValue("ssh_public_key", profile.getSshPublicKey())
.addValue("user_portal_vm_auto_login", profile.isUserPortalVmLoginAutomatically()));
}
@Override
public void update(UserProfile profile) {
getCallsHandler().executeModification("UpdateUserProfile",
createIdParameterMapper(profile.getId())
.addValue("user_id", profile.getUserId())
.addValue("ssh_public_key_id", profile.getSshPublicKeyId())
.addValue("ssh_public_key", profile.getSshPublicKey())
.addValue("user_portal_vm_auto_login", profile.isUserPortalVmLoginAutomatically()));
}
@Override
public void remove(Guid id) {
MapSqlParameterSource parameterSource = createIdParameterMapper(id);
getCallsHandler().executeModification("DeleteUserProfile", parameterSource);
}
}