77 lines
2.7 KiB
Java

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF 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 com.cloud.bridge.persist.dao;
import java.util.Date;
import java.util.List;
import com.cloud.bridge.model.SAcl;
import com.cloud.bridge.persist.EntityDao;
import com.cloud.bridge.persist.PersistContext;
import com.cloud.bridge.service.core.s3.S3AccessControlList;
import com.cloud.bridge.service.core.s3.S3Grant;
public class SAclDao extends EntityDao<SAcl> {
public SAclDao() {
super(SAcl.class);
}
public List<SAcl> listGrants(String target, long targetId) {
return queryEntities("from SAcl where target=? and targetId=? order by grantOrder asc",
new Object[] { target, new Long(targetId)});
}
public List<SAcl> listGrants(String target, long targetId, String userCanonicalId) {
return queryEntities("from SAcl where target=? and targetId=? and granteeCanonicalId=? order by grantOrder asc",
new Object[] { target, new Long(targetId), userCanonicalId });
}
public void save(String target, long targetId, S3AccessControlList acl) {
// -> the target's ACLs are being redefined
executeUpdate("delete from SAcl where target=? and targetId=?", new Object[] { target, new Long(targetId)});
if(acl != null) {
S3Grant[] grants = acl.getGrants();
if(grants != null && grants.length > 0) {
int grantOrder = 1;
for(S3Grant grant : grants) {
save(target, targetId, grant, grantOrder++);
}
}
}
}
public SAcl save(String target, long targetId, S3Grant grant, int grantOrder) {
SAcl aclEntry = new SAcl();
aclEntry.setTarget(target);
aclEntry.setTargetId(targetId);
aclEntry.setGrantOrder(grantOrder);
int grantee = grant.getGrantee();
aclEntry.setGranteeType(grantee);
aclEntry.setPermission(grant.getPermission());
aclEntry.setGranteeCanonicalId(grant.getCanonicalUserID());
Date ts = new Date();
aclEntry.setCreateTime(ts);
aclEntry.setLastModifiedTime(ts);
PersistContext.getSession().save(aclEntry);
return aclEntry;
}
}