*/
package org.iotivity.cloud.accountserver.db;
-public class GroupTable {
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+
+import org.iotivity.cloud.accountserver.Constants;
+import org.iotivity.cloud.base.exception.ServerException.BadRequestException;
- private String gid;
- private Object midlist;
- private Object dilist;
- private String gmid;
- private String gacl;
- private String gtype;
+public class GroupTable {
+ private String gid = null;
+ private String gname = null;
+ private String owner = null;
+ private ArrayList<String> members = null;
+ private ArrayList<String> masters = null;
+ private ArrayList<String> devices = null;
+ private ArrayList<Object> resources = null;
+ private ArrayList<String> subgroups = null;
+ private String parent = null;
+ private ArrayList<Object> gacl = null;
public GroupTable() {
+ setGacl(makeGAcl());
}
- public GroupTable(String gid, Object midlist, Object dilist, String gmid,
- String gacl, String gtype) {
+ private ArrayList<Object> makeGAcl() {
+ HashMap<String, Object> publicGAcl = new HashMap<>();
+ publicGAcl.put(Constants.KEYFIELD_ACE_PERMISSION, (int) 31);
+ ArrayList<HashMap<String, Object>> resources = new ArrayList<>();
+ HashMap<String, Object> resource = new HashMap<>();
+ resource.put(Constants.KEYFIELD_ACE_RESOURCE_HREF, "*");
+ resource.put(Constants.KEYFIELD_ACE_RESOURCE_RT,
+ new ArrayList<String>());
+ resource.put(Constants.KEYFIELD_ACE_RESOURCE_IF,
+ Arrays.asList(Constants.DEFAULT_INTERFACE));
+ resources.add(resource);
+ publicGAcl.put(Constants.KEYFIELD_GROUP_RESOURCES, resources);
+
+ ArrayList<Object> gaclList = new ArrayList<>();
+ gaclList.add(publicGAcl);
+
+ return gaclList;
+ }
+
+ public GroupTable(String gid, String gname, String owner,
+ ArrayList<String> masters, ArrayList<String> members,
+ ArrayList<String> devices, ArrayList<Object> resources,
+ ArrayList<String> subgroups, String parent,
+ ArrayList<Object> gacl) {
this.gid = gid;
- this.midlist = midlist;
- this.dilist = dilist;
- this.gmid = gmid;
+ this.gname = gname;
+ this.owner = owner;
+ this.members = members;
+ this.masters = masters;
+ this.devices = devices;
+ this.resources = resources;
+ this.subgroups = subgroups;
+ this.parent = parent;
this.gacl = gacl;
- this.gtype = gtype;
}
+ /**
+ * API to get group ID
+ *
+ * @return group ID
+ */
public String getGid() {
return gid;
}
- public void setGid(Object gid) {
+ /**
+ * API to set group ID
+ *
+ * @param gid
+ * group ID to be set
+ */
+ public void setGid(String gid) {
this.gid = gid.toString();
}
- public Object getMidlist() {
- return midlist;
+ public String getGname() {
+ return gname;
+ }
+
+ public void setGname(String gname) {
+ this.gname = gname.toString();
+ }
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public void setOwner(String owner) {
+ this.owner = owner.toString();
+ }
+
+ public ArrayList<String> getMasters() {
+ return masters;
}
- public void setMidlist(Object midlist) {
- this.midlist = midlist;
+ public void setMasters(ArrayList<String> masters) {
+ this.masters = masters;
}
- public Object getDilist() {
- return dilist;
+ public ArrayList<String> getMembers() {
+ return members;
}
- public void setDilist(Object dilist) {
- this.dilist = dilist;
+ public void setMembers(ArrayList<String> members) {
+ this.members = members;
}
- public String getGmid() {
- return gmid;
+ public ArrayList<String> getDevices() {
+ return devices;
}
- public void setGmid(Object gmid) {
- this.gmid = gmid.toString();
+ public void setDevices(ArrayList<String> devices) {
+ this.devices = devices;
}
- public String getGacl() {
+ public ArrayList<Object> getResources() {
+ return resources;
+ }
+
+ public void setResources(ArrayList<Object> resources) {
+ this.resources = resources;
+ }
+
+ public ArrayList<String> getSubgroups() {
+ return subgroups;
+ }
+
+ public void setSubgroups(ArrayList<String> subgroups) {
+ this.subgroups = subgroups;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public void setParent(String parentGid) {
+ this.parent = parentGid;
+ }
+
+ /**
+ * API to get group ACL
+ *
+ * @return group ACL
+ */
+ public ArrayList<Object> getGacl() {
return gacl;
}
- public void setGacl(Object gacl) {
- this.gacl = gacl.toString();
+ /**
+ * API to set group ACL of the group
+ *
+ * @param gacl
+ * group ACL to be set
+ */
+ public void setGacl(ArrayList<Object> gacl) {
+ this.gacl = gacl;
}
- public String getGtype() {
- return gtype;
+ public <T> T getPropertyValue(String property) {
+ switch (property) {
+ case Constants.REQ_GROUP_ID:
+ return (T) gid;
+ case Constants.KEYFIELD_GROUP_NAME:
+ return (T) gname;
+ case Constants.KEYFIELD_GROUP_OWNER:
+ return (T) owner;
+ case Constants.KEYFIELD_GROUP_MEMBERS:
+ return (T) members;
+ case Constants.KEYFIELD_GROUP_MASTERS:
+ return (T) masters;
+ case Constants.KEYFIELD_GROUP_DEVICES:
+ return (T) devices;
+ case Constants.KEYFIELD_GROUP_RESOURCES:
+ return (T) resources;
+ case Constants.KEYFIELD_GROUP_SUBGROUPS:
+ return (T) subgroups;
+ case Constants.KEYFIELD_GROUP_GACL:
+ return (T) gacl;
+ default:
+ throw new BadRequestException(
+ property + " is not supported in the group");
+ }
}
- public void setGtype(Object gtype) {
- this.gtype = gtype.toString();
+ public void setPropertyValue(String property, Object value) {
+ switch (property) {
+ case Constants.REQ_GROUP_ID:
+ this.gid = (String) value;
+ break;
+ case Constants.KEYFIELD_GROUP_NAME:
+ this.gname = (String) value;
+ break;
+ case Constants.KEYFIELD_GROUP_OWNER:
+ this.owner = (String) value;
+ break;
+ case Constants.KEYFIELD_GROUP_MEMBERS:
+ this.members = (ArrayList<String>) value;
+ break;
+ case Constants.KEYFIELD_GROUP_MASTERS:
+ this.masters = (ArrayList<String>) value;
+ break;
+ case Constants.KEYFIELD_GROUP_DEVICES:
+ this.devices = (ArrayList<String>) value;
+ break;
+ case Constants.KEYFIELD_GROUP_RESOURCES:
+ this.resources = (ArrayList<Object>) value;
+ break;
+ case Constants.KEYFIELD_GROUP_SUBGROUPS:
+ this.subgroups = (ArrayList<String>) value;
+ break;
+ case Constants.KEYFIELD_GROUP_GACL:
+ this.gacl = (ArrayList<Object>) value;
+ break;
+ default:
+ throw new BadRequestException(
+ property + " is not supported in the group");
+ }
}
-}
\ No newline at end of file
+}