@ -1734,12 +1734,12 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
@Override
@Override
public List < SubscriptionsDTO > getGroupsSubscriptionDetailsByUUID ( String uuid , String subscriptionStatus , int offset ,
public List < SubscriptionsDTO > getGroupsSubscriptionDetailsByUUID (
int limit ) throws ApplicationManagementException {
String uuid , String subscriptionStatus , PaginationRequest request , int offset , int limit )
throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
String groupName ;
String status ;
try {
try {
ConnectionManagerUtil . openDBConnection ( ) ;
ConnectionManagerUtil . openDBConnection ( ) ;
@ -1763,12 +1763,18 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
GroupManagementProviderService groupManagementProviderService = HelperUtil . getGroupManagementProviderService ( ) ;
GroupManagementProviderService groupManagementProviderService = HelperUtil . getGroupManagementProviderService ( ) ;
for ( GroupSubscriptionDTO groupDetail : groupDetails ) {
for ( GroupSubscriptionDTO groupDetail : groupDetails ) {
groupName = groupDetail . getGroupName ( ) ;
if ( StringUtils . isNotBlank ( request . getGroupName ( ) ) & & ! request . getGroupName ( ) . equals ( groupDetail . getGroupName ( ) ) ) {
continue ;
}
String groupName = StringUtils . isNotBlank ( request . getGroupName ( ) ) ? request . getGroupName ( ) : groupDetail . getGroupName ( ) ;
// Retrieve group details and device IDs for the group using the service layer
// Retrieve group details and device IDs for the group using the service layer
GroupDetailsDTO groupDetailWithDevices =
GroupDetailsDTO groupDetailWithDevices =
groupManagementProviderService . getGroupDetailsWithDevices ( groupName , applicationDTO . getDeviceTypeId ( ) ,
groupManagementProviderService . getGroupDetailsWithDevices (
offset , limit ) ;
groupName , applicationDTO . getDeviceTypeId ( ) , request . getOwner ( ) ,
request . getDeviceName ( ) , request . getDeviceStatus ( ) , offset , limit ) ;
SubscriptionsDTO groupDetailDTO = new SubscriptionsDTO ( ) ;
SubscriptionsDTO groupDetailDTO = new SubscriptionsDTO ( ) ;
groupDetailDTO . setId ( groupDetailWithDevices . getGroupId ( ) ) ;
groupDetailDTO . setId ( groupDetailWithDevices . getGroupId ( ) ) ;
@ -1791,24 +1797,29 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
List < Integer > deviceIds = groupDetailWithDevices . getDeviceIds ( ) ;
List < Integer > deviceIds = groupDetailWithDevices . getDeviceIds ( ) ;
Map < String , Integer > statusCounts = new HashMap < > ( ) ;
Map < String , Integer > statusCounts = new HashMap < > ( ) ;
statusCounts . put ( "PENDING" , 0 ) ;
statusCounts . put ( "COMPLETED" , 0 ) ;
statusCounts . put ( "COMPLETED" , 0 ) ;
statusCounts . put ( "ERROR" , 0 ) ;
statusCounts . put ( "ERROR" , 0 ) ;
statusCounts . put ( "PENDING" , 0 ) ;
statusCounts . put ( "NEW" , 0 ) ;
statusCounts . put ( "NEW" , 0 ) ;
statusCounts . put ( "SUBSCRIBED" , 0 ) ;
statusCounts . put ( "SUBSCRIBED" , 0 ) ;
// Get subscribed devices if unsubscribed devices are requested
List < DeviceSubscriptionDTO > subscribedDeviceSubscriptions = new ArrayList < > ( ) ;
if ( unsubscribe ) {
subscribedDeviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
appReleaseId , ! unsubscribe , tenantId , deviceIds ) ;
}
for ( Integer deviceId : deviceIds ) {
for ( Integer deviceId : deviceIds ) {
List < DeviceSubscriptionDTO > deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
// Get subscribed devices if unsubscribed devices are requested
groupDetail . getAppReleaseId ( ) , unsubscribe , tenantId , deviceIds ) ;
List < DeviceSubscriptionDTO > deviceSubscriptions ;
if ( unsubscribe ) {
deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
appReleaseId , ! unsubscribe , tenantId , deviceIds ,
request . getActionStatus ( ) , request . getActionType ( ) , request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
} else {
deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
groupDetail . getAppReleaseId ( ) , false , tenantId , deviceIds ,
request . getActionStatus ( ) , request . getActionType ( ) , request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
}
List < DeviceSubscriptionDTO > filteredDeviceSubscriptions = deviceSubscriptions . stream ( )
. filter ( subscription - > StringUtils . isBlank ( request . getTabActionStatus ( ) ) | | subscription . getStatus ( ) . equals ( request . getTabActionStatus ( ) ) )
. collect ( Collectors . toList ( ) ) ;
boolean isNewDevice = true ;
boolean isNewDevice = true ;
for ( DeviceSubscriptionDTO subscription : deviceSubscriptions ) {
for ( DeviceSubscriptionDTO subscription : filtere dD eviceSubscriptions) {
if ( subscription . getDeviceId ( ) = = deviceId ) {
if ( subscription . getDeviceId ( ) = = deviceId ) {
DeviceSubscriptionData deviceDetail = new DeviceSubscriptionData ( ) ;
DeviceSubscriptionData deviceDetail = new DeviceSubscriptionData ( ) ;
deviceDetail . setDeviceId ( subscription . getDeviceId ( ) ) ;
deviceDetail . setDeviceId ( subscription . getDeviceId ( ) ) ;
@ -1826,7 +1837,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
deviceDetail . setType ( groupDetailWithDevices . getDeviceTypes ( ) . get ( deviceId ) ) ;
deviceDetail . setType ( groupDetailWithDevices . getDeviceTypes ( ) . get ( deviceId ) ) ;
deviceDetail . setDeviceIdentifier ( groupDetailWithDevices . getDeviceIdentifiers ( ) . get ( deviceId ) ) ;
deviceDetail . setDeviceIdentifier ( groupDetailWithDevices . getDeviceIdentifiers ( ) . get ( deviceId ) ) ;
status = subscription . getStatus ( ) ;
String status = subscription . getStatus ( ) ;
switch ( status ) {
switch ( status ) {
case "COMPLETED" :
case "COMPLETED" :
installedDevices . add ( deviceDetail ) ;
installedDevices . add ( deviceDetail ) ;
@ -1844,13 +1855,17 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
pendingDevices . add ( deviceDetail ) ;
pendingDevices . add ( deviceDetail ) ;
statusCounts . put ( "PENDING" , statusCounts . get ( "PENDING" ) + 1 ) ;
statusCounts . put ( "PENDING" , statusCounts . get ( "PENDING" ) + 1 ) ;
break ;
break ;
default :
newDevices . add ( deviceDetail ) ;
statusCounts . put ( "NEW" , statusCounts . get ( "NEW" ) + 1 ) ;
break ;
}
}
isNewDevice = false ;
isNewDevice = false ;
}
}
}
}
if ( isNewDevice ) {
if ( isNewDevice ) {
boolean isSubscribedDevice = false ;
boolean isSubscribedDevice = false ;
for ( DeviceSubscriptionDTO subscribedDevice : subscribe dD eviceSubscriptions) {
for ( DeviceSubscriptionDTO subscribedDevice : deviceSubscriptions) {
if ( subscribedDevice . getDeviceId ( ) = = deviceId ) {
if ( subscribedDevice . getDeviceId ( ) = = deviceId ) {
DeviceSubscriptionData subscribedDeviceDetail = new DeviceSubscriptionData ( ) ;
DeviceSubscriptionData subscribedDeviceDetail = new DeviceSubscriptionData ( ) ;
subscribedDeviceDetail . setDeviceId ( subscribedDevice . getDeviceId ( ) ) ;
subscribedDeviceDetail . setDeviceId ( subscribedDevice . getDeviceId ( ) ) ;
@ -1892,17 +1907,38 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
}
}
CategorizedSubscriptionResult categorizedSubscriptionResult ;
List < DeviceSubscriptionData > requestedDevices = new ArrayList < > ( ) ;
if ( subscribedDevices . isEmpty ( ) ) {
if ( StringUtils . isNotBlank ( request . getTabActionStatus ( ) ) ) {
categorizedSubscriptionResult =
switch ( request . getTabActionStatus ( ) ) {
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
case "COMPLETED" :
requestedDevices = installedDevices ;
break ;
case "PENDING" :
requestedDevices = pendingDevices ;
break ;
case "ERROR" :
requestedDevices = errorDevices ;
break ;
case "NEW" :
requestedDevices = newDevices ;
break ;
case "SUBSCRIBED" :
requestedDevices = subscribedDevices ;
break ;
}
groupDetailDTO . setDevices ( new CategorizedSubscriptionResult ( requestedDevices , request . getTabActionStatus ( ) ) ) ;
} else {
} else {
categorizedSubscriptionResult =
CategorizedSubscriptionResult categorizedSubscriptionResult ;
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices , subscribedDevices ) ;
if ( subscribedDevices . isEmpty ( ) ) {
categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
} else {
categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices , subscribedDevices ) ;
}
groupDetailDTO . setDevices ( categorizedSubscriptionResult ) ;
}
}
groupDetailDTO . setDevices ( categorizedSubscriptionResult ) ;
groupDetailDTO . setStatusPercentages ( statusPercentages ) ;
groupDetailDTO . setStatusPercentages ( statusPercentages ) ;
groupDetailsWithDevices . add ( groupDetailDTO ) ;
groupDetailsWithDevices . add ( groupDetailDTO ) ;
}
}
@ -1925,11 +1961,11 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
@Override
@Override
public List < SubscriptionsDTO > getUserSubscriptionsByUUID ( String uuid , String subscriptionStatus , int offset , int limit )
public List < SubscriptionsDTO > getUserSubscriptionsByUUID ( String uuid , String subscriptionStatus ,
PaginationRequest request , int offset , int limit )
throws ApplicationManagementException {
throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
String userName ;
String status ;
String status ;
try {
try {
@ -1954,11 +1990,17 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
DeviceManagementProviderService deviceManagementProviderService = HelperUtil . getDeviceManagementProviderService ( ) ;
DeviceManagementProviderService deviceManagementProviderService = HelperUtil . getDeviceManagementProviderService ( ) ;
for ( SubscriptionsDTO userSubscription : userSubscriptions ) {
for ( SubscriptionsDTO userSubscription : userSubscriptions ) {
userName = userSubscription . getName ( ) ;
if ( StringUtils . isNotBlank ( request . getUserName ( ) ) & & ! request . getUserName ( ) . equals ( userSubscription . getName ( ) ) ) {
continue ;
}
String userName = StringUtils . isNotBlank ( request . getUserName ( ) ) ? request . getUserName ( ) : userSubscription . getName ( ) ;
// Retrieve owner details and device IDs for the user using the service layer
// Retrieve owner details and device IDs for the user using the service layer
OwnerWithDeviceDTO ownerDetailsWithDevices =
OwnerWithDeviceDTO ownerDetailsWithDevices =
deviceManagementProviderService . getOwnersWithDeviceIds ( userName , applicationDTO . getDeviceTypeId ( ) ) ;
deviceManagementProviderService . getOwnersWithDeviceIds ( userName , applicationDTO . getDeviceTypeId ( ) ,
request . getOwner ( ) , request . getDeviceName ( ) , request . getDeviceStatus ( ) ) ;
SubscriptionsDTO userSubscriptionDTO = new SubscriptionsDTO ( ) ;
SubscriptionsDTO userSubscriptionDTO = new SubscriptionsDTO ( ) ;
userSubscriptionDTO . setName ( userSubscription . getName ( ) ) ;
userSubscriptionDTO . setName ( userSubscription . getName ( ) ) ;
@ -1989,14 +2031,17 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
List < DeviceSubscriptionDTO > subscribedDeviceSubscriptions = new ArrayList < > ( ) ;
List < DeviceSubscriptionDTO > subscribedDeviceSubscriptions = new ArrayList < > ( ) ;
if ( unsubscribe ) {
if ( unsubscribe ) {
subscribedDeviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
subscribedDeviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
appReleaseId , ! unsubscribe , tenantId , deviceIds ) ;
appReleaseId , ! unsubscribe , tenantId , deviceIds , request . getActionStatus ( ) , request . getActionType ( ) ,
request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
}
}
for ( Integer deviceId : deviceIds ) {
for ( Integer deviceId : deviceIds ) {
List < DeviceSubscriptionDTO > deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
List < DeviceSubscriptionDTO > deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
userSubscription . getAppReleaseId ( ) , unsubscribe , tenantId , deviceIds ) ;
userSubscription . getAppReleaseId ( ) , unsubscribe , tenantId , deviceIds , request . getActionStatus ( ) , request . getActionType ( ) ,
request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
OwnerWithDeviceDTO ownerWithDeviceByDeviceId =
OwnerWithDeviceDTO ownerWithDeviceByDeviceId =
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId ) ;
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId , request . getOwner ( ) , request . getDeviceName ( ) ,
request . getDeviceStatus ( ) ) ;
if ( ownerWithDeviceByDeviceId = = null ) {
if ( ownerWithDeviceByDeviceId = = null ) {
continue ;
continue ;
}
}
@ -2086,20 +2131,42 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
}
}
CategorizedSubscriptionResult categorizedSubscriptionResult ;
List < DeviceSubscriptionData > requestedDevices = new ArrayList < > ( ) ;
if ( subscribedDevices . isEmpty ( ) ) {
if ( StringUtils . isNotBlank ( request . getTabActionStatus ( ) ) ) {
categorizedSubscriptionResult =
switch ( request . getTabActionStatus ( ) ) {
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
case "COMPLETED" :
requestedDevices = installedDevices ;
break ;
case "PENDING" :
requestedDevices = pendingDevices ;
break ;
case "ERROR" :
requestedDevices = errorDevices ;
break ;
case "NEW" :
requestedDevices = newDevices ;
break ;
case "SUBSCRIBED" :
requestedDevices = subscribedDevices ;
break ;
}
userSubscriptionDTO . setDevices ( new CategorizedSubscriptionResult ( requestedDevices , request . getTabActionStatus ( ) ) ) ;
} else {
} else {
categorizedSubscriptionResult =
CategorizedSubscriptionResult categorizedSubscriptionResult ;
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices , subscribedDevices ) ;
if ( subscribedDevices . isEmpty ( ) ) {
}
categorizedSubscriptionResult =
userSubscriptionDTO . setDevices ( categorizedSubscriptionResult ) ;
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
userSubscriptionDTO . setStatusPercentages ( statusPercentages ) ;
} else {
categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ,
subscribedDevices ) ;
}
userSubscriptionDTO . setDevices ( categorizedSubscriptionResult ) ;
userSubscriptionDTO . setStatusPercentages ( statusPercentages ) ;
}
userSubscriptionsWithDevices . add ( userSubscriptionDTO ) ;
userSubscriptionsWithDevices . add ( userSubscriptionDTO ) ;
}
}
return userSubscriptionsWithDevices ;
return userSubscriptionsWithDevices ;
} catch ( ApplicationManagementDAOException e ) {
} catch ( ApplicationManagementDAOException e ) {
String msg = "Error occurred while getting user subscriptions for the application release UUID: " + uuid ;
String msg = "Error occurred while getting user subscriptions for the application release UUID: " + uuid ;
@ -2117,7 +2184,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
@Override
@Override
public List < SubscriptionsDTO > getRoleSubscriptionsByUUID ( String uuid , String subscriptionStatus , int offset , int limit )
public List < SubscriptionsDTO > getRoleSubscriptionsByUUID ( String uuid , String subscriptionStatus ,
PaginationRequest request , int offset , int limit )
throws ApplicationManagementException {
throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
@ -2146,7 +2214,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
DeviceManagementProviderService deviceManagementProviderService = HelperUtil . getDeviceManagementProviderService ( ) ;
DeviceManagementProviderService deviceManagementProviderService = HelperUtil . getDeviceManagementProviderService ( ) ;
for ( SubscriptionsDTO roleSubscription : roleSubscriptions ) {
for ( SubscriptionsDTO roleSubscription : roleSubscriptions ) {
roleName = roleSubscription . getName ( ) ;
roleName = StringUtils . isNotBlank ( request . getRoleName ( ) ) ? request . getRoleName ( ) : roleSubscription . getName ( ) ;
SubscriptionsDTO roleSubscriptionDTO = new SubscriptionsDTO ( ) ;
SubscriptionsDTO roleSubscriptionDTO = new SubscriptionsDTO ( ) ;
roleSubscriptionDTO . setName ( roleSubscription . getName ( ) ) ;
roleSubscriptionDTO . setName ( roleSubscription . getName ( ) ) ;
@ -2175,7 +2244,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
for ( String user : users ) {
for ( String user : users ) {
OwnerWithDeviceDTO ownerDetailsWithDevices ;
OwnerWithDeviceDTO ownerDetailsWithDevices ;
try {
try {
ownerDetailsWithDevices = deviceManagementProviderService . getOwnersWithDeviceIds ( user , applicationDTO . getDeviceTypeId ( ) ) ;
ownerDetailsWithDevices = deviceManagementProviderService . getOwnersWithDeviceIds ( user , applicationDTO . getDeviceTypeId ( ) ,
request . getOwner ( ) , request . getDeviceName ( ) , request . getDeviceStatus ( ) ) ;
} catch ( DeviceManagementDAOException e ) {
} catch ( DeviceManagementDAOException e ) {
throw new ApplicationManagementException ( "Error retrieving owner details with devices for user: " + user , e ) ;
throw new ApplicationManagementException ( "Error retrieving owner details with devices for user: " + user , e ) ;
}
}
@ -2186,17 +2256,20 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
List < DeviceSubscriptionDTO > subscribedDeviceSubscriptions = new ArrayList < > ( ) ;
List < DeviceSubscriptionDTO > subscribedDeviceSubscriptions = new ArrayList < > ( ) ;
if ( unsubscribe ) {
if ( unsubscribe ) {
subscribedDeviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
subscribedDeviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
appReleaseId , ! unsubscribe , tenantId , deviceIds ) ;
appReleaseId , ! unsubscribe , tenantId , deviceIds , request . getActionStatus ( ) , request . getActionType ( ) ,
request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
}
}
OwnerWithDeviceDTO ownerWithDeviceByDeviceId =
OwnerWithDeviceDTO ownerWithDeviceByDeviceId =
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId ) ;
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId , request . getOwner ( ) , request . getDeviceName ( ) ,
request . getDeviceStatus ( ) ) ;
if ( ownerWithDeviceByDeviceId = = null ) {
if ( ownerWithDeviceByDeviceId = = null ) {
continue ;
continue ;
}
}
List < DeviceSubscriptionDTO > deviceSubscriptions ;
List < DeviceSubscriptionDTO > deviceSubscriptions ;
try {
try {
deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
deviceSubscriptions = subscriptionDAO . getSubscriptionDetailsByDeviceIds (
roleSubscription . getAppReleaseId ( ) , unsubscribe , tenantId , deviceIds ) ;
roleSubscription . getAppReleaseId ( ) , unsubscribe , tenantId , deviceIds , request . getActionStatus ( ) ,
request . getActionType ( ) , request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
} catch ( ApplicationManagementDAOException e ) {
} catch ( ApplicationManagementDAOException e ) {
throw new ApplicationManagementException ( "Error retrieving device subscriptions" , e ) ;
throw new ApplicationManagementException ( "Error retrieving device subscriptions" , e ) ;
}
}
@ -2289,18 +2362,41 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
}
}
CategorizedSubscriptionResult categorizedSubscriptionResult ;
List < DeviceSubscriptionData > requestedDevices = new ArrayList < > ( ) ;
if ( subscribedDevices . isEmpty ( ) ) {
if ( StringUtils . isNotBlank ( request . getTabActionStatus ( ) ) ) {
categorizedSubscriptionResult =
switch ( request . getTabActionStatus ( ) ) {
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
case "COMPLETED" :
requestedDevices = installedDevices ;
break ;
case "PENDING" :
requestedDevices = pendingDevices ;
break ;
case "ERROR" :
requestedDevices = errorDevices ;
break ;
case "NEW" :
requestedDevices = newDevices ;
break ;
case "SUBSCRIBED" :
requestedDevices = subscribedDevices ;
break ;
}
roleSubscriptionDTO . setDevices ( new CategorizedSubscriptionResult ( requestedDevices , request . getTabActionStatus ( ) ) ) ;
} else {
} else {
categorizedSubscriptionResult =
CategorizedSubscriptionResult categorizedSubscriptionResult ;
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices , subscribedDevices ) ;
if ( subscribedDevices . isEmpty ( ) ) {
categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
} else {
categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ,
subscribedDevices ) ;
}
roleSubscriptionDTO . setDevices ( categorizedSubscriptionResult ) ;
roleSubscriptionDTO . setStatusPercentages ( statusPercentages ) ;
roleSubscriptionDTO . setDeviceCount ( totalDevices ) ;
}
}
roleSubscriptionDTO . setDevices ( categorizedSubscriptionResult ) ;
roleSubscriptionDTO . setStatusPercentages ( statusPercentages ) ;
roleSubscriptionDTO . setDeviceCount ( totalDevices ) ;
roleSubscriptionsWithDevices . add ( roleSubscriptionDTO ) ;
roleSubscriptionsWithDevices . add ( roleSubscriptionDTO ) ;
}
}
@ -2332,7 +2428,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
@Override
@Override
public DeviceSubscriptionResponseDTO getDeviceSubscriptionsDetailsByUUID ( String uuid , String subscriptionStatus , int offset ,
public DeviceSubscriptionResponseDTO getDeviceSubscriptionsDetailsByUUID ( String uuid , String subscriptionStatus , PaginationRequest request , int offset ,
int limit ) throws ApplicationManagementException {
int limit ) throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
@ -2362,7 +2458,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
List < DeviceDetailsDTO > allDevices =
List < DeviceDetailsDTO > allDevices =
deviceManagementProviderService . getDevicesByTenantId ( tenantId , applicationDTO . getDeviceTypeId ( ) ) ;
deviceManagementProviderService . getDevicesByTenantId ( tenantId , applicationDTO . getDeviceTypeId ( ) ,
request . getOwner ( ) , request . getDeviceStatus ( ) ) ;
List < Integer > deviceIds = allDevices . stream ( )
List < Integer > deviceIds = allDevices . stream ( )
. map ( DeviceDetailsDTO : : getDeviceId )
. map ( DeviceDetailsDTO : : getDeviceId )
@ -2387,9 +2484,11 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
. collect ( Collectors . toMap ( DeviceDetailsDTO : : getDeviceId , Function . identity ( ) ) ) ;
. collect ( Collectors . toMap ( DeviceDetailsDTO : : getDeviceId , Function . identity ( ) ) ) ;
List < DeviceSubscriptionDTO > allSubscriptionsForUnSubscribed =
List < DeviceSubscriptionDTO > allSubscriptionsForUnSubscribed =
subscriptionDAO . getSubscriptionDetailsByDeviceIds ( appReleaseId , ! unsubscribe , tenantId , deviceIds ) ;
subscriptionDAO . getSubscriptionDetailsByDeviceIds ( appReleaseId , ! unsubscribe , tenantId , deviceIds , request . getActionStatus ( ) ,
request . getActionType ( ) , request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
List < DeviceSubscriptionDTO > allSubscriptionsForSubscribed =
List < DeviceSubscriptionDTO > allSubscriptionsForSubscribed =
subscriptionDAO . getSubscriptionDetailsByDeviceIds ( appReleaseId , unsubscribe , tenantId , deviceIds ) ;
subscriptionDAO . getSubscriptionDetailsByDeviceIds ( appReleaseId , unsubscribe , tenantId , deviceIds , request . getActionStatus ( ) ,
request . getActionType ( ) , request . getActionTriggeredBy ( ) , request . getTabActionStatus ( ) ) ;
Map < Integer , DeviceSubscriptionDTO > allSubscriptionForUnSubscribedMap = allSubscriptionsForUnSubscribed . stream ( )
Map < Integer , DeviceSubscriptionDTO > allSubscriptionForUnSubscribedMap = allSubscriptionsForUnSubscribed . stream ( )
. collect ( Collectors . toMap ( DeviceSubscriptionDTO : : getDeviceId , Function . identity ( ) ) ) ;
. collect ( Collectors . toMap ( DeviceSubscriptionDTO : : getDeviceId , Function . identity ( ) ) ) ;
Map < Integer , DeviceSubscriptionDTO > allSubscriptionForSubscribedMap = allSubscriptionsForSubscribed . stream ( )
Map < Integer , DeviceSubscriptionDTO > allSubscriptionForSubscribedMap = allSubscriptionsForSubscribed . stream ( )
@ -2398,11 +2497,12 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
for ( DeviceDetailsDTO device : allDevices ) {
for ( DeviceDetailsDTO device : allDevices ) {
Integer deviceId = device . getDeviceId ( ) ;
Integer deviceId = device . getDeviceId ( ) ;
OwnerWithDeviceDTO ownerWithDevice =
OwnerWithDeviceDTO ownerWithDevice =
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId ) ;
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId , request . getOwner ( ) , request . getDeviceName ( ) ,
if ( ownerWithDevice = = null ) {
request . getDeviceStatus ( ) ) ;
if ( ownerWithDevice = = null | | ( request . getDeviceName ( ) ! = null & & ! request . getDeviceName ( ) . isEmpty ( ) & &
( ownerWithDevice . getDeviceNames ( ) = = null | | ! ownerWithDevice . getDeviceNames ( ) . contains ( request . getDeviceName ( ) ) ) ) ) {
continue ;
continue ;
}
}
if ( deviceSubscriptionMap . containsKey ( deviceId ) ) {
if ( deviceSubscriptionMap . containsKey ( deviceId ) ) {
DeviceSubscriptionDTO subscription = deviceSubscriptionMap . get ( deviceId ) ;
DeviceSubscriptionDTO subscription = deviceSubscriptionMap . get ( deviceId ) ;
DeviceSubscriptionData deviceDetail = new DeviceSubscriptionData ( ) ;
DeviceSubscriptionData deviceDetail = new DeviceSubscriptionData ( ) ;
@ -2491,14 +2591,35 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
}
}
CategorizedSubscriptionResult categorizedSubscriptionResult ;
List < DeviceSubscriptionData > requestedDevices = new ArrayList < > ( ) ;
if ( subscribedDevices . isEmpty ( ) ) {
if ( StringUtils . isNotBlank ( request . getTabActionStatus ( ) ) ) {
categorizedSubscriptionResult =
switch ( request . getTabActionStatus ( ) ) {
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
case "COMPLETED" :
requestedDevices = installedDevices ;
break ;
case "PENDING" :
requestedDevices = pendingDevices ;
break ;
case "ERROR" :
requestedDevices = errorDevices ;
break ;
case "NEW" :
requestedDevices = newDevices ;
break ;
case "SUBSCRIBED" :
requestedDevices = subscribedDevices ;
break ;
}
} else {
} else {
categorizedSubscriptionResult =
requestedDevices . addAll ( installedDevices ) ;
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices , subscribedDevices ) ;
requestedDevices . addAll ( pendingDevices ) ;
requestedDevices . addAll ( errorDevices ) ;
requestedDevices . addAll ( newDevices ) ;
requestedDevices . addAll ( subscribedDevices ) ;
}
}
CategorizedSubscriptionResult categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices , subscribedDevices ) ;
DeviceSubscriptionResponseDTO deviceSubscriptionResponse =
DeviceSubscriptionResponseDTO deviceSubscriptionResponse =
new DeviceSubscriptionResponseDTO ( totalDevices , statusPercentages , categorizedSubscriptionResult ) ;
new DeviceSubscriptionResponseDTO ( totalDevices , statusPercentages , categorizedSubscriptionResult ) ;
@ -2520,8 +2641,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
@Override
@Override
public DeviceSubscriptionResponseDTO getAllSubscriptionDetailsByUUID ( String uuid , String subscriptionStatus , int offset , int limit )
public DeviceSubscriptionResponseDTO getAllSubscriptionDetailsByUUID ( String uuid , String subscriptionStatus , PaginationRequest request ,
throws ApplicationManagementException {
int offset , int limit ) throws ApplicationManagementException {
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
int tenantId = PrivilegedCarbonContext . getThreadLocalCarbonContext ( ) . getTenantId ( true ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
boolean unsubscribe = subscriptionStatus . equals ( "unsubscribed" ) ;
@ -2538,7 +2659,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
int appReleaseId = applicationReleaseDTO . getId ( ) ;
int appReleaseId = applicationReleaseDTO . getId ( ) ;
List < DeviceSubscriptionDTO > allSubscriptions =
List < DeviceSubscriptionDTO > allSubscriptions =
subscriptionDAO . getAllSubscriptionsDetails ( appReleaseId , unsubscribe , tenantId , offset , limit ) ;
subscriptionDAO . getAllSubscriptionsDetails ( appReleaseId , unsubscribe , tenantId , request . getActionStatus ( ) ,
request . getActionType ( ) , request . getActionTriggeredBy ( ) , offset , limit ) ;
// empty response for no subscriptions
// empty response for no subscriptions
if ( allSubscriptions . isEmpty ( ) ) {
if ( allSubscriptions . isEmpty ( ) ) {
@ -2564,16 +2686,18 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
statusCounts . put ( "NEW" , 0 ) ;
statusCounts . put ( "NEW" , 0 ) ;
List < DeviceDetailsDTO > allDevices =
List < DeviceDetailsDTO > allDevices =
deviceManagementProviderService . getDevicesByTenantId ( tenantId , applicationDTO . getDeviceTypeId ( ) ) ;
deviceManagementProviderService . getDevicesByTenantId ( tenantId , applicationDTO . getDeviceTypeId ( ) , request . getOwner ( ) ,
request . getDeviceStatus ( ) ) ;
for ( DeviceDetailsDTO device : allDevices ) {
for ( DeviceDetailsDTO device : allDevices ) {
Integer deviceId = device . getDeviceId ( ) ;
Integer deviceId = device . getDeviceId ( ) ;
OwnerWithDeviceDTO ownerWithDevice =
OwnerWithDeviceDTO ownerWithDevice =
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId ) ;
deviceManagementProviderService . getOwnerWithDeviceByDeviceId ( deviceId , request . getOwner ( ) , request . getDeviceName ( ) ,
if ( ownerWithDevice = = null ) {
request . getDeviceStatus ( ) ) ;
if ( ownerWithDevice = = null | | ( request . getDeviceName ( ) ! = null & & ! request . getDeviceName ( ) . isEmpty ( ) & &
( ownerWithDevice . getDeviceNames ( ) = = null | | ! ownerWithDevice . getDeviceNames ( ) . contains ( request . getDeviceName ( ) ) ) ) ) {
continue ;
continue ;
}
}
if ( allSubscriptionMap . containsKey ( deviceId ) ) {
if ( allSubscriptionMap . containsKey ( deviceId ) ) {
DeviceSubscriptionDTO subscription = allSubscriptionMap . get ( deviceId ) ;
DeviceSubscriptionDTO subscription = allSubscriptionMap . get ( deviceId ) ;
DeviceSubscriptionData deviceDetail = new DeviceSubscriptionData ( ) ;
DeviceSubscriptionData deviceDetail = new DeviceSubscriptionData ( ) ;
@ -2632,6 +2756,29 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
statusPercentages . put ( entry . getKey ( ) , Double . valueOf ( formattedPercentage ) ) ;
}
}
List < DeviceSubscriptionData > requestedDevices = new ArrayList < > ( ) ;
if ( StringUtils . isNotBlank ( request . getTabActionStatus ( ) ) ) {
switch ( request . getTabActionStatus ( ) ) {
case "COMPLETED" :
requestedDevices = installedDevices ;
break ;
case "PENDING" :
requestedDevices = pendingDevices ;
break ;
case "ERROR" :
requestedDevices = errorDevices ;
break ;
case "NEW" :
requestedDevices = newDevices ;
break ;
}
} else {
requestedDevices . addAll ( installedDevices ) ;
requestedDevices . addAll ( pendingDevices ) ;
requestedDevices . addAll ( errorDevices ) ;
requestedDevices . addAll ( newDevices ) ;
}
CategorizedSubscriptionResult categorizedSubscriptionResult =
CategorizedSubscriptionResult categorizedSubscriptionResult =
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
new CategorizedSubscriptionResult ( installedDevices , pendingDevices , errorDevices , newDevices ) ;
DeviceSubscriptionResponseDTO result =
DeviceSubscriptionResponseDTO result =