/**
* <copyright> Copyright (c) 2008-2009 Jonas Helming, Maximilian Koegel. All rights reserved. This program and the
* accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this
* distribution, and is available at http://www.eclipse.org/legal/epl-v10.html </copyright>
*/
package org.eclipse.emf.emfstore.client.model.accesscontrol;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.emf.emfstore.server.accesscontrol.PermissionContext;
import org.eclipse.emf.emfstore.server.model.ProjectHistory;
import org.eclipse.emf.emfstore.server.model.ProjectId;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACOrgUnit;
import org.eclipse.emf.emfstore.server.model.accesscontrol.PermissionType;
import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec;
/**
* @author boehlke
*
*/
public class ClientPermissionContext implements PermissionContext {
private ProjectSpace projectSpace;
/**
* create a permission context using a session
*
* @param session
*/
public ClientPermissionContext(ProjectSpace projectSpace) {
this.projectSpace = projectSpace;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.accesscontrol.PermissionProvider.PermissionContext#resolvePermissionType(java.lang.String)
*/
public PermissionType resolvePermissionType(String typeId) {
// TODO: fail fatal if permission type not found
return projectSpace.getUsersession().getPermissionSetCache().getPermissionType(typeId);
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.accesscontrol.PermissionProvider.PermissionContext#resolveProjectHistory(java.lang.String)
*/
public ProjectHistory resolveProjectHistory(String projectId) {
throw new UnsupportedOperationException("cannot get project history on client");
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.accesscontrol.PermissionProvider.PermissionContext#resolveProject(java.lang.String,
* org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec)
*/
public Project resolveProject(String projectId, PrimaryVersionSpec version) {
if (projectSpace == null) {
throw new IllegalStateException("no project space");
}
if (!projectSpace.getProjectId().getId().equals(projectId) || !projectSpace.getBaseVersion().equals(version)) {
throw new IllegalArgumentException("can only resolve context project");
}
return projectSpace.getProject();
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.accesscontrol.PermissionProvider.PermissionContext#resolveProjectId(java.lang.String)
*/
public ProjectId resolveProjectId(String projectId) {
if (projectSpace == null) {
throw new IllegalStateException("no project space");
}
if (!projectSpace.getProjectId().getId().equals(projectId)) {
throw new IllegalArgumentException("can only resolve context project");
}
return EcoreUtil.copy(projectSpace.getProjectId());
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.accesscontrol.PermissionProvider.PermissionContext#resolveOrgUnit(java.lang.String)
*/
public ACOrgUnit resolveOrgUnit(String orgUnitId) {
throw new UnsupportedOperationException("cannot get org unit on client");
}
}