mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'master' of ssh://repository.entgra.net:222/community/device-mgt-core into billing-delete-9713
This commit is contained in:
commit
5371c5268b
@ -187,6 +187,7 @@
|
||||
io.entgra.device.mgt.core.apimgt.webapp.publisher.lifecycle.util,
|
||||
org.wso2.carbon.base;version="1.0",
|
||||
org.wso2.carbon.context;version="4.6",
|
||||
org.wso2.carbon;version="4.6",
|
||||
org.wso2.carbon.core;version="4.6",
|
||||
org.wso2.carbon.core.util;version="4.6",
|
||||
org.wso2.carbon.registry.core.service;version="1.0",
|
||||
@ -195,7 +196,6 @@
|
||||
org.wso2.carbon.user.core.tenant;version="4.6",
|
||||
org.wso2.carbon.utils;version="4.6",
|
||||
org.wso2.carbon.utils.multitenancy;version="4.6",
|
||||
org.wso2.carbon.apimgt.impl.definitions,
|
||||
org.apache.commons.lang,
|
||||
org.json
|
||||
</Import-Package>
|
||||
|
||||
@ -38,23 +38,24 @@ import io.entgra.device.mgt.core.apimgt.webapp.publisher.config.WebappPublisherC
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.dto.ApiScope;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.dto.ApiUriTemplate;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.exception.APIManagerPublisherException;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.internal.APIPublisherDataHolder;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.wso2.carbon.CarbonConstants;
|
||||
import org.wso2.carbon.apimgt.api.APIManagementException;
|
||||
import org.wso2.carbon.apimgt.api.APIProvider;
|
||||
import org.wso2.carbon.apimgt.api.model.APIIdentifier;
|
||||
import org.wso2.carbon.apimgt.impl.APIConstants;
|
||||
import org.wso2.carbon.apimgt.impl.APIManagerFactory;
|
||||
import org.wso2.carbon.apimgt.impl.utils.APIUtil;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.config.WebappPublisherConfig;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.dto.ApiScope;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.dto.ApiUriTemplate;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.exception.APIManagerPublisherException;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.user.api.AuthorizationManager;
|
||||
import org.wso2.carbon.user.api.Permission;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
import org.wso2.carbon.user.core.service.RealmService;
|
||||
import org.wso2.carbon.user.core.tenant.Tenant;
|
||||
import org.wso2.carbon.user.core.tenant.TenantSearchResult;
|
||||
@ -454,6 +455,7 @@ public class APIPublisherServiceImpl implements APIPublisherService {
|
||||
log.error(errorMsg, e);
|
||||
throw new APIManagerPublisherException(e);
|
||||
}
|
||||
UserStoreManager userStoreManager;
|
||||
|
||||
try {
|
||||
for (String tenantDomain : tenants) {
|
||||
@ -466,20 +468,40 @@ public class APIPublisherServiceImpl implements APIPublisherService {
|
||||
String fileName =
|
||||
CarbonUtils.getCarbonConfigDirPath() + File.separator + "etc"
|
||||
+ File.separator + tenantDomain + ".csv";
|
||||
try {
|
||||
userStoreManager = APIPublisherDataHolder.getInstance().getUserStoreManager();
|
||||
} catch (UserStoreException e) {
|
||||
log.error("Unable to retrieve user store manager for tenant: " + tenantDomain);
|
||||
return;
|
||||
}
|
||||
if (Files.exists(Paths.get(fileName))) {
|
||||
BufferedReader br = new BufferedReader(new FileReader(fileName));
|
||||
int lineNumber = 0;
|
||||
Map<Integer, String> roles = new HashMap<>();
|
||||
String line = "";
|
||||
Map<String, List<String>> rolePermissions = new HashMap<>();
|
||||
String line;
|
||||
String splitBy = ",";
|
||||
while ((line = br.readLine()) != null) //returns a Boolean value
|
||||
{
|
||||
while ((line = br.readLine()) != null) { //returns a Boolean value
|
||||
lineNumber++;
|
||||
String[] scopeMapping = line.split(splitBy); // use comma as separator
|
||||
String role;
|
||||
if (lineNumber == 1) { // skip titles
|
||||
for (int i = 0; i < scopeMapping.length; i++) {
|
||||
if (i > 3) {
|
||||
roles.put(i, scopeMapping[i]); // add roles to the map
|
||||
for (int i = 4; i < scopeMapping.length; i++) {
|
||||
role = scopeMapping[i];
|
||||
roles.put(i, role); // add roles to the map
|
||||
if (!"admin".equals(role)) {
|
||||
try {
|
||||
if (!userStoreManager.isExistingRole(role)) {
|
||||
try {
|
||||
addRole(role);
|
||||
} catch (UserStoreException e) {
|
||||
log.error("Error occurred when adding new role: " + role, e);
|
||||
}
|
||||
}
|
||||
} catch (UserStoreException e) {
|
||||
log.error("Error occurred when checking the existence of role: " + role, e);
|
||||
}
|
||||
rolePermissions.put(role, new ArrayList<>());
|
||||
}
|
||||
}
|
||||
continue;
|
||||
@ -494,11 +516,15 @@ public class APIPublisherServiceImpl implements APIPublisherService {
|
||||
scopeMapping[2] != null ? StringUtils.trim(scopeMapping[2]) : StringUtils.EMPTY);
|
||||
// scope.setPermissions(
|
||||
// scopeMapping[3] != null ? StringUtils.trim(scopeMapping[3]) : StringUtils.EMPTY);
|
||||
String permission = scopeMapping[3] != null ? StringUtils.trim(scopeMapping[3]) : StringUtils.EMPTY;
|
||||
|
||||
String roleString = "";
|
||||
for (int i = 4; i < scopeMapping.length; i++) {
|
||||
if (scopeMapping[i] != null && StringUtils.trim(scopeMapping[i]).equals("Yes")) {
|
||||
roleString = roleString + "," + roles.get(i);
|
||||
if (rolePermissions.containsKey(roles.get(i)) && StringUtils.isNotEmpty(permission)) {
|
||||
rolePermissions.get(roles.get(i)).add(permission);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (roleString.length() > 1) {
|
||||
@ -532,6 +558,13 @@ public class APIPublisherServiceImpl implements APIPublisherService {
|
||||
}
|
||||
}
|
||||
}
|
||||
for (String role : rolePermissions.keySet()) {
|
||||
try {
|
||||
updatePermissions(role, rolePermissions.get(role));
|
||||
} catch (UserStoreException e) {
|
||||
log.error("Error occurred when adding permissions to role: " + role, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException | DirectoryIteratorException ex) {
|
||||
log.error("failed to read scopes from file.", ex);
|
||||
@ -560,6 +593,28 @@ public class APIPublisherServiceImpl implements APIPublisherService {
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePermissions(String role, List<String> permissions) throws UserStoreException {
|
||||
AuthorizationManager authorizationManager = APIPublisherDataHolder.getInstance().getUserRealm()
|
||||
.getAuthorizationManager();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Updating the role '" + role + "'");
|
||||
}
|
||||
if (permissions != null && !permissions.isEmpty()) {
|
||||
authorizationManager.clearRoleAuthorization(role);
|
||||
for (String permission : permissions) {
|
||||
authorizationManager.authorizeRole(role, permission, CarbonConstants.UI_PERMISSION_ACTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addRole(String role) throws UserStoreException {
|
||||
UserStoreManager userStoreManager = APIPublisherDataHolder.getInstance().getUserStoreManager();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Persisting the role " + role + " in the underlying user store");
|
||||
}
|
||||
userStoreManager.addRole(role, new String[]{"admin"}, new Permission[0]);
|
||||
}
|
||||
|
||||
private APIInfo getAPI(APIConfig config, boolean includeScopes) {
|
||||
|
||||
APIInfo apiInfo = new APIInfo();
|
||||
|
||||
@ -19,7 +19,12 @@ package io.entgra.device.mgt.core.apimgt.webapp.publisher.internal;
|
||||
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.APIConfig;
|
||||
import io.entgra.device.mgt.core.apimgt.webapp.publisher.APIPublisherService;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||
import org.wso2.carbon.user.api.UserRealm;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
import org.wso2.carbon.user.core.service.RealmService;
|
||||
import org.wso2.carbon.user.core.tenant.TenantManager;
|
||||
import org.wso2.carbon.utils.ConfigurationContextService;
|
||||
@ -79,6 +84,25 @@ public class APIPublisherDataHolder {
|
||||
realmService.getTenantManager() : null);
|
||||
}
|
||||
|
||||
public UserStoreManager getUserStoreManager() throws UserStoreException {
|
||||
if (realmService == null) {
|
||||
String msg = "Realm service has not initialized.";
|
||||
throw new IllegalStateException(msg);
|
||||
}
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
return realmService.getTenantUserRealm(tenantId).getUserStoreManager();
|
||||
}
|
||||
|
||||
public UserRealm getUserRealm() throws UserStoreException {
|
||||
UserRealm realm;
|
||||
if (realmService == null) {
|
||||
throw new IllegalStateException("Realm service not initialized");
|
||||
}
|
||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
realm = realmService.getTenantUserRealm(tenantId);
|
||||
return realm;
|
||||
}
|
||||
|
||||
private void setTenantManager(TenantManager tenantManager) {
|
||||
this.tenantManager = tenantManager;
|
||||
}
|
||||
|
||||
@ -466,6 +466,11 @@ public interface ActivityInfoProviderService {
|
||||
value = "Operation Code to filter"
|
||||
)
|
||||
@QueryParam("operationCode") String operationCode,
|
||||
@ApiParam(
|
||||
name = "operationId",
|
||||
value = "Operation Id to filter"
|
||||
)
|
||||
@QueryParam("operationId") int operationId,
|
||||
@ApiParam(
|
||||
name = "deviceType",
|
||||
value = "Device Type to filter"
|
||||
|
||||
@ -253,6 +253,7 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
||||
@QueryParam("since") String since,
|
||||
@QueryParam("initiatedBy") String initiatedBy,
|
||||
@QueryParam("operationCode") String operationCode,
|
||||
@QueryParam("operationId") int operationId,
|
||||
@QueryParam("deviceType") String deviceType,
|
||||
@QueryParam("deviceId") List<String> deviceIds,
|
||||
@QueryParam("type") String type,
|
||||
@ -321,6 +322,9 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
||||
if (operationCode != null && !operationCode.isEmpty()) {
|
||||
activityPaginationRequest.setOperationCode(operationCode);
|
||||
}
|
||||
if (operationId > 0) {
|
||||
activityPaginationRequest.setOperationId(operationId);
|
||||
}
|
||||
if (deviceType != null && !deviceType.isEmpty()) {
|
||||
activityPaginationRequest.setDeviceType(deviceType);
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ public class ActivityPaginationRequest {
|
||||
private String deviceType;
|
||||
private List<String> deviceIds;
|
||||
private String operationCode;
|
||||
private int operationId;
|
||||
private String initiatedBy;
|
||||
private long since;
|
||||
private Operation.Type type;
|
||||
@ -132,4 +133,12 @@ public class ActivityPaginationRequest {
|
||||
public void setEndTimestamp(long endTimestamp) {
|
||||
this.endTimestamp = endTimestamp;
|
||||
}
|
||||
|
||||
public int getOperationId() {
|
||||
return operationId;
|
||||
}
|
||||
|
||||
public void setOperationId(int operationId) {
|
||||
this.operationId = operationId;
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,6 +49,14 @@ public class Activity {
|
||||
@JsonProperty("code")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty(
|
||||
name = "operationId",
|
||||
value = "Operation Id",
|
||||
required = false,
|
||||
example = "10")
|
||||
@JsonProperty("operationId")
|
||||
private int operationId;
|
||||
|
||||
@ApiModelProperty(
|
||||
name = "type",
|
||||
value = "Activity type",
|
||||
@ -122,6 +130,14 @@ public class Activity {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getOperationId() {
|
||||
return operationId;
|
||||
}
|
||||
|
||||
public void setOperationId(int operationId) {
|
||||
this.operationId = operationId;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@ -2220,41 +2220,70 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
" DM_ENROLMENT_OP_MAPPING eom " +
|
||||
"LEFT JOIN " +
|
||||
" DM_DEVICE_OPERATION_RESPONSE opr ON opr.EN_OP_MAP_ID = eom.ID " +
|
||||
"INNER JOIN " +
|
||||
" (SELECT DISTINCT OPERATION_ID FROM DM_ENROLMENT_OP_MAPPING WHERE TENANT_ID = ? ");
|
||||
"INNER JOIN ");
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
sql.append("AND DEVICE_TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
sql.append("AND DEVICE_IDENTIFICATION IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getDeviceIds().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
|
||||
sql.append("(SELECT DISTINCT OPERATION_ID FROM DM_ENROLMENT_OP_MAPPING eom WHERE TENANT_ID = ? ");
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
sql.append("AND DEVICE_TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
sql.append("AND eom.DEVICE_IDENTIFICATION IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getDeviceIds().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
sql.append("AND OPERATION_ID = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND INITIATED_BY = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
sql.append("AND UPDATED_TIMESTAMP > ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStartTimestamp() > 0 && activityPaginationRequest.getEndTimestamp() > 0) {
|
||||
isTimeDurationFilteringProvided = true;
|
||||
sql.append("AND CREATED_TIMESTAMP BETWEEN ? AND ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND INITIATED_BY = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
sql.append("AND UPDATED_TIMESTAMP > ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStartTimestamp() > 0 && activityPaginationRequest.getEndTimestamp() > 0) {
|
||||
isTimeDurationFilteringProvided = true;
|
||||
sql.append("AND CREATED_TIMESTAMP BETWEEN ? AND ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
}
|
||||
|
||||
sql.append("ORDER BY OPERATION_ID ASC limit ? , ? ) eom_ordered " +
|
||||
"ON eom_ordered.OPERATION_ID = eom.OPERATION_ID WHERE eom.TENANT_ID = ? ");
|
||||
sql.append("ORDER BY OPERATION_ID ASC limit ? , ? ) eom_ordered " +
|
||||
"ON eom_ordered.OPERATION_ID = eom.OPERATION_ID WHERE eom.TENANT_ID = ? ");
|
||||
} else {
|
||||
sql.append("(SELECT ID AS OPERATION_ID FROM DM_OPERATION WHERE TENANT_ID = ? ");
|
||||
|
||||
if (activityPaginationRequest.getStartTimestamp() > 0 && activityPaginationRequest.getEndTimestamp() > 0) {
|
||||
isTimeDurationFilteringProvided = true;
|
||||
sql.append("AND CREATED_TIMESTAMP BETWEEN ? AND ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
sql.append("AND ID = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND INITIATED_BY = ? ");
|
||||
}
|
||||
|
||||
sql.append("ORDER BY ID ASC ) dm_ordered " +
|
||||
"ON dm_ordered.OPERATION_ID = eom.OPERATION_ID WHERE eom.TENANT_ID = ? ");
|
||||
}
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
sql.append("AND eom.DEVICE_TYPE = ? ");
|
||||
@ -2269,6 +2298,9 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND eom.OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
sql.append("AND eom.OPERATION_ID = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND eom.INITIATED_BY = ? ");
|
||||
}
|
||||
@ -2276,7 +2308,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
sql.append("AND eom.UPDATED_TIMESTAMP > ? ");
|
||||
}
|
||||
if (isTimeDurationFilteringProvided) {
|
||||
sql.append("AND eom.CREATED_TIMESTAMP BETWEEN ? AND ? ");
|
||||
sql.append("AND eom.CREATED_TIMESTAMP BETWEEN ? AND ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND eom.TYPE = ? ");
|
||||
@ -2290,48 +2322,85 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
int index = 1;
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql.toString())) {
|
||||
stmt.setInt(index++, tenantId);
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
}
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
stmt.setInt(index++, activityPaginationRequest.getOperationId());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getSince());
|
||||
}
|
||||
if (isTimeDurationFilteringProvided) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getStartTimestamp());
|
||||
stmt.setLong(index++, activityPaginationRequest.getEndTimestamp());
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
}
|
||||
|
||||
stmt.setInt(index++, activityPaginationRequest.getOffset());
|
||||
stmt.setInt(index++, activityPaginationRequest.getLimit());
|
||||
stmt.setInt(index++, tenantId);
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isTimeDurationFilteringProvided) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getStartTimestamp());
|
||||
stmt.setLong(index++, activityPaginationRequest.getEndTimestamp());
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
stmt.setInt(index++, activityPaginationRequest.getOperationId());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
}
|
||||
|
||||
stmt.setInt(index++, tenantId);
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getSince());
|
||||
}
|
||||
if (isTimeDurationFilteringProvided) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getStartTimestamp());
|
||||
stmt.setLong(index++, activityPaginationRequest.getEndTimestamp());
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
}
|
||||
|
||||
stmt.setInt(index++, activityPaginationRequest.getOffset());
|
||||
stmt.setInt(index++, activityPaginationRequest.getLimit());
|
||||
stmt.setInt(index++, tenantId);
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
}
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
stmt.setInt(index++, activityPaginationRequest.getOperationId());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
@ -2374,33 +2443,57 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
boolean isTimeDurationFilteringProvided = false;
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
StringBuilder sql = new StringBuilder("SELECT count(DISTINCT OPERATION_ID) AS ACTIVITY_COUNT " +
|
||||
"FROM DM_ENROLMENT_OP_MAPPING WHERE TENANT_ID = ? ");
|
||||
StringBuilder sql = new StringBuilder();
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
sql.append("AND DEVICE_TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
sql.append("AND DEVICE_IDENTIFICATION IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getDeviceIds().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
|
||||
sql.append("SELECT count(DISTINCT OPERATION_ID) AS ACTIVITY_COUNT " +
|
||||
"FROM DM_ENROLMENT_OP_MAPPING WHERE TENANT_ID = ? ");
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
sql.append("AND DEVICE_TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
sql.append("AND DEVICE_IDENTIFICATION IN (");
|
||||
for (int i = 0; i < activityPaginationRequest.getDeviceIds().size() - 1; i++) {
|
||||
sql.append("?, ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
sql.append("AND OPERATION_ID = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND INITIATED_BY = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
sql.append("AND UPDATED_TIMESTAMP > ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
}
|
||||
|
||||
} else {
|
||||
sql.append("SELECT count(ID) AS ACTIVITY_COUNT FROM DM_OPERATION WHERE TENANT_ID = ? ");
|
||||
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
sql.append("AND ID = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND INITIATED_BY = ? ");
|
||||
}
|
||||
sql.append("?) ");
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
sql.append("AND OPERATION_CODE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
sql.append("AND INITIATED_BY = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
sql.append("AND UPDATED_TIMESTAMP > ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
sql.append("AND TYPE = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
sql.append("AND STATUS = ? ");
|
||||
}
|
||||
if (activityPaginationRequest.getStartTimestamp() > 0 && activityPaginationRequest.getEndTimestamp() > 0) {
|
||||
isTimeDurationFilteringProvided = true;
|
||||
@ -2410,28 +2503,47 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
int index = 1;
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql.toString())) {
|
||||
stmt.setInt(index++, tenantId);
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
|
||||
if (activityPaginationRequest.getDeviceType() != null ||
|
||||
(activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) ||
|
||||
activityPaginationRequest.getSince() != 0 ||
|
||||
activityPaginationRequest.getStatus() != null) {
|
||||
if (activityPaginationRequest.getDeviceType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getDeviceType());
|
||||
}
|
||||
if (activityPaginationRequest.getDeviceIds() != null && !activityPaginationRequest.getDeviceIds().isEmpty()) {
|
||||
for (String deviceId : activityPaginationRequest.getDeviceIds()) {
|
||||
stmt.setString(index++, deviceId);
|
||||
}
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
stmt.setInt(index++, activityPaginationRequest.getOperationId());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getSince());
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
}
|
||||
} else {
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
}
|
||||
if (activityPaginationRequest.getOperationId() > 0) {
|
||||
stmt.setInt(index++, activityPaginationRequest.getOperationId());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
}
|
||||
}
|
||||
if (activityPaginationRequest.getOperationCode() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getOperationCode());
|
||||
}
|
||||
if (activityPaginationRequest.getInitiatedBy() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getInitiatedBy());
|
||||
}
|
||||
if (activityPaginationRequest.getSince() != 0) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getSince());
|
||||
}
|
||||
if (activityPaginationRequest.getType() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getType().name());
|
||||
}
|
||||
if (activityPaginationRequest.getStatus() != null) {
|
||||
stmt.setString(index++, activityPaginationRequest.getStatus().name());
|
||||
}
|
||||
if (isTimeDurationFilteringProvided) {
|
||||
stmt.setLong(index++, activityPaginationRequest.getStartTimestamp());
|
||||
|
||||
@ -248,6 +248,7 @@ public class OperationDAOUtil {
|
||||
activity.setCreatedTimeStamp(
|
||||
new java.util.Date(rs.getLong(("CREATED_TIMESTAMP")) * 1000).toString());
|
||||
activity.setCode(rs.getString("OPERATION_CODE"));
|
||||
activity.setOperationId(rs.getInt("OPERATION_ID"));
|
||||
activity.setInitiatedBy(rs.getString("INITIATED_BY"));
|
||||
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
|
||||
@ -92,6 +92,7 @@ CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
INITIATED_BY VARCHAR(100) NULL,
|
||||
OPERATION_DETAILS BLOB DEFAULT NULL,
|
||||
ENABLED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
|
||||
@ -126,9 +126,17 @@ CREATE TABLE DM_OPERATION (
|
||||
INITIATED_BY VARCHAR(100) NULL,
|
||||
OPERATION_DETAILS VARBINARY(MAX) DEFAULT NULL,
|
||||
ENABLED BIT NOT NULL DEFAULT 0,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_OP_CREATED' AND OBJECT_ID = OBJECT_ID('DM_OPERATION'))
|
||||
CREATE INDEX IDX_OP_CREATED ON DM_OPERATION(CREATED_TIMESTAMP);
|
||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_OP_CODE' AND OBJECT_ID = OBJECT_ID('DM_OPERATION'))
|
||||
CREATE INDEX IDX_OP_CODE ON DM_OPERATION(OPERATION_CODE);
|
||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_OP_INITIATED_BY' AND OBJECT_ID = OBJECT_ID('DM_OPERATION'))
|
||||
CREATE INDEX IDX_OP_INITIATED_BY ON DM_OPERATION(INITIATED_BY);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_ENROLMENT]') AND TYPE IN (N'U'))
|
||||
CREATE TABLE DM_ENROLMENT (
|
||||
ID INTEGER IDENTITY(1,1) NOT NULL,
|
||||
@ -196,6 +204,8 @@ IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_EN_OP_MAPPING_OP_ID'
|
||||
CREATE INDEX IDX_EN_OP_MAPPING_OP_ID ON DM_ENROLMENT_OP_MAPPING(OPERATION_ID);
|
||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_EN_OP_MAPPING_EN_ID_STATUS' AND OBJECT_ID = OBJECT_ID('DM_ENROLMENT_OP_MAPPING'))
|
||||
CREATE INDEX IDX_EN_OP_MAPPING_EN_ID_STATUS ON DM_ENROLMENT_OP_MAPPING(ENROLMENT_ID, STATUS);
|
||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_ENROLMENT_OP_MAPPING_CREATED_TS' AND OBJECT_ID = OBJECT_ID('DM_ENROLMENT_OP_MAPPING'))
|
||||
CREATE INDEX IDX_ENROLMENT_OP_MAPPING_CREATED_TS ON DM_ENROLMENT_OP_MAPPING(CREATED_TIMESTAMP);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_DEVICE_OPERATION_RESPONSE]') AND TYPE IN (N'U'))
|
||||
CREATE TABLE DM_DEVICE_OPERATION_RESPONSE (
|
||||
|
||||
@ -107,9 +107,14 @@ CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
INITIATED_BY VARCHAR(100) NULL,
|
||||
OPERATION_DETAILS BLOB DEFAULT NULL,
|
||||
ENABLED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE INDEX IDX_OP_CREATED ON DM_OPERATION (CREATED_TIMESTAMP ASC);
|
||||
CREATE INDEX IDX_OP_CODE ON DM_OPERATION (OPERATION_CODE ASC);
|
||||
CREATE INDEX IDX_OP_INITIATED_BY ON DM_OPERATION (INITIATED_BY ASC);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
@ -170,6 +175,7 @@ CREATE INDEX IDX_ENROLMENT_OP_MAPPING ON DM_ENROLMENT_OP_MAPPING (UPDATED_TIMEST
|
||||
CREATE INDEX IDX_EN_OP_MAPPING_EN_ID ON DM_ENROLMENT_OP_MAPPING(ENROLMENT_ID);
|
||||
CREATE INDEX IDX_EN_OP_MAPPING_OP_ID ON DM_ENROLMENT_OP_MAPPING(OPERATION_ID);
|
||||
CREATE INDEX IDX_EN_OP_MAPPING_EN_ID_STATUS ON DM_ENROLMENT_OP_MAPPING(ENROLMENT_ID, STATUS);
|
||||
CREATE INDEX IDX_ENROLMENT_OP_MAPPING_CREATED_TS ON DM_ENROLMENT_OP_MAPPING (CREATED_TIMESTAMP ASC);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE
|
||||
(
|
||||
|
||||
@ -181,6 +181,7 @@ CREATE TABLE DM_OPERATION (
|
||||
INITIATED_BY VARCHAR2(100) NULL,
|
||||
ENABLED NUMBER(10) DEFAULT 0 NOT NULL,
|
||||
OPERATION_DETAILS BLOB DEFAULT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
CONSTRAINT PK_DM_OPERATION PRIMARY KEY (ID)
|
||||
)
|
||||
/
|
||||
|
||||
@ -100,10 +100,13 @@ CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
INITIATED_BY VARCHAR(100) NULL,
|
||||
OPERATION_DETAILS BYTEA DEFAULT NULL,
|
||||
ENABLED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
|
||||
CREATE INDEX IDX_OP_CREATED ON DM_OPERATION (CREATED_TIMESTAMP);
|
||||
CREATE INDEX IDX_OP_CODE ON DM_OPERATION (OPERATION_CODE);
|
||||
CREATE INDEX IDX_OP_INITIATED_BY ON DM_OPERATION (INITIATED_BY);
|
||||
|
||||
CREATE SEQUENCE DM_ENROLMENT_seq;
|
||||
|
||||
@ -161,6 +164,7 @@ CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING (
|
||||
CREATE INDEX fk_dm_device_operation_mapping_operation ON DM_ENROLMENT_OP_MAPPING (OPERATION_ID);
|
||||
CREATE INDEX IDX_DM_ENROLMENT_OP_MAPPING ON DM_ENROLMENT_OP_MAPPING (ENROLMENT_ID,OPERATION_ID);
|
||||
CREATE INDEX ID_DM_ENROLMENT_OP_MAPPING_UPDATED_TIMESTAMP ON DM_ENROLMENT_OP_MAPPING (UPDATED_TIMESTAMP);
|
||||
CREATE INDEX IDX_ENROLMENT_OP_MAPPING_CREATED_TS ON DM_ENROLMENT_OP_MAPPING (CREATED_TIMESTAMP);
|
||||
|
||||
ALTER TABLE DM_ENROLMENT_OP_MAPPING
|
||||
ADD OPERATION_CODE VARCHAR(50) NOT NULL,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user