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 permissions and
22 * limitations under the License.
24 package org.collectionspace.services.authorization.storage;
26 import java.util.ArrayList;
27 import java.util.Date;
28 import java.util.List;
29 import java.util.UUID;
31 import org.collectionspace.services.authorization.Role;
32 import org.collectionspace.services.authorization.RolesList;
34 import org.collectionspace.services.common.document.AbstractDocumentHandlerImpl;
35 import org.collectionspace.services.common.document.DocumentFilter;
36 import org.collectionspace.services.common.document.DocumentWrapper;
37 import org.collectionspace.services.common.document.JaxbUtils;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
42 * Document handler for Role
45 public class RoleDocumentHandler
46 extends AbstractDocumentHandlerImpl<Role, RolesList, Role, List> {
48 private final Logger logger = LoggerFactory.getLogger(RoleDocumentHandler.class);
50 private RolesList rolesList;
53 public void handleCreate(DocumentWrapper<Role> wrapDoc) throws Exception {
54 String id = UUID.randomUUID().toString();
55 Role role = wrapDoc.getWrappedObject();
57 //FIXME: if admin updating the role is a CS admin rather than
58 //the tenant admin, tenant id should be retrieved from the request
59 role.setTenantId(getServiceContext().getTenantId());
63 public void handleUpdate(DocumentWrapper<Role> wrapDoc) throws Exception {
64 Role roleFound = wrapDoc.getWrappedObject();
65 Role roleReceived = getCommonPart();
66 merge(roleReceived, roleFound);
70 * merge manually merges the from from to the to role
71 * -this method is created due to inefficiency of JPA EM merge
76 private Role merge(Role from, Role to) {
77 if (from.getRoleName() != null) {
78 to.setRoleName(from.getRoleName());
80 if (from.getRoleGroup() != null) {
81 to.setRoleGroup(from.getRoleGroup());
83 if (from.getDescription() != null) {
84 to.setDescription(from.getDescription());
86 if (logger.isDebugEnabled()) {
87 logger.debug("merged role=" + JaxbUtils.toString(to, Role.class));
93 public void completeUpdate(DocumentWrapper<Role> wrapDoc) throws Exception {
94 Role upAcc = wrapDoc.getWrappedObject();
95 getServiceContext().setOutput(role);
100 public void handleGet(DocumentWrapper<Role> wrapDoc) throws Exception {
101 setCommonPart(extractCommonPart(wrapDoc));
102 sanitize(getCommonPart());
103 getServiceContext().setOutput(role);
107 public void handleGetAll(DocumentWrapper<List> wrapDoc) throws Exception {
108 RolesList rolesList = extractCommonPartList(wrapDoc);
109 setCommonPartList(rolesList);
110 getServiceContext().setOutput(getCommonPartList());
114 public Role extractCommonPart(
115 DocumentWrapper<Role> wrapDoc)
117 return wrapDoc.getWrappedObject();
121 public void fillCommonPart(Role obj, DocumentWrapper<Role> wrapDoc)
123 throw new UnsupportedOperationException("operation not relevant for AccountDocumentHandler");
127 public RolesList extractCommonPartList(
128 DocumentWrapper<List> wrapDoc)
131 RolesList rolesList = new RolesList();
132 List<Role> list = new ArrayList<Role>();
133 rolesList.setRoles(list);
134 for (Object obj : wrapDoc.getWrappedObject()) {
135 Role role = (Role) obj;
143 public Role getCommonPart() {
148 public void setCommonPart(Role role) {
153 public RolesList getCommonPartList() {
158 public void setCommonPartList(RolesList rolesList) {
159 this.rolesList = rolesList;
163 public String getQProperty(
169 public DocumentFilter createDocumentFilter() {
170 DocumentFilter filter = new RoleJpaFilter(this.getServiceContext());
175 * sanitize removes data not needed to be sent to the consumer
178 private void sanitize(Role role) {
179 role.setTenantId(null);