2 * This document is a part of the source code and related artifacts
3 * for CollectionSpace, an open source collections management system
4 * for museums and related institutions:
6 * http://www.collectionspace.org
7 * http://wiki.collectionspace.org
9 * Copyright 2009 University of California at Berkeley
11 * Licensed under the Educational Community License (ECL), Version 2.0.
12 * You may not use this file except in compliance with this License.
14 * You may obtain a copy of the ECL 2.0 License at
16 * https://source.collectionspace.org/collection-space/LICENSE.txt
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissionRoles and
22 * limitations under the License.
24 package org.collectionspace.services.authorization.storage;
26 import java.util.ArrayList;
27 import java.util.List;
29 import org.collectionspace.services.authorization.PermissionRole;
30 import org.collectionspace.services.authorization.PermissionRoleRel;
31 import org.collectionspace.services.authorization.PermissionsRolesList;
32 import org.collectionspace.services.authorization.SubjectType;
33 import org.collectionspace.services.common.context.ServiceContext;
35 import org.collectionspace.services.common.document.AbstractDocumentHandlerImpl;
36 import org.collectionspace.services.common.document.DocumentFilter;
37 import org.collectionspace.services.common.document.DocumentWrapper;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
42 * Document handler for PermissionRole association
45 public class PermissionRoleDocumentHandler
46 extends AbstractDocumentHandlerImpl<PermissionRole, PermissionsRolesList, List<PermissionRoleRel>, List<PermissionRoleRel>> {
48 private final Logger logger = LoggerFactory.getLogger(PermissionRoleDocumentHandler.class);
49 private PermissionRole permissionRole;
50 private PermissionsRolesList permissionRolesList;
53 public void handleCreate(DocumentWrapper<List<PermissionRoleRel>> wrapDoc) throws Exception {
54 fillCommonPart(getCommonPart(), wrapDoc);
58 public void handleUpdate(DocumentWrapper<List<PermissionRoleRel>> wrapDoc) throws Exception {
59 throw new UnsupportedOperationException("operation not relevant for PermissionRoleDocumentHandler");
63 public void completeUpdate(DocumentWrapper<List<PermissionRoleRel>> wrapDoc) throws Exception {
64 throw new UnsupportedOperationException("operation not relevant for PermissionRoleDocumentHandler");
68 public void handleGet(DocumentWrapper<List<PermissionRoleRel>> wrapDoc) throws Exception {
69 setCommonPart(extractCommonPart(wrapDoc));
70 getServiceContext().setOutput(permissionRole);
74 public void handleGetAll(DocumentWrapper<List<PermissionRoleRel>> wrapDoc) throws Exception {
75 throw new UnsupportedOperationException("operation not relevant for PermissionRoleDocumentHandler");
79 public PermissionRole extractCommonPart(
80 DocumentWrapper<List<PermissionRoleRel>> wrapDoc)
82 List<PermissionRoleRel> prrl = wrapDoc.getWrappedObject();
83 PermissionRole pr = new PermissionRole();
84 SubjectType subject = PermissionRoleUtil.getSubject(getServiceContext());
85 pr.setSubject(subject);
86 if (SubjectType.ROLE.equals(subject)) {
87 List<String> permIds = new ArrayList<String>();
88 permIds.add(prrl.get(0).getPermissionId());
89 pr.setPermissionIds(permIds);
90 List<String> roleIds = new ArrayList<String>();
91 for (PermissionRoleRel prr : prrl) {
92 roleIds.add(prr.getRoleId());
93 pr.setCreatedAt(prr.getCreatedAt());
94 pr.setUpdatedAt(prr.getUpdatedAt());
96 pr.setRoleIds(roleIds);
98 List<String> roleIds = new ArrayList<String>();
99 roleIds.add(prrl.get(0).getRoleId());
100 pr.setRoleIds(roleIds);
101 List<String> permIds = new ArrayList<String>();
102 for (PermissionRoleRel prr : prrl) {
103 permIds.add(prr.getPermissionId());
104 pr.setCreatedAt(prr.getCreatedAt());
105 pr.setUpdatedAt(prr.getUpdatedAt());
107 pr.setPermissionIds(permIds);
113 public void fillCommonPart(PermissionRole pr, DocumentWrapper<List<PermissionRoleRel>> wrapDoc)
115 List<PermissionRoleRel> prrl = wrapDoc.getWrappedObject();
116 SubjectType subject = pr.getSubject();
117 if (subject == null) {
118 //it is not required to give subject as URI determines the subject
119 subject = PermissionRoleUtil.getSubject(getServiceContext());
121 //subject mismatch should have been checked during validation
123 if (subject.equals(SubjectType.ROLE)) {
124 String permId = pr.getPermissionIds().get(0);
125 for (String roleId : pr.getRoleIds()) {
126 PermissionRoleRel prr = new PermissionRoleRel();
127 prr.setPermissionId(permId);
128 prr.setRoleId(roleId);
132 String roleId = pr.getRoleIds().get(0);
133 for (String permId : pr.getPermissionIds()) {
134 PermissionRoleRel prr = new PermissionRoleRel();
135 prr.setPermissionId(permId);
136 prr.setRoleId(roleId);
143 public PermissionsRolesList extractCommonPartList(
144 DocumentWrapper<List<PermissionRoleRel>> wrapDoc)
147 throw new UnsupportedOperationException("operation not relevant for PermissionRoleDocumentHandler");
151 public PermissionRole getCommonPart() {
152 return permissionRole;
156 public void setCommonPart(PermissionRole permissionRole) {
157 this.permissionRole = permissionRole;
161 public PermissionsRolesList getCommonPartList() {
162 return permissionRolesList;
166 public void setCommonPartList(PermissionsRolesList permissionRolesList) {
167 this.permissionRolesList = permissionRolesList;
171 public String getQProperty(
177 public DocumentFilter createDocumentFilter(ServiceContext ctx) {
178 return new DocumentFilter();