2 * //******************************************************************
4 * // Copyright 2016 Samsung Electronics All Rights Reserved.
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
8 * // Licensed under the Apache License, Version 2.0 (the "License");
9 * // you may not use this file except in compliance with the License.
10 * // You may obtain a copy of the License at
12 * // http://www.apache.org/licenses/LICENSE-2.0
14 * // Unless required by applicable law or agreed to in writing, software
15 * // distributed under the License is distributed on an "AS IS" BASIS,
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * // See the License for the specific language governing permissions and
18 * // limitations under the License.
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
22 package org.iotivity.cloud.accountserver.resources.acl.id;
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.UUID;
29 import org.iotivity.cloud.accountserver.Constants;
30 import org.iotivity.cloud.accountserver.db.AccountDBManager;
31 import org.iotivity.cloud.accountserver.db.AclTable;
32 import org.iotivity.cloud.accountserver.util.TypeCastingManager;
34 import org.iotivity.cloud.base.device.Device;
35 import org.iotivity.cloud.base.exception.ServerException.BadRequestException;
36 import org.iotivity.cloud.base.protocols.IRequest;
38 import org.iotivity.cloud.util.Log;
40 public class AclManager {
41 public HashMap<String, Acl> mAcls = new HashMap<>();
42 private TypeCastingManager<AclTable> mTypeAcl = new TypeCastingManager<AclTable>();
44 public HashMap<String, Object> createAcl(String oid, String di) {
45 HashMap<String, Object> responsePayload = new HashMap<>();
47 aclid = UUID.randomUUID().toString();
49 AclTable newAclTable = new AclTable(aclid, oid, di, null, null);
51 AccountDBManager.getInstance().insertRecord(Constants.ACL_TABLE,
52 mTypeAcl.convertObjectToMap(newAclTable));
53 mAcls.put(aclid, new Acl(aclid));
54 responsePayload.put(Constants.REQ_ACL_ID, aclid);
55 return responsePayload;
58 public Acl getAcl(String aclid) {
59 return mAcls.get(aclid);
62 public HashMap<String, Object> getAclid(String di) {
63 HashMap<String, Object> responsePayload = new HashMap<>();
65 HashMap<String, Object> condition = new HashMap<>();
66 condition.put(Constants.KEYFIELD_DI, di);
67 ArrayList<HashMap<String, Object>> result = AccountDBManager
68 .getInstance().selectRecord(Constants.ACL_TABLE, condition);
71 for (HashMap<String, Object> element : result) {
72 AclTable getAclTable = new AclTable();
73 getAclTable = Acl.convertMaptoAclObject(element);
74 aclid = getAclTable.getAclid();
75 responsePayload.put(Constants.KEYFIELD_ACLID, aclid);
76 return responsePayload;
82 public void deleteAcl(String aclid) {
83 HashMap<String, Object> condition = new HashMap<>();
84 condition.put(Constants.REQ_ACL_ID, aclid);
85 AccountDBManager.getInstance().deleteRecord(Constants.ACL_TABLE,
90 public void addAclACE(String aclid, List<HashMap<String, Object>> aclist) {
91 getAcl(aclid).addACE(aclist);
94 public void updateACE(String aclid, String aceid, HashMap<String, Object> ace) {
95 getAcl(aclid).updateACE(aceid, ace);
98 public void deleteAclACE(String aclid, String aceid) {
99 getAcl(aclid).deleteACE(aceid);
101 public void deleteAclAclist(String aclid) {
102 getAcl(aclid).deleteAclist();
105 public HashMap<String, Object> addAclSubscriber(String aclid, String di,
106 Device srcDevice, IRequest request) {
107 return getAcl(aclid).addSubscriber(di, srcDevice, request);
110 public HashMap<String, Object> removeAclSubscriber(String aclid, String di) {
111 return getAcl(aclid).removeSubscriber(di);
114 public HashMap<String, Object> getAclInfo(String aclid) {
115 return getAcl(aclid).getInfo();