/** * Licensed to the Austrian Association for Software Tool Integration (AASTI) * under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright * ownership. The AASTI licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.openengsb.connector.userprojects.ldap.internal.ldap; import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException; import org.apache.directory.shared.ldap.model.name.Dn; import org.openengsb.connector.userprojects.ldap.internal.LdapRuntimeException; import org.openengsb.domain.userprojects.model.Assignment; import org.openengsb.domain.userprojects.model.Attribute; import org.openengsb.domain.userprojects.model.Credential; import org.openengsb.domain.userprojects.model.Permission; import org.openengsb.domain.userprojects.model.Project; import org.openengsb.domain.userprojects.model.Role; import org.openengsb.domain.userprojects.model.User; /** * This class provides methods to build various DN's found in the DIT specific for the userprojects domain. * */ public final class DnFactory { public static final String OU_ASSIGNMENTS = "assignments"; public static final String OU_ATTRIBUTES = "attributes"; public static final String OU_CREDENTIALS = "credentials"; public static final String OU_PERMISSIONS = "permissions"; public static final String OU_PROJECTS = "projects"; public static final String OU_ROLES = "roles"; public static final String OU_USERS = "users"; public static final String CN_ASSIGNMENT_PROJECT = "project"; public static final String CN_ASSIGNMENT_USER = "user"; public static final String CN_PERMISSION_COMPONENT = "component"; public static final String CN_PERMISSION_ACTION = "action"; private DnFactory() { } public static Dn baseDn() { try { return new Dn(SchemaConstants.BASE_DN); } catch (LdapInvalidDnException e) { throw new LdapRuntimeException(e); } } public static Dn assignments() { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ASSIGNMENTS, baseDn()); } public static Dn permissions() { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_PERMISSIONS, baseDn()); } public static Dn projects() { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_PROJECTS, baseDn()); } public static Dn roles() { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ROLES, baseDn()); } public static Dn users() { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_USERS, baseDn()); } public static Dn assignment(Assignment assignment) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, assignment.toString(), assignments()); } public static Dn assignmentProject(Assignment assignment) { return assignmentChild(assignment, CN_ASSIGNMENT_PROJECT); } public static Dn assignmentProject(Dn parentDn) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, CN_ASSIGNMENT_PROJECT, parentDn); } public static Dn assignmentChild(Assignment assignment, String childCn) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, childCn, assignment(assignment)); } public static Dn assignmentUser(Assignment assignment) { return assignmentChild(assignment, CN_ASSIGNMENT_USER); } public static Dn assignmentUser(Dn parentDn) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, CN_ASSIGNMENT_USER, parentDn); } public static Dn assignmentPermissions(Dn parentDn) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_PERMISSIONS, parentDn); } public static Dn assignmentPermissions(Assignment assignment) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_PERMISSIONS, assignment(assignment)); } public static Dn assignmentPermission(Assignment assignment, String permission) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, permission, assignmentPermissions(assignment)); } public static Dn assignmentRoles(Dn parentDn) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ROLES, parentDn); } public static Dn assignmentRoles(Assignment assignment) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ROLES, assignment(assignment)); } public static Dn assignmentRole(Assignment assignment, String role) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, role, assignmentRoles(assignment)); } public static Dn permission(Permission permission) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, permission.toString(), permissions()); } public static Dn permissionChild(Permission permission, String childCn) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, childCn, permission(permission)); } public static Dn permissionComponent(Permission permission) { return permissionChild(permission, CN_PERMISSION_COMPONENT); } public static Dn permissionAction(Permission permission) { return permissionChild(permission, CN_PERMISSION_ACTION); } public static Dn project(Project project) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, project.getName(), projects()); } public static Dn projectAttributes(Project project) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ATTRIBUTES, project(project)); } public static Dn projectAttribute(Project project, Attribute attribute) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, attribute.getAttributeName(), projectAttributes(project)); } public static Dn role(Role role) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, role.getName(), roles()); } public static Dn rolePermissions(Role role) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_PERMISSIONS, role(role)); } public static Dn rolePermission(Role role, String permission) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, permission, rolePermissions(role)); } public static Dn roleSubroles(Role role) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ROLES, role(role)); } public static Dn roleSubrole(Role role, String subrole) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, subrole, roleSubroles(role)); } public static Dn user(User user) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, user.getUsername(), users()); } public static Dn userAttributes(User user) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_ATTRIBUTES, user(user)); } public static Dn userAttribute(User user, Attribute attribute) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, attribute.getAttributeName(), userAttributes(user)); } public static Dn userCredentials(User user) { return Utils.concatDn(SchemaConstants.OU_ATTRIBUTE, OU_CREDENTIALS, user(user)); } public static Dn userCredential(User user, Credential credential) { return Utils.concatDn(SchemaConstants.CN_ATTRIBUTE, credential.getType(), userCredentials(user)); } }