@@ -109,9 +140,8 @@ class Dashboard extends React.Component {
title={
-
- }
- >
+ {this.config.user}
+ }>
diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/DeviceTypes/DeviceTypes.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/DeviceTypes/DeviceTypes.js
new file mode 100644
index 0000000000..de9625bcc1
--- /dev/null
+++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/DeviceTypes/DeviceTypes.js
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
+ *
+ * Entgra (pvt) Ltd. 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.
+ */
+
+import React from "react";
+import {
+ PageHeader,
+ Typography,
+ Breadcrumb,
+ Icon
+} from "antd";
+import {Link} from "react-router-dom";
+import DeviceTypesTable from "../../../components/DeviceTypes/DeviceTypesTable";
+
+const {Paragraph} = Typography;
+
+class DeviceTypes extends React.Component {
+ routes;
+
+ constructor(props) {
+ super(props);
+ this.routes = props.routes;
+ }
+
+ render() {
+ return (
+
- Lorem ipsum dolor sit amet, est similique constituto at, quot inermis id mel, an
- illud incorrupte nam.
+ All enrolled devices
diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Groups/Groups.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Groups/Groups.js
new file mode 100644
index 0000000000..e17cac8665
--- /dev/null
+++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Groups/Groups.js
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
+ *
+ * Entgra (pvt) Ltd. 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.
+ */
+
+import React from "react";
+import {
+ PageHeader,
+ Typography,
+ Breadcrumb,
+ Icon
+} from "antd";
+import {Link} from "react-router-dom";
+import GroupsTable from "../../../components/Groups/GroupsTable";
+
+const {Paragraph} = Typography;
+
+class Groups extends React.Component {
+ routes;
+
+ constructor(props) {
+ super(props);
+ this.routes = props.routes;
+ }
+
+ render() {
+ return (
+
+
+
+
+ Home
+
+ Groups
+
+
+
Groups
+ All device groups.
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Groups;
diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Policies/Policies.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Policies/Policies.js
new file mode 100644
index 0000000000..bedaff0b57
--- /dev/null
+++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Policies/Policies.js
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
+ *
+ * Entgra (pvt) Ltd. 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.
+ */
+
+import React from "react";
+import {
+ PageHeader,
+ Typography,
+ Breadcrumb,
+ Icon
+} from "antd";
+import {Link} from "react-router-dom";
+
+const {Paragraph} = Typography;
+
+class Policies extends React.Component {
+ routes;
+
+ constructor(props) {
+ super(props);
+ this.routes = props.routes;
+ }
+
+ render() {
+ return (
+
+
+
+
+ Home
+
+ Policies
+
+
+
Policies
+ All policies for device management
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Policies;
diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Roles/Roles.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Roles/Roles.js
new file mode 100644
index 0000000000..03a8f5e78f
--- /dev/null
+++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Roles/Roles.js
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
+ *
+ * Entgra (pvt) Ltd. 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.
+ */
+
+import React from "react";
+import {
+ PageHeader,
+ Typography,
+ Breadcrumb,
+ Icon
+} from "antd";
+import {Link} from "react-router-dom";
+import RolesTable from "../../../components/Roles/RolesTable";
+
+const {Paragraph} = Typography;
+
+class Roles extends React.Component {
+ routes;
+
+ constructor(props) {
+ super(props);
+ this.routes = props.routes;
+ }
+
+ render() {
+ return (
+
+
+
+
+ Home
+
+ Roles
+
+
+
Roles
+ All user roles
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Roles;
diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Users/Users.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Users/Users.js
new file mode 100644
index 0000000000..dcd9a1d0f8
--- /dev/null
+++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/pages/Dashboard/Users/Users.js
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
+ *
+ * Entgra (pvt) Ltd. 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.
+ */
+
+import React from "react";
+import {
+ PageHeader,
+ Typography,
+ Breadcrumb,
+ Icon
+} from "antd";
+import {Link} from "react-router-dom";
+import UsersTable from "../../../components/Users/UsersTable";
+
+const {Paragraph} = Typography;
+
+class Users extends React.Component {
+ routes;
+
+ constructor(props) {
+ super(props);
+ this.routes = props.routes;
+ }
+
+ render() {
+ return (
+
+
+
+
+ Home
+
+ Users
+
+
+
Users
+ All users for device management.
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Users;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java
index 3e47728c3d..c42739f296 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java
@@ -142,7 +142,13 @@ public interface GroupManagementAdminService {
value = "Provide how many device details you require from the starting pagination index/offset.",
defaultValue = "5")
@QueryParam("limit")
- int limit);
+ int limit,
+
+ @ApiParam(
+ name = "status",
+ value = "status of group to be retrieve.")
+ @QueryParam("status")
+ String status);
@Path("/count")
@GET
@@ -190,6 +196,10 @@ public interface GroupManagementAdminService {
message = "Internal Server Error. \n Server error occurred while fetching the group count.",
response = ErrorResponse.class)
})
- Response getGroupCount();
+ Response getGroupCount(@ApiParam(
+ name = "status",
+ value = "status of groups of which count should be retrieved")
+ @QueryParam("status")
+ String status);
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java
index e2cda27c0c..2c11397b9a 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java
@@ -29,6 +29,7 @@ import org.wso2.carbon.device.mgt.common.exceptions.DeviceNotFoundException;
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
import org.wso2.carbon.device.mgt.common.PaginationResult;
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
+import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
@@ -100,6 +101,7 @@ public class GroupManagementServiceImpl implements GroupManagementService {
return Response.status(Response.Status.BAD_REQUEST).build();
}
group.setOwner(owner);
+ group.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE);
try {
DeviceMgtAPIUtils.getGroupManagementProviderService().createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS);
return Response.status(Response.Status.CREATED).build();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java
index f1783cb619..dcb0238204 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java
@@ -20,6 +20,7 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.solr.common.StringUtils;
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
import org.wso2.carbon.device.mgt.common.PaginationResult;
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
@@ -36,7 +37,7 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ
private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
@Override
- public Response getGroups(String name, String owner, int offset, int limit) {
+ public Response getGroups(String name, String owner, int offset, int limit, String status) {
try {
RequestValidationUtil.validatePaginationParameters(offset, limit);
GroupPaginationRequest request = new GroupPaginationRequest(offset, limit);
@@ -46,6 +47,9 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ
if (owner != null) {
request.setOwner(owner.toUpperCase());
}
+ if (status != null && !status.isEmpty()) {
+ request.setStatus(status.toUpperCase());
+ }
PaginationResult deviceGroupsResult = DeviceMgtAPIUtils.getGroupManagementProviderService()
.getGroups(request);
DeviceGroupList deviceGroupList = new DeviceGroupList();
@@ -65,9 +69,14 @@ public class GroupManagementAdminServiceImpl implements GroupManagementAdminServ
}
@Override
- public Response getGroupCount() {
+ public Response getGroupCount(String status) {
try {
- int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount();
+ int count;
+ if (status == null || status.isEmpty()) {
+ count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount();
+ } else {
+ count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCountByStatus(status);
+ }
return Response.status(Response.Status.OK).entity(count).build();
} catch (GroupManagementException e) {
String msg = "ErrorResponse occurred while retrieving group count.";
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java
index 3c17ce32a9..d7a74f199b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/GroupPaginationRequest.java
@@ -27,12 +27,21 @@ public class GroupPaginationRequest {
private int rowCount;
private String owner;
private String groupName;
+ private String status;
public GroupPaginationRequest(int start, int rowCount) {
this.startIndex = start;
this.rowCount = rowCount;
}
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
public int getStartIndex() {
return startIndex;
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java
index 9dff875672..20ed01fb49 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroup.java
@@ -44,6 +44,17 @@ public class DeviceGroup implements Serializable {
private String owner;
+ @ApiModelProperty(name = "status", value = "The status of group that needs updating/retrieval.")
+ private String status;
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
private Map groupProperties;
public DeviceGroup() {}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java
index aab0fc16f3..039219bfe8 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/group/mgt/DeviceGroupConstants.java
@@ -65,6 +65,11 @@ public class DeviceGroupConstants {
public static final String DEFAULT_VIEW_EVENTS = "view-events";
}
+ public static class GroupStatus {
+ public static final String ACTIVE = "ACTIVE";
+ public static final String INACTIVE = "INACTIVE";
+ }
+
public static class Permissions {
public static final String[] DEFAULT_ADMIN_PERMISSIONS =
{"/permission/device-mgt/groups", "/permission/device-mgt/user/groups"};
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java
index c181004dc4..9c2264b3f0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/GroupDAO.java
@@ -158,7 +158,7 @@ public interface GroupDAO {
* @return List of all Device Groups in tenant.
* @throws GroupManagementDAOException
*/
- int getGroupCount(int tenantId) throws GroupManagementDAOException;
+ int getGroupCount(int tenantId, String status) throws GroupManagementDAOException;
/**
* Get paginated count of Device Groups in tenant.
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java
index cb893438b4..d4207c4047 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractGroupDAOImpl.java
@@ -18,6 +18,7 @@
package org.wso2.carbon.device.mgt.core.dao.impl;
+import org.apache.solr.common.StringUtils;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
@@ -46,14 +47,25 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
PreparedStatement stmt = null;
ResultSet rs;
int groupId = -1;
+ boolean hasStatus = false;
try {
Connection conn = GroupManagementDAOFactory.getConnection();
- String sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) VALUES (?, ?, ?, ?)";
+ String sql;
+ if(deviceGroup.getStatus() == null || deviceGroup.getStatus().isEmpty()){
+ sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) VALUES (?, ?, ?, ?)";
+ } else {
+ sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID, STATUS) VALUES (?, ?, ?, ?, ?)";
+ hasStatus = true;
+ }
stmt = conn.prepareStatement(sql, new String[]{"ID"});
stmt.setString(1, deviceGroup.getDescription());
stmt.setString(2, deviceGroup.getName());
stmt.setString(3, deviceGroup.getOwner());
stmt.setInt(4, tenantId);
+ if(hasStatus) {
+ stmt.setString(5, deviceGroup.getStatus());
+ }
+
stmt.executeUpdate();
rs = stmt.getGeneratedKeys();
if (rs.next()) {
@@ -128,16 +140,26 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
public void updateGroup(DeviceGroup deviceGroup, int groupId, int tenantId)
throws GroupManagementDAOException {
PreparedStatement stmt = null;
+ boolean hasStatus = false;
try {
Connection conn = GroupManagementDAOFactory.getConnection();
String sql =
"UPDATE DM_GROUP SET DESCRIPTION = ?, GROUP_NAME = ?, OWNER = ? WHERE ID = ? AND TENANT_ID = ?";
+
+ if(deviceGroup.getStatus() != null && !deviceGroup.getStatus().isEmpty()){
+ sql = "UPDATE DM_GROUP SET DESCRIPTION = ?, GROUP_NAME = ?, OWNER = ?, STATUS = ? WHERE ID = ? AND TENANT_ID = ?";
+ hasStatus = true;
+ }
stmt = conn.prepareStatement(sql);
- stmt.setString(1, deviceGroup.getDescription());
- stmt.setString(2, deviceGroup.getName());
- stmt.setString(3, deviceGroup.getOwner());
- stmt.setInt(4, groupId);
- stmt.setInt(5, tenantId);
+ int paramIndex = 1;
+ stmt.setString(paramIndex++, deviceGroup.getDescription());
+ stmt.setString(paramIndex++, deviceGroup.getName());
+ stmt.setString(paramIndex++, deviceGroup.getOwner());
+ if(hasStatus) {
+ stmt.setString(paramIndex++, deviceGroup.getStatus());
+ }
+ stmt.setInt(paramIndex++, groupId);
+ stmt.setInt(paramIndex++, tenantId);
stmt.executeUpdate();
} catch (SQLException e) {
throw new GroupManagementDAOException("Error occurred while updating deviceGroup '" +
@@ -213,8 +235,8 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
Map properties = new HashMap();
try {
Connection conn = GroupManagementDAOFactory.getConnection();
- stmt = conn.prepareStatement(
- "SELECT PROPERTY_NAME, PROPERTY_VALUE FROM GROUP_PROPERTIES WHERE GROUP_ID = ? AND TENANT_ID = ?");
+ String sql = "SELECT PROPERTY_NAME, PROPERTY_VALUE FROM GROUP_PROPERTIES WHERE GROUP_ID = ? AND TENANT_ID = ?";
+ stmt = conn.prepareStatement(sql);
stmt.setInt(1, groupId);
stmt.setInt(2, tenantId);
resultSet = stmt.executeQuery();
@@ -304,14 +326,22 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
}
@Override
- public int getGroupCount(int tenantId) throws GroupManagementDAOException {
+ public int getGroupCount(int tenantId, String status) throws GroupManagementDAOException {
PreparedStatement stmt = null;
ResultSet resultSet = null;
+ boolean statusAvailable = false;
try {
Connection conn = GroupManagementDAOFactory.getConnection();
String sql = "SELECT COUNT(ID) AS GROUP_COUNT FROM DM_GROUP WHERE TENANT_ID = ?";
+ if(!StringUtils.isEmpty(status)){
+ sql += " AND STATUS = ?";
+ statusAvailable = true;
+ }
stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId);
+ if(statusAvailable){
+ stmt.setString(2, status);
+ }
resultSet = stmt.executeQuery();
if (resultSet.next()) {
return resultSet.getInt("GROUP_COUNT");
@@ -335,6 +365,7 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
boolean hasGroupName = false;
String owner = request.getOwner();
boolean hasOwner = false;
+ boolean hasStatus = false;
try {
Connection conn = GroupManagementDAOFactory.getConnection();
@@ -347,6 +378,10 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
sql += " AND OWNER LIKE ?";
hasOwner = true;
}
+ if(!StringUtils.isEmpty(request.getStatus())){
+ sql += " AND STATUS = ?";
+ hasStatus = true;
+ }
int paramIndex = 1;
stmt = conn.prepareStatement(sql);
@@ -357,6 +392,9 @@ public abstract class AbstractGroupDAOImpl implements GroupDAO {
if (hasOwner) {
stmt.setString(paramIndex, owner + "%");
}
+ if (hasStatus) {
+ stmt.setString(paramIndex, request.getStatus());
+ }
resultSet = stmt.executeQuery();
if (resultSet.next()) {
return resultSet.getInt("GROUP_COUNT");
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java
index 8ef981e701..ebfa129d42 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/GenericGroupDAOImpl.java
@@ -48,7 +48,9 @@ public class GenericGroupDAOImpl extends AbstractGroupDAOImpl {
String groupName = request.getGroupName();
boolean hasGroupName = false;
String owner = request.getOwner();
+ String status = request.getStatus();
boolean hasOwner = false;
+ boolean hasStatus = false;
boolean hasLimit = request.getRowCount() != 0;
try {
@@ -62,6 +64,10 @@ public class GenericGroupDAOImpl extends AbstractGroupDAOImpl {
sql += " AND UPPER(OWNER) LIKE ?";
hasOwner = true;
}
+ if (status != null && !status.isEmpty()) {
+ sql += " AND STATUS = ?";
+ hasStatus = true;
+ }
if (hasLimit) {
sql += " LIMIT ?, ?";
}
@@ -75,6 +81,9 @@ public class GenericGroupDAOImpl extends AbstractGroupDAOImpl {
if (hasOwner) {
stmt.setString(paramIndex++, owner + "%");
}
+ if (hasStatus) {
+ stmt.setString(paramIndex++, status.toUpperCase());
+ }
if (hasLimit) {
stmt.setInt(paramIndex++, request.getStartIndex());
stmt.setInt(paramIndex, request.getRowCount());
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java
index ecbe0013b7..7a540643f2 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/OracleGroupDAOImpl.java
@@ -49,7 +49,9 @@ public class OracleGroupDAOImpl extends AbstractGroupDAOImpl {
String groupName = request.getGroupName();
boolean hasGroupName = false;
String owner = request.getOwner();
+ String status = request.getStatus();
boolean hasOwner = false;
+ boolean hasStatus = false;
boolean hasLimit = request.getRowCount() != 0;
try {
@@ -63,6 +65,10 @@ public class OracleGroupDAOImpl extends AbstractGroupDAOImpl {
sql += " AND OWNER LIKE ?";
hasOwner = true;
}
+ if (status != null && !status.isEmpty()) {
+ sql += " AND STATUS = ?";
+ hasStatus = true;
+ }
if (hasLimit) {
sql += " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
}
@@ -76,6 +82,9 @@ public class OracleGroupDAOImpl extends AbstractGroupDAOImpl {
if (hasOwner) {
stmt.setString(paramIndex++, owner + "%");
}
+ if (hasStatus) {
+ stmt.setString(paramIndex++, status.toUpperCase());
+ }
if (hasLimit) {
stmt.setInt(paramIndex++, request.getStartIndex());
stmt.setInt(paramIndex, request.getRowCount());
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java
index 83020796ef..a677f467ed 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/PostgreSQLGroupDAOImpl.java
@@ -18,6 +18,7 @@
package org.wso2.carbon.device.mgt.core.dao.impl.group;
+import org.apache.solr.common.StringUtils;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
@@ -44,15 +45,26 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
PreparedStatement stmt = null;
ResultSet rs;
int groupId = -1;
+ boolean hasStatus = false;
try {
Connection conn = GroupManagementDAOFactory.getConnection();
- String sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) " +
- "VALUES (?, ?, ?, ?) RETURNING ID";
+ String sql;
+ if(StringUtils.isEmpty(deviceGroup.getStatus())) {
+ sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) " +
+ "VALUES (?, ?, ?, ?) RETURNING ID";
+ } else {
+ sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID, STATUS) " +
+ "VALUES (?, ?, ?, ?, ?) RETURNING ID";
+ hasStatus = true;
+ }
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceGroup.getDescription());
stmt.setString(2, deviceGroup.getName());
stmt.setString(3, deviceGroup.getOwner());
stmt.setInt(4, tenantId);
+ if(hasStatus) {
+ stmt.setString(5, deviceGroup.getStatus());
+ }
stmt.execute();
rs = stmt.getGeneratedKeys();
if (rs.next()) {
@@ -77,7 +89,9 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
String groupName = request.getGroupName();
boolean hasGroupName = false;
String owner = request.getOwner();
+ String status = request.getStatus();
boolean hasOwner = false;
+ boolean hasStatus = false;
boolean hasLimit = request.getRowCount() != 0;
try {
@@ -91,6 +105,10 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
sql += " AND OWNER LIKE ?";
hasOwner = true;
}
+ if (status != null && !status.isEmpty()) {
+ sql += " AND STATUS = ?";
+ hasStatus = true;
+ }
if (hasLimit) {
sql += " LIMIT ? OFFSET ?";
}
@@ -104,6 +122,9 @@ public class PostgreSQLGroupDAOImpl extends AbstractGroupDAOImpl {
if (hasOwner) {
stmt.setString(paramIndex++, owner + "%");
}
+ if (hasStatus) {
+ stmt.setString(paramIndex++, status.toUpperCase());
+ }
if (hasLimit) {
stmt.setInt(paramIndex++, request.getRowCount());
stmt.setInt(paramIndex, request.getStartIndex());
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java
index 34810ae5ab..f4f2bddc8c 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/group/SQLServerGroupDAOImpl.java
@@ -50,6 +50,8 @@ public class SQLServerGroupDAOImpl extends AbstractGroupDAOImpl {
boolean hasGroupName = false;
String owner = request.getOwner();
boolean hasOwner = false;
+ String status = request.getStatus();
+ boolean hasStatus = false;
boolean hasLimit = request.getRowCount() != 0;
try {
@@ -63,6 +65,10 @@ public class SQLServerGroupDAOImpl extends AbstractGroupDAOImpl {
sql += " AND OWNER LIKE ?";
hasOwner = true;
}
+ if (status != null && !status.isEmpty()) {
+ sql += " AND STATUS = ?";
+ hasStatus = true;
+ }
if (hasLimit) {
sql += " ORDER BY ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
}
@@ -76,6 +82,9 @@ public class SQLServerGroupDAOImpl extends AbstractGroupDAOImpl {
if (hasOwner) {
stmt.setString(paramIndex++, owner + "%");
}
+ if (hasStatus) {
+ stmt.setString(paramIndex++, status.toUpperCase());
+ }
if (hasLimit) {
stmt.setInt(paramIndex++, request.getStartIndex());
stmt.setInt(paramIndex, request.getRowCount());
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
index 613bb80167..a012fff0c8 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
@@ -2794,6 +2794,7 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
defaultGroup = new DeviceGroup(groupName);
// Setting system level user (wso2.system.user) as the owner
defaultGroup.setOwner(CarbonConstants.REGISTRY_SYSTEM_USERNAME);
+ defaultGroup.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE);
defaultGroup.setDescription("Default system group for devices with " + groupName + " ownership.");
try {
service.createGroup(defaultGroup, DeviceGroupConstants.Roles.DEFAULT_ADMIN_ROLE,
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java
index 4e3dda809d..6951862a77 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderService.java
@@ -127,6 +127,14 @@ public interface GroupManagementProviderService {
*/
int getGroupCount() throws GroupManagementException;
+ /**
+ * Get all device group count in tenant by group status
+ *
+ * @return group count
+ * @throws GroupManagementException
+ */
+ int getGroupCountByStatus(String status) throws GroupManagementException;
+
/**
* Get device group count of user
*
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java
index 7266bf83da..457e1217c1 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/GroupManagementProviderServiceImpl.java
@@ -472,7 +472,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
try {
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
GroupManagementDAOFactory.openConnection();
- return groupDAO.getGroupCount(tenantId);
+ return groupDAO.getGroupCount(tenantId, null);
} catch (GroupManagementDAOException | SQLException e) {
String msg = "Error occurred while retrieving all groups in tenant";
log.error(msg, e);
@@ -485,6 +485,29 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
GroupManagementDAOFactory.closeConnection();
}
}
+ @Override
+ public int getGroupCountByStatus(String status) throws GroupManagementException {
+ if (log.isDebugEnabled()) {
+ log.debug("Get groups count by Status");
+ }
+ int tenantId = -1;
+ try {
+ tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ GroupManagementDAOFactory.openConnection();
+ return groupDAO.getGroupCount(tenantId, status);
+ } catch (GroupManagementDAOException | SQLException e) {
+ String msg = "Error occurred while retrieving all groups in tenant " + tenantId
+ +" by status : " + status;
+ log.error(msg, e);
+ throw new GroupManagementException(msg, e);
+ } catch (Exception e) {
+ String msg = "Error occurred";
+ log.error(msg, e);
+ throw new GroupManagementException(msg, e);
+ } finally {
+ GroupManagementDAOFactory.closeConnection();
+ }
+ }
private int getGroupCount(GroupPaginationRequest request) throws GroupManagementException {
if (log.isDebugEnabled()) {
@@ -882,6 +905,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
DeviceGroup defaultGroup = this.getGroup(groupName);
if (defaultGroup == null) {
defaultGroup = new DeviceGroup(groupName);
+ defaultGroup.setStatus(DeviceGroupConstants.GroupStatus.ACTIVE);
// Setting system level user (wso2.system.user) as the owner
defaultGroup.setOwner(CarbonConstants.REGISTRY_SYSTEM_USERNAME);
defaultGroup.setDescription("Default system group for devices with " + groupName + " ownership.");
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql
index 89eaa6d335..80ac0335be 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/sql/h2.sql
@@ -11,6 +11,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE (
CREATE TABLE IF NOT EXISTS DM_GROUP (
ID INTEGER AUTO_INCREMENT NOT NULL,
GROUP_NAME VARCHAR(100) DEFAULT NULL,
+ STATUS VARCHAR(50) DEFAULT NULL,
DESCRIPTION TEXT DEFAULT NULL,
OWNER VARCHAR(45) DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0,
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql
index 1e4587c5c4..e6b1f3300e 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/resources/sql/CreateH2TestDB.sql
@@ -14,6 +14,7 @@ CREATE TABLE IF NOT EXISTS DM_GROUP (
ID INTEGER AUTO_INCREMENT NOT NULL,
GROUP_NAME VARCHAR(100) DEFAULT NULL,
DESCRIPTION TEXT DEFAULT NULL,
+ STATUS VARCHAR(50) DEFAULT NULL,
DATE_OF_CREATE BIGINT DEFAULT NULL,
DATE_OF_LAST_UPDATE BIGINT DEFAULT NULL,
OWNER VARCHAR(45) DEFAULT NULL,
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql
index 8cbd423c4f..a3658e474a 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql
@@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
CREATE TABLE IF NOT EXISTS DM_GROUP (
ID INTEGER AUTO_INCREMENT NOT NULL,
GROUP_NAME VARCHAR(100) DEFAULT NULL,
+ STATUS VARCHAR(50) DEFAULT NULL,
DESCRIPTION TEXT DEFAULT NULL,
OWNER VARCHAR(255) DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0,
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql
index b4aa5e731a..bf7c12351e 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql
@@ -29,6 +29,7 @@ IF NOT EXISTS(SELECT *
CREATE TABLE DM_GROUP (
ID INTEGER IDENTITY (1, 1) NOT NULL,
GROUP_NAME VARCHAR(100) DEFAULT NULL,
+ STATUS VARCHAR(50) DEFAULT NULL,
DESCRIPTION VARCHAR(MAX) DEFAULT NULL,
OWNER VARCHAR(255) DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0,
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql
index c6fab7ef01..cb6df2f762 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql
@@ -24,6 +24,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
CREATE TABLE IF NOT EXISTS DM_GROUP (
ID INTEGER AUTO_INCREMENT NOT NULL,
GROUP_NAME VARCHAR(100) DEFAULT NULL,
+ STATUS VARCHAR(50) DEFAULT NULL,
DESCRIPTION TEXT DEFAULT NULL,
OWNER VARCHAR(255) DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0,
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql
index 371b4a4697..ce735f70e9 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql
@@ -48,6 +48,7 @@ CREATE TABLE DM_GROUP (
ID NUMBER(10) NOT NULL,
DESCRIPTION CLOB DEFAULT NULL,
GROUP_NAME VARCHAR2(100) DEFAULT NULL,
+ STATUS VARCHAR2(50) DEFAULT NULL,
OWNER VARCHAR2(255) DEFAULT NULL,
TENANT_ID NUMBER(10) DEFAULT 0,
CONSTRAINT PK_DM_GROUP PRIMARY KEY (ID)
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql
index d5d11f6b35..f52bed8d00 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql
@@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
CREATE TABLE IF NOT EXISTS DM_GROUP (
ID BIGSERIAL NOT NULL PRIMARY KEY,
GROUP_NAME VARCHAR(100) DEFAULT NULL,
+ STATUS VARCHAR(50) DEFAULT NULL,
DESCRIPTION TEXT DEFAULT NULL,
OWNER VARCHAR(255) DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0