Package org.projectforge.user

Source Code of org.projectforge.user.UserRights

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition 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.projectforge.user;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections.list.UnmodifiableList;
import org.projectforge.access.AccessChecker;
import org.projectforge.fibu.AuftragRight;
import org.projectforge.fibu.ProjektRight;
import org.projectforge.gantt.GanttChartRight;
import org.projectforge.humanresources.HRPlanningRight;
import org.projectforge.meb.MebRight;

public class UserRights
{
  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(UserRights.class);
  /**
   * FALSE, TRUE;
   */
  public static final UserRightValue[] FALSE_TRUE = new UserRightValue[] { UserRightValue.FALSE, UserRightValue.TRUE};

  /**
   * FALSE, READONLY, READWRITE;
   */
  public static final UserRightValue[] FALSE_READONLY_READWRITE = new UserRightValue[] { UserRightValue.FALSE, UserRightValue.READONLY,
    UserRightValue.READWRITE};

  /**
   * FALSE, READONLY, PARTLY_READWRITE, READWRITE;
   */
  public static final UserRightValue[] FALSE_READONLY_PARTLYREADWRITE_READWRITE = new UserRightValue[] { UserRightValue.FALSE,
    UserRightValue.READONLY, UserRightValue.PARTLYREADWRITE, UserRightValue.READWRITE};

  /**
   * READONLY, READWRITE;
   */
  public static final UserRightValue[] READONLY_READWRITE = new UserRightValue[] { UserRightValue.READONLY, UserRightValue.READWRITE};

  /**
   * READONLY, PARTY_READWRITE, READWRITE;
   */
  public static final UserRightValue[] READONLY_PARTLYREADWRITE_READWRITE = new UserRightValue[] { UserRightValue.READONLY, UserRightValue.PARTLYREADWRITE, UserRightValue.READWRITE};

  public static final ProjectForgeGroup[] FIBU_GROUPS = { ProjectForgeGroup.FINANCE_GROUP, ProjectForgeGroup.CONTROLLING_GROUP};

  public static final ProjectForgeGroup[] FIBU_ORGA_GROUPS = { ProjectForgeGroup.FINANCE_GROUP, ProjectForgeGroup.ORGA_TEAM,
    ProjectForgeGroup.CONTROLLING_GROUP};

  public static final ProjectForgeGroup[] FIBU_ORGA_PM_GROUPS = { ProjectForgeGroup.FINANCE_GROUP, ProjectForgeGroup.ORGA_TEAM,
    ProjectForgeGroup.CONTROLLING_GROUP, ProjectForgeGroup.PROJECT_MANAGER, ProjectForgeGroup.PROJECT_ASSISTANT};

  private static UserRights instance;

  private final Map<UserRightId, UserRight> rights = new HashMap<UserRightId, UserRight>();

  private final Map<String, UserRightId> rightIds = new HashMap<String, UserRightId>();

  private final List<UserRight> orderedRights = new ArrayList<UserRight>();

  private final AccessChecker accessChecker;

  public static UserRights instance()
  {
    return instance;
  }

  public static AccessChecker getAccessChecker()
  {
    if (instance == null) {
      throw new IllegalStateException("UserRights not yet initalized, so AccessChecker is not yet available.");
    }
    return instance.accessChecker;
  }

  public static UserGroupCache getUserGroupCache()
  {
    return getAccessChecker().getUserGroupCache();
  }

  public static UserRights initialize(final AccessChecker accessChecker)
  {
    if (instance != null) {
      // log.warn("UserRights already initialized. Method initialized was called twice!");
      return instance;
    }
    instance = new UserRights(accessChecker);
    return instance;
  }

  public UserRight getRight(final UserRightId id)
  {
    return rights.get(id);
  }

  public UserRightId getRightId(final String userRightId)
  {
    final UserRightId rightId =  rightIds.get(userRightId);
    if (rightId == null) {
      log.warn("UserRightId with id '" + userRightId + "' not found (may-be not yet initialized).");
    }
    return rightId;
  }

  @SuppressWarnings("unchecked")
  public List<UserRight> getOrderedRights()
  {
    return UnmodifiableList.decorate(orderedRights);
  }

  private UserRights(final AccessChecker accessChecker)
  {
    this.accessChecker = accessChecker;



    addRight(UserRightCategory.FIBU, UserRightId.FIBU_EMPLOYEE, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS).setReadOnlyForControlling();
    addRight(UserRightCategory.FIBU, UserRightId.FIBU_EMPLOYEE_SALARY, FALSE_READONLY_READWRITE, FIBU_GROUPS).setAvailableGroupRightValues(
        ProjectForgeGroup.CONTROLLING_GROUP, UserRightValue.FALSE, UserRightValue.READONLY);
    addRight(UserRightCategory.FIBU, UserRightId.FIBU_AUSGANGSRECHNUNGEN, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS)
    .setReadOnlyForControlling();
    addRight(UserRightCategory.FIBU, UserRightId.FIBU_EINGANGSRECHNUNGEN, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS)
    .setReadOnlyForControlling();
    addRight(UserRightCategory.FIBU, UserRightId.FIBU_DATEV_IMPORT, FALSE_TRUE, FIBU_GROUPS);
    addRight(UserRightCategory.FIBU, UserRightId.FIBU_COST_UNIT, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS).setReadOnlyForControlling();
    addRight(UserRightCategory.FIBU, UserRightId.FIBU_ACCOUNTS, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS).setReadOnlyForControlling();
    addRight(UserRightCategory.ORGA, UserRightId.ORGA_CONTRACTS, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS).setReadOnlyForControlling();
    addRight(UserRightCategory.ORGA, UserRightId.ORGA_INCOMING_MAIL, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS)
    .setReadOnlyForControlling();
    addRight(UserRightCategory.ORGA, UserRightId.ORGA_OUTGOING_MAIL, FALSE_READONLY_READWRITE, FIBU_ORGA_GROUPS)
    .setReadOnlyForControlling();
    addRight(new ProjektRight());
    addRight(new AuftragRight());
    addRight(new MebRight());
    addRight(new GanttChartRight());
    addRight(new HRPlanningRight());
  }

  public UserGroupsRight addRight(final UserRightCategory category, final UserRightId id, final UserRightValue[] rightValues,
      final ProjectForgeGroup... fibuGroups)
  {
    final UserGroupsRight right = new UserGroupsRight(id, category, rightValues, fibuGroups);
    addRight(right);
    return right;
  }

  public void addRight(final UserRight right)
  {
    final UserRightId userRightId = right.getId();
    rights.put(right.getId(), right);
    rightIds.put(userRightId.getId(), userRightId);
    orderedRights.add(right);
  }
}
TOP

Related Classes of org.projectforge.user.UserRights

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.