|
|
@ -50,6 +50,7 @@ import io.entgra.device.mgt.core.application.mgt.core.util.ApplicationManagement
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.ConnectionManagerUtil;
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.ConnectionManagerUtil;
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.Constants;
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.Constants;
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.VppHttpUtil;
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.VppHttpUtil;
|
|
|
|
|
|
|
|
import io.entgra.device.mgt.core.application.mgt.core.util.APIUtil;
|
|
|
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
|
|
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
|
|
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
|
|
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
|
|
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService;
|
|
|
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService;
|
|
|
@ -71,6 +72,7 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|
|
|
private static final String USER_UPDATE = APP_API + "/users/update";
|
|
|
|
private static final String USER_UPDATE = APP_API + "/users/update";
|
|
|
|
private static final String USER_GET = APP_API + "/users";
|
|
|
|
private static final String USER_GET = APP_API + "/users";
|
|
|
|
private static final String ASSIGNMENTS_POST = APP_API + "/assets/associate";
|
|
|
|
private static final String ASSIGNMENTS_POST = APP_API + "/assets/associate";
|
|
|
|
|
|
|
|
private static final String ASSIGNMENTS_GET = APP_API + "/assignments";
|
|
|
|
private static final String TOKEN = "";
|
|
|
|
private static final String TOKEN = "";
|
|
|
|
private static final String LOOKUP_API = "https://uclient-api.itunes.apple" +
|
|
|
|
private static final String LOOKUP_API = "https://uclient-api.itunes.apple" +
|
|
|
|
".com/WebObjects/MZStorePlatform.woa/wa/lookup?version=2&id=";
|
|
|
|
".com/WebObjects/MZStorePlatform.woa/wa/lookup?version=2&id=";
|
|
|
@ -285,10 +287,10 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|
|
|
VppAssetDTO vppAssetDTOs = getAssetByAppId(application.getId());
|
|
|
|
VppAssetDTO vppAssetDTOs = getAssetByAppId(application.getId());
|
|
|
|
if (vppAssetDTOs == null) {
|
|
|
|
if (vppAssetDTOs == null) {
|
|
|
|
vppAssetDTOs = new VppAssetDTO();
|
|
|
|
vppAssetDTOs = new VppAssetDTO();
|
|
|
|
vppAssetDTOs.setAppId(application.getId());
|
|
|
|
vppAssetDTO.setAppId(application.getId());
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
ConnectionManagerUtil.beginDBTransaction();
|
|
|
|
ConnectionManagerUtil.beginDBTransaction();
|
|
|
|
if (vppApplicationDAO.addAsset(vppAssetDTOs, tenantId) != -1) {
|
|
|
|
if (vppApplicationDAO.addAsset(vppAssetDTO, tenantId) != -1) {
|
|
|
|
ConnectionManagerUtil.commitDBTransaction();
|
|
|
|
ConnectionManagerUtil.commitDBTransaction();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ConnectionManagerUtil.rollbackDBTransaction();
|
|
|
|
ConnectionManagerUtil.rollbackDBTransaction();
|
|
|
@ -413,7 +415,7 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public VppAssetDTO getAssetByAppId(int appId) throws ApplicationManagementException {
|
|
|
|
public VppAssetDTO getAssetByAppId(int appId) throws ApplicationManagementException {
|
|
|
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
|
|
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -433,40 +435,12 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public ProxyResponse callVPPBackend(String url,
|
|
|
|
|
|
|
|
String payload,
|
|
|
|
|
|
|
|
String accessToken,
|
|
|
|
|
|
|
|
String method) throws IOException {
|
|
|
|
|
|
|
|
return VppHttpUtil.execute(url, payload, accessToken, method);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getVppToken() throws ApplicationManagementException {
|
|
|
|
|
|
|
|
String token = "";
|
|
|
|
|
|
|
|
MetadataManagementService meta = DeviceManagementDataHolder
|
|
|
|
|
|
|
|
.getInstance().getMetadataManagementService();
|
|
|
|
|
|
|
|
Metadata metadata = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
metadata = meta.retrieveMetadata("DEP_META_KEY");
|
|
|
|
|
|
|
|
if (metadata != null) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gson g = new Gson();
|
|
|
|
|
|
|
|
DepConfig depConfigs = g.fromJson(metadata.getMetaValue(), DepConfig.class);
|
|
|
|
|
|
|
|
token = depConfigs.getAccessToken();
|
|
|
|
|
|
|
|
return token;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}catch (MetadataManagementException e) {
|
|
|
|
|
|
|
|
String msg = "Error when retrieving metadata of vpp feature";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return token;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean addAssociation(VppAssetDTO asset, List<VppUserDTO> vppUsers) throws
|
|
|
|
public boolean addAssociation(VppAssetDTO asset, List<VppUserDTO> vppUsers) throws
|
|
|
|
ApplicationManagementException {
|
|
|
|
ApplicationManagementException {
|
|
|
|
|
|
|
|
|
|
|
|
List<VppAssociationDTO> associations = new ArrayList<>(); // To save to UEM DBs
|
|
|
|
List<VppAssociationDTO> associations = new ArrayList<>(); // To save to UEM DBs
|
|
|
|
List<String> clientUserIds = new ArrayList<>(); // Need this to send to vpp backend.
|
|
|
|
List<String> clientUserIds = new ArrayList<>(); // Need this to send to vpp backend.
|
|
|
|
|
|
|
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
|
|
|
if (asset != null) {
|
|
|
|
if (asset != null) {
|
|
|
|
for (VppUserDTO vppUserDTO : vppUsers) {
|
|
|
|
for (VppUserDTO vppUserDTO : vppUsers) {
|
|
|
|
VppAssociationDTO associationDTO = VppHttpUtil.getAssociation(vppUserDTO, asset);
|
|
|
|
VppAssociationDTO associationDTO = VppHttpUtil.getAssociation(vppUserDTO, asset);
|
|
|
@ -494,7 +468,75 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|
|
|
|
|
|
|
|
|
|
|
ProxyResponse proxyResponse = callVPPBackend(ASSIGNMENTS_POST, payload, TOKEN,
|
|
|
|
ProxyResponse proxyResponse = callVPPBackend(ASSIGNMENTS_POST, payload, TOKEN,
|
|
|
|
Constants.VPP.POST);
|
|
|
|
Constants.VPP.POST);
|
|
|
|
|
|
|
|
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
|
|
|
|
|
|
|
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.EVENT_ID)) {
|
|
|
|
|
|
|
|
// Create assignment does not return any useful data. Its needed to call the backend again
|
|
|
|
|
|
|
|
ProxyResponse getAssignmentResponse = callVPPBackend(ASSIGNMENTS_GET, null, TOKEN, Constants.VPP.GET);
|
|
|
|
|
|
|
|
if ((getAssignmentResponse.getCode() == HttpStatus.SC_OK || getAssignmentResponse.getCode() ==
|
|
|
|
|
|
|
|
HttpStatus.SC_CREATED) && getAssignmentResponse.getData().contains(Constants.VPP.TOTAL_PAGES)) {
|
|
|
|
|
|
|
|
// VppAssociateResponseWrapper vppAssociateResponseWrapper = gson.fromJson
|
|
|
|
|
|
|
|
// (getAssignmentResponse.getData(), VppAssociateResponseWrapper.class);
|
|
|
|
|
|
|
|
for (VppAssociationDTO association : associations) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VppAssociationDTO vppAssociation = getAssociation(association.getAssetId(), association.getClientId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (vppAssociation == null) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.beginDBTransaction();
|
|
|
|
|
|
|
|
if (vppApplicationDAO.addAssociation(association, tenantId) != -1) {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.commitDBTransaction();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ConnectionManagerUtil.rollbackDBTransaction();
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
} catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.rollbackDBTransaction();
|
|
|
|
|
|
|
|
String msg = "Error occurred while adding the Assignment.";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (TransactionManagementException e) {
|
|
|
|
|
|
|
|
String msg = "Error occurred while executing database transaction for adding Assignment.";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (DBConnectionException e) {
|
|
|
|
|
|
|
|
String msg = "Error occurred while retrieving the database connection for adding Assignment.";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.closeDBConnection();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.beginDBTransaction();
|
|
|
|
|
|
|
|
if (vppApplicationDAO.updateAssociation(association, tenantId) == null) {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.rollbackDBTransaction();
|
|
|
|
|
|
|
|
String msg = "Unable to update the assignment: " +association.getAssetId();
|
|
|
|
|
|
|
|
log.error(msg);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ConnectionManagerUtil.commitDBTransaction();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
|
|
|
|
} catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.rollbackDBTransaction();
|
|
|
|
|
|
|
|
String msg = "Error occurred while updating the Asset.";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (TransactionManagementException e) {
|
|
|
|
|
|
|
|
String msg = "Error occurred while executing database transaction for Asset update.";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (DBConnectionException e) {
|
|
|
|
|
|
|
|
String msg = "Error occurred while retrieving the database connection for Asset update.";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.closeDBConnection();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
} catch (IOException e) {
|
|
|
|
String msg = "Error while adding associations";
|
|
|
|
String msg = "Error while adding associations";
|
|
|
@ -507,4 +549,52 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public VppAssociationDTO getAssociation(int assetId, int userId) throws ApplicationManagementException {
|
|
|
|
|
|
|
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.openDBConnection();
|
|
|
|
|
|
|
|
return vppApplicationDAO.getAssociation(assetId, userId, tenantId);
|
|
|
|
|
|
|
|
} catch (DBConnectionException e) {
|
|
|
|
|
|
|
|
String msg = "DB Connection error occurs while getting assignment related to user of id " + userId + ".";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} catch (ApplicationManagementDAOException e) {
|
|
|
|
|
|
|
|
String msg = "Error occurred while getting assignment data related to user of id " + userId + ".";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
ConnectionManagerUtil.closeDBConnection();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public ProxyResponse callVPPBackend(String url,
|
|
|
|
|
|
|
|
String payload,
|
|
|
|
|
|
|
|
String accessToken,
|
|
|
|
|
|
|
|
String method) throws IOException {
|
|
|
|
|
|
|
|
return VppHttpUtil.execute(url, payload, accessToken, method);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getVppToken() throws ApplicationManagementException {
|
|
|
|
|
|
|
|
String token = "";
|
|
|
|
|
|
|
|
MetadataManagementService meta = APIUtil.getMetadataManager();
|
|
|
|
|
|
|
|
Metadata metadata = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
metadata = meta.retrieveMetadata("DEP_META_KEY");
|
|
|
|
|
|
|
|
if (metadata != null) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gson g = new Gson();
|
|
|
|
|
|
|
|
DepConfig depConfigs = g.fromJson(metadata.getMetaValue(), DepConfig.class);
|
|
|
|
|
|
|
|
token = depConfigs.getAccessToken();
|
|
|
|
|
|
|
|
return token;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}catch (MetadataManagementException e) {
|
|
|
|
|
|
|
|
String msg = "Error when retrieving metadata of vpp feature";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
throw new ApplicationManagementException(msg, e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return token;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|