org.opentestsystem.shared.security.domain.ProgmanPermissionsResolver.java Source code

Java tutorial

Introduction

Here is the source code for org.opentestsystem.shared.security.domain.ProgmanPermissionsResolver.java

Source

/*******************************************************************************
 * Educational Online Test Delivery System
 * Copyright (c) 2013 American Institutes for Research
 *
 * Distributed under the AIR Open Source License, Version 1.0
 * See accompanying file AIR-License-1_0.txt or at
 * http://www.smarterapp.org/documents/American_Institutes_for_Research_Open_Source_Software_License.pdf
 ******************************************************************************/
package org.opentestsystem.shared.security.domain;

import org.opentestsystem.shared.progman.domain.Permissions;
import org.springframework.stereotype.Component;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;

@Component
public class ProgmanPermissionsResolver implements RoleSpecificPermisionsResolver {

    private final static Multimap<String, SbacPermission> permissions = ArrayListMultimap.create();

    @Override
    public Multimap<String, SbacPermission> getRoleBindings(final String componentName) {
        return getPermissions(componentName);
    }

    //lazy init
    private Multimap<String, SbacPermission> getPermissions(final String componentName) {
        if (permissions.isEmpty()) {
            Multimap<String, SbacPermission> tempPers = ArrayListMultimap.create();
            //Administrator Role
            for (String permString : Permissions.getPermissionStrings()) {
                SbacPermission perm = new SbacPermission();
                perm.setName(permString);
                perm.setComponentName(componentName);
                tempPers.put("Administrator", perm);
                tempPers.put("Program Management Admin", perm);
            }
            //Program Management Read
            SbacPermission perm = new SbacPermission();
            perm.setName(Permissions.PROGMAN_READ.getTitle());
            perm.setComponentName(componentName);
            tempPers.put("Program Management Read", perm);
            //wait till the end to avoid parial load with sync calls
            permissions.putAll(tempPers);
        }
        return permissions;
    }
}