001/*
002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Nuxeo - initial API and implementation
011 *
012 * $Id: MergedPermissionDescriptor.java 28439 2008-01-02 14:35:41Z sfermigier $
013 */
014package org.nuxeo.ecm.core.security;
015
016import java.util.ArrayList;
017import java.util.List;
018
019public class MergedPermissionDescriptor {
020
021    private String name;
022
023    private final List<String> subPermissions = new ArrayList<String>();
024
025    private final List<String> aliasPermissions = new ArrayList<String>();
026
027    public MergedPermissionDescriptor(PermissionDescriptor pd) {
028        mergeDescriptor(pd);
029    }
030
031    public void mergeDescriptor(PermissionDescriptor pd) {
032        name = pd.getName();
033        subPermissions.addAll(pd.getIncludePermissions());
034        subPermissions.removeAll(pd.getRemovePermissions());
035        aliasPermissions.addAll(pd.getAliasPermissions());
036        // no way to remove alias yet (YAGNI?)
037    }
038
039    public String getName() {
040        return name;
041    }
042
043    public List<String> getSubPermissions() {
044        return subPermissions;
045    }
046
047    public void removeSubPermission(String permissionName) {
048        subPermissions.remove(permissionName);
049    }
050
051    public List<String> getAliasPermissions() {
052        return aliasPermissions;
053    }
054
055    @Override
056    public String toString() {
057        return String.format("MergedPermission[%s]", name);
058    }
059
060}