/**
* <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.server.accesscontrol;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.emf.emfstore.server.core.helper.Util;
import org.eclipse.emf.emfstore.server.model.ProjectHistory;
import org.eclipse.emf.emfstore.server.model.ProjectId;
import org.eclipse.emf.emfstore.server.model.ServerSpace;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACOrgUnit;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACOrgUnitId;
import org.eclipse.emf.emfstore.server.model.accesscontrol.AccesscontrolFactory;
import org.eclipse.emf.emfstore.server.model.accesscontrol.PermissionSet;
import org.eclipse.emf.emfstore.server.model.accesscontrol.PermissionType;
import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec;
import org.eclipse.emf.emfstore.server.model.versioning.Version;
/**
* @author boehlke
*
*/
public class ServerPermissionContext implements PermissionContext {
private ServerSpace serverSpace;
public ServerPermissionContext(ServerSpace serverSpace) {
this.serverSpace = serverSpace;
}
public PermissionType resolvePermissionType(String typeId) {
for (PermissionType type : getPermissionSet().getPermissionTypes()) {
if (type.getId().equals(typeId)) {
return type;
}
}
return null;
}
private PermissionSet getPermissionSet() {
return serverSpace.getPermissionSet();
}
public ProjectHistory resolveProjectHistory(String projectId) {
return Util.getProjectHistoryOrNull(projectId, serverSpace);
}
public ProjectId resolveProjectId(String projectId) {
ProjectHistory projectHistoryOrNull = Util.getProjectHistoryOrNull(projectId, serverSpace);
if (projectHistoryOrNull == null) {
return null;
}
return projectHistoryOrNull.getProjectId();
}
public ACOrgUnit resolveOrgUnit(String orgUnitId) {
ACOrgUnitId id = AccesscontrolFactory.eINSTANCE.createACOrgUnitId();
id.setId(orgUnitId);
return getPermissionSet().getOrgUnit(id);
}
public Project resolveProject(String projectId, PrimaryVersionSpec version) {
ProjectHistory projectHistoryOrNull = Util.getProjectHistoryOrNull(projectId, serverSpace);
if (projectHistoryOrNull == null) {
return null;
}
for (Version _version : projectHistoryOrNull.getVersions()) {
if (version.getIdentifier() == _version.getPrimarySpec().getIdentifier()) {
return _version.getProjectState();
}
}
return null;
}
}