Package org.saiku.service.user

Source Code of org.saiku.service.user.UserService

/*
* Copyright 2014 OSBI Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.saiku.service.user;

import org.saiku.database.JdbcUserDAO;
import org.saiku.database.dto.SaikuUser;
import org.saiku.service.ISessionService;
import org.saiku.service.datasource.DatasourceService;
import org.saiku.service.datasource.IDatasourceManager;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
* UserService.
*/
public class UserService implements IUserManager, Serializable {

  private JdbcUserDAO uDAO;

  private IDatasourceManager iDatasourceManager;
  private DatasourceService datasourceService;
  private ISessionService sessionService;
  private List<String> adminRoles;

  public void setAdminRoles(List<String> adminRoles) {
    this.adminRoles = adminRoles;
  }

  public void setJdbcUserDAO(JdbcUserDAO jdbcUserDAO) {
    this.uDAO = jdbcUserDAO;
  }

  public void setiDatasourceManager(IDatasourceManager repo) {
    this.iDatasourceManager = repo;
  }


  public void setSessionService(ISessionService sessionService) {
    this.sessionService = sessionService;
  }

  public DatasourceService getDatasourceService() {
    return datasourceService;
  }

  public void setDatasourceService(DatasourceService datasourceService) {
    this.datasourceService = datasourceService;
  }

  @NotNull
  public SaikuUser addUser(@NotNull SaikuUser u) {
    uDAO.insert(u);
    uDAO.insertRole(u);
    iDatasourceManager.createUser(u.getUsername());
    return u;
  }

  public boolean deleteUser(@NotNull SaikuUser u) {
    uDAO.deleteUser(u);
    iDatasourceManager.deleteFolder("homes/home:" + u.getUsername());
    return true;
  }

  @Nullable
  public SaikuUser setUser(SaikuUser u) {
    return null;
  }

  @NotNull
  public List<SaikuUser> getUsers() {
    Collection users = uDAO.findAllUsers();
    List<SaikuUser> l = new ArrayList<SaikuUser>();
    for (Object user : users) {
      l.add((SaikuUser) user);

    }
    return l;
  }

  public SaikuUser getUser(int id) {
    return uDAO.findByUserId(id);
  }

  public String[] getRoles(SaikuUser user) {
    return uDAO.getRoles(user);
  }

  public void addRole(SaikuUser u) {
    uDAO.insertRole(u);
  }

  public void removeRole(SaikuUser u) {
    uDAO.deleteRole(u);
  }

  public void removeUser(String username) {
    SaikuUser u = getUser(Integer.parseInt(username));

    uDAO.deleteUser(username);

    iDatasourceManager.deleteFolder("homes/" + u.getUsername());

  }

  public SaikuUser updateUser(SaikuUser u) {
    SaikuUser user = uDAO.updateUser(u);
    uDAO.updateRoles(u);

    return user;

  }

  public boolean isAdmin() {
    List<String> roles = (List<String>) sessionService.getAllSessionObjects().get("roles");

    return !Collections.disjoint(roles, adminRoles);

  }

  public void checkFolders() {

    String username = (String) sessionService.getAllSessionObjects().get("username");

    boolean home = true;
    if (username != null) {
      home = datasourceService.hasHomeDirectory(username);
    }
    if (!home) {
      datasourceService.createUserHome(username);
    }


  }

  public List<String> getAdminRoles() {
    return adminRoles;
  }
}
TOP

Related Classes of org.saiku.service.user.UserService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.