Package com.cloud.bridge.persist.dao

Source Code of com.cloud.bridge.persist.dao.SAclDao

/*
* Copyright (C) 2011 Citrix Systems, Inc.  All rights reserved.
*
* Licensed 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;

/**
* @author Kelven Yang
*/
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;
  }
}
TOP

Related Classes of com.cloud.bridge.persist.dao.SAclDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.