mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add modification for app getting logic
This commit is contained in:
parent
9dc885e888
commit
dc518dcca2
@ -80,12 +80,19 @@ public class Application {
|
||||
value = "Id of the Related device type of the application",
|
||||
example = "1, 2, 3")
|
||||
private int deviceTypeId;
|
||||
|
||||
@ApiModelProperty(name = "deviceType",
|
||||
value = "Related device type of the application",
|
||||
required = true,
|
||||
example = "IoS, Android, Arduino, RaspberryPi etc")
|
||||
private String deviceType;
|
||||
|
||||
@ApiModelProperty(name = "status",
|
||||
value = "Application status",
|
||||
required = true,
|
||||
example = "REMOVED, ACTIVE")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty(name = "applicationReleases",
|
||||
value = "List of application releases",
|
||||
required = true)
|
||||
@ -190,4 +197,8 @@ public class Application {
|
||||
public void setDeviceTypeId(int deviceTypeId) {
|
||||
this.deviceTypeId = deviceTypeId;
|
||||
}
|
||||
|
||||
public String getStatus() { return status; }
|
||||
|
||||
public void setStatus(String status) { this.status = status; }
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
package org.wso2.carbon.device.application.mgt.common;
|
||||
|
||||
public enum DeviceType {
|
||||
public enum DeviceTypes {
|
||||
ANDROID, IOS
|
||||
}
|
||||
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.application.mgt.common;
|
||||
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
|
||||
/**
|
||||
* Filter represents a criteria that can be used for searching applications.
|
||||
*/
|
||||
@ -63,6 +65,11 @@ public class Filter {
|
||||
*/
|
||||
private String currentAppReleaseState;
|
||||
|
||||
/***
|
||||
* Supported device type for the application. i.e Android, iOS, Windows etc
|
||||
*/
|
||||
private DeviceType deviceType;
|
||||
|
||||
public int getLimit() {
|
||||
return limit;
|
||||
}
|
||||
@ -119,11 +126,13 @@ public class Filter {
|
||||
this.appCategory = appCategory;
|
||||
}
|
||||
|
||||
public String getCurrentAppReleaseState() {
|
||||
return currentAppReleaseState;
|
||||
}
|
||||
public String getCurrentAppReleaseState() { return currentAppReleaseState; }
|
||||
|
||||
public void setCurrentAppReleaseState(String currentAppReleaseState) {
|
||||
this.currentAppReleaseState = currentAppReleaseState;
|
||||
}
|
||||
|
||||
public DeviceType getDeviceType() { return deviceType; }
|
||||
|
||||
public void setDeviceType(DeviceType deviceType) { this.deviceType = deviceType; }
|
||||
}
|
||||
|
||||
@ -78,6 +78,7 @@ public class Util {
|
||||
application.setSubType(rs.getString("SUB_TYPE"));
|
||||
application.setPaymentCurrency(rs.getString("CURRENCY"));
|
||||
application.setIsRestricted(rs.getBoolean("RESTRICTED"));
|
||||
application.setStatus(rs.getString("STATUS"));
|
||||
String tag = rs.getString("APP_TAG");
|
||||
String unrestrictedRole = rs.getString("ROLE");
|
||||
if (tag != null) {
|
||||
|
||||
@ -133,28 +133,32 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
||||
ResultSet rs = null;
|
||||
ApplicationList applicationList = new ApplicationList();
|
||||
Pagination pagination = new Pagination();
|
||||
String sql = "SELECT AP_APP.ID AS APP_ID, AP_APP.NAME AS APP_NAME, AP_APP.TYPE AS APP_TYPE, AP_APP.APP_CATEGORY"
|
||||
+ " AS APP_CATEGORY, AP_APP.SUB_TYPE AS SUB_TYPE, AP_APP.CURRENCY AS CURRENCY, "
|
||||
+ "AP_APP.RESTRICTED AS RESTRICTED, AP_APP_TAG.TAG AS APP_TAG, AP_UNRESTRICTED_ROLE.ROLE "
|
||||
+ "AS ROLE FROM ((AP_APP LEFT JOIN AP_APP_TAG ON AP_APP.ID = AP_APP_TAG.AP_APP_ID) "
|
||||
String sql = "SELECT "
|
||||
+ "AP_APP.ID AS APP_ID,"
|
||||
+ " AP_APP.NAME AS APP_NAME,"
|
||||
+ " AP_APP.TYPE AS APP_TYPE,"
|
||||
+ " AP_APP.APP_CATEGORY AS APP_CATEGORY,"
|
||||
+ " AP_APP.SUB_TYPE AS SUB_TYPE,"
|
||||
+ " AP_APP.CURRENCY AS CURRENCY, "
|
||||
+ "AP_APP.RESTRICTED AS RESTRICTED,"
|
||||
+ " AP_APP_TAG.TAG AS APP_TAG,"
|
||||
+ " AP_UNRESTRICTED_ROLE.ROLE AS ROLE "
|
||||
+ "FROM ((AP_APP LEFT JOIN AP_APP_TAG ON AP_APP.ID = AP_APP_TAG.AP_APP_ID) "
|
||||
+ "LEFT JOIN AP_UNRESTRICTED_ROLE ON AP_APP.ID = AP_UNRESTRICTED_ROLE.AP_APP_ID) "
|
||||
+ "WHERE AP_APP.TENANT_ID = ? AND AP_APP.STATUS != ?";
|
||||
+ "WHERE AP_APP.TENANT_ID = ?";
|
||||
|
||||
|
||||
if (filter == null) {
|
||||
throw new ApplicationManagementDAOException("Filter need to be instantiated");
|
||||
}
|
||||
|
||||
if (filter.getAppType() != null && !filter.getAppType().isEmpty()) {
|
||||
sql += " AND AP_APP.TYPE ";
|
||||
sql += "= ?";
|
||||
}
|
||||
|
||||
if (filter.getAppCategory() != null && !filter.getAppCategory().isEmpty()) {
|
||||
sql += " AND AP_APP.APP_CATEGORY ";
|
||||
sql += "= ?";
|
||||
}
|
||||
|
||||
if (filter.getAppName() != null && !filter.getAppName().isEmpty()) {
|
||||
sql += " AND LOWER (AP_APP.NAME) ";
|
||||
if (filter.isFullMatch()) {
|
||||
@ -163,6 +167,10 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
||||
sql += "LIKE ?";
|
||||
}
|
||||
}
|
||||
if (filter.getDeviceType() != null ) {
|
||||
sql += " AND AP_APP.DEVICE_TYPE_ID ";
|
||||
sql += "= ?";
|
||||
}
|
||||
|
||||
String defaultSortOrder = "ASC";
|
||||
if (filter.getSortBy() != null && !filter.getSortBy().isEmpty()) {
|
||||
@ -177,7 +185,6 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
||||
conn = this.getDBConnection();
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(paramIndex++, tenantId);
|
||||
stmt.setString(paramIndex++, AppLifecycleState.REMOVED.toString());
|
||||
|
||||
if (filter.getAppType() != null && !filter.getAppType().isEmpty()) {
|
||||
stmt.setString(paramIndex++, filter.getAppType());
|
||||
@ -192,6 +199,10 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
||||
stmt.setString(paramIndex++, "%" + filter.getAppName().toLowerCase() + "%");
|
||||
}
|
||||
}
|
||||
if (filter.getDeviceType() != null ) {
|
||||
stmt.setInt(paramIndex++, filter.getDeviceType().getId());
|
||||
}
|
||||
|
||||
|
||||
if (filter.getLimit() == 0) {
|
||||
stmt.setInt(paramIndex++, 100);
|
||||
|
||||
@ -86,7 +86,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
private LifecycleStateDAO lifecycleStateDAO;
|
||||
private LifecycleStateManger lifecycleStateManger;
|
||||
|
||||
|
||||
public ApplicationManagerImpl() {
|
||||
initDataAccessObjects();
|
||||
lifecycleStateManger = DataHolder.getInstance().getLifecycleStateManager();
|
||||
@ -95,7 +94,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
private void initDataAccessObjects() {
|
||||
this.visibilityDAO = ApplicationManagementDAOFactory.getVisibilityDAO();
|
||||
this.applicationDAO = ApplicationManagementDAOFactory.getApplicationDAO();
|
||||
this.lifecycleStateDAO = ApplicationManagementDAOFactory.getLifecycleStateDAO();
|
||||
this.lifecycleStateDAO = ApplicationManagementDAOFactory.getLifecycleStateDAO();
|
||||
this.applicationReleaseDAO = ApplicationManagementDAOFactory.getApplicationReleaseDAO();
|
||||
}
|
||||
|
||||
@ -106,8 +105,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
* @throws RequestValidatingException if application creating request is invalid, returns {@link RequestValidatingException}
|
||||
* @throws ApplicationManagementException Catch all other throwing exceptions and returns {@link ApplicationManagementException}
|
||||
*/
|
||||
@Override
|
||||
public Application createApplication(Application application)
|
||||
@Override public Application createApplication(Application application)
|
||||
throws RequestValidatingException, ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
@ -205,11 +203,11 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApplicationList getApplications(Filter filter) throws ApplicationManagementException {
|
||||
@Override public ApplicationList getApplications(Filter filter) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
ApplicationList applicationList;
|
||||
List<Application> appList;
|
||||
List<ApplicationRelease> applicationReleases;
|
||||
|
||||
filter = validateFilter(filter);
|
||||
@ -218,9 +216,31 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
|
||||
try {
|
||||
if (filter.getDeviceType() != null ) {
|
||||
boolean isValidDeviceType = false;
|
||||
String deviceType = filter.getDeviceType().getName();
|
||||
List<DeviceType> deviceTypes = Util.getDeviceManagementService().getDeviceTypes();
|
||||
for (DeviceType dt : deviceTypes) {
|
||||
if (dt.getName().equals(deviceType)) {
|
||||
filter.getDeviceType().setId(dt.getId());
|
||||
isValidDeviceType = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isValidDeviceType) {
|
||||
throw new BadRequestException("Invalid device type is found, device type is " + deviceType);
|
||||
}
|
||||
}
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
applicationList = applicationDAO.getApplications(filter, tenantId);
|
||||
if(applicationList != null && applicationList.getApplications() != null && !applicationList
|
||||
appList = applicationList.getApplications();
|
||||
for ( Application app : appList){
|
||||
if (AppLifecycleState.REMOVED.toString().equals(app.getStatus())){
|
||||
appList.remove(app);
|
||||
}
|
||||
}
|
||||
applicationList.setApplications(appList);
|
||||
if (applicationList.getApplications() != null && !applicationList
|
||||
.getApplications().isEmpty()) {
|
||||
if (!isAdminUser(userName, tenantId, CarbonConstants.UI_ADMIN_PERMISSION_COLLECTION)) {
|
||||
applicationList = getRoleRestrictedApplicationList(applicationList, userName);
|
||||
@ -238,13 +258,15 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
throw new ApplicationManagementException(
|
||||
"DAO exception while getting applications for the user " + userName + " of tenant " + tenantId, e);
|
||||
} catch (DeviceManagementException e) {
|
||||
throw new ApplicationManagementException(
|
||||
"Error Occured when getting device type instance for " + filter.getDeviceType());
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApplicationRelease createRelease(int applicationId, ApplicationRelease applicationRelease)
|
||||
@Override public ApplicationRelease createRelease(int applicationId, ApplicationRelease applicationRelease)
|
||||
throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
@ -255,9 +277,8 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
Application existingApplication = this.applicationDAO.getApplicationById(applicationId, tenantId);
|
||||
if (existingApplication == null){
|
||||
throw new NotFoundException(
|
||||
"Couldn't find application for the application Id: " + applicationId);
|
||||
if (existingApplication == null) {
|
||||
throw new NotFoundException("Couldn't find application for the application Id: " + applicationId);
|
||||
}
|
||||
|
||||
// todo check whether admin or app creator.
|
||||
@ -286,7 +307,8 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
.createRelease(applicationRelease, existingApplication.getId(), tenantId);
|
||||
LifecycleState lifecycleState = getLifecycleStateInstant(AppLifecycleState.CREATED.toString(),
|
||||
AppLifecycleState.CREATED.toString());
|
||||
this.lifecycleStateDAO.addLifecycleState(lifecycleState, applicationId, applicationRelease.getUuid(), tenantId);
|
||||
this.lifecycleStateDAO
|
||||
.addLifecycleState(lifecycleState, applicationId, applicationRelease.getUuid(), tenantId);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
return applicationRelease;
|
||||
} catch (TransactionManagementException e) {
|
||||
@ -303,22 +325,21 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
throw new ApplicationManagementException(
|
||||
"Error occurred while adding new application release lifecycle state to the application release: "
|
||||
+ applicationId, e);
|
||||
} catch (ApplicationManagementDAOException e){
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new ApplicationManagementException(
|
||||
"Error occurred while adding new application release for application " + applicationId, e);
|
||||
}catch (UserStoreException e) {
|
||||
} catch (UserStoreException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new ApplicationManagementException(
|
||||
"Error occurred whecn checking whether user is admin user or not. Application release: "
|
||||
+ applicationId, e);
|
||||
} finally{
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Application getApplicationById(int appId, String state) throws ApplicationManagementException {
|
||||
@Override public Application getApplicationById(int appId, String state) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
Application application;
|
||||
@ -358,8 +379,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Application getApplicationByUuid(String uuid, String state) throws ApplicationManagementException {
|
||||
@Override public Application getApplicationByUuid(String uuid, String state) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
Application application;
|
||||
@ -399,8 +419,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRoleExists(Collection<String> unrestrictedRoleList, String userName)
|
||||
throws UserStoreException {
|
||||
private boolean isRoleExists(Collection<String> unrestrictedRoleList, String userName) throws UserStoreException {
|
||||
String[] roleList;
|
||||
roleList = getRolesOfUser(userName);
|
||||
for (String unrestrictedRole : unrestrictedRoleList) {
|
||||
@ -462,8 +481,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Application getApplicationByRelease(String appReleaseUUID) throws ApplicationManagementException {
|
||||
@Override public Application getApplicationByRelease(String appReleaseUUID) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
Application application;
|
||||
@ -472,7 +490,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
application = this.applicationDAO.getApplicationByRelease(appReleaseUUID, tenantId);
|
||||
|
||||
if (application.getUnrestrictedRoles().isEmpty() || isRoleExists(application.getUnrestrictedRoles(),
|
||||
userName)) {
|
||||
userName)) {
|
||||
return application;
|
||||
}
|
||||
return null;
|
||||
@ -484,7 +502,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
// todo rethink about this method
|
||||
// todo rethink about this method
|
||||
private List<ApplicationRelease> getReleases(Application application, String releaseState)
|
||||
throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
@ -521,8 +539,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
if (AppLifecycleState.PUBLISHED.toString()
|
||||
.equals(state) && filteredReleases.size() > 1) {
|
||||
if (AppLifecycleState.PUBLISHED.toString().equals(state) && filteredReleases.size() > 1) {
|
||||
log.warn("There are more than one application releases is found which is in PUBLISHED state");
|
||||
filteredReleases.sort((r1, r2) -> {
|
||||
if (r1.getLifecycleState().getUpdatedAt().after(r2.getLifecycleState().getUpdatedAt())) {
|
||||
@ -538,8 +555,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
return applicationReleases;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> deleteApplication(int applicationId) throws ApplicationManagementException {
|
||||
@Override public List<String> deleteApplication(int applicationId) throws ApplicationManagementException {
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
List<String> storedLocations = new ArrayList<>();
|
||||
@ -549,7 +565,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
application = this.applicationDAO.getApplicationById(applicationId, tenantId);
|
||||
|
||||
|
||||
if (application == null) {
|
||||
throw new NotFoundException("Couldn't found an application for Application ID: " + applicationId);
|
||||
}
|
||||
@ -589,7 +604,8 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new ApplicationManagementException(
|
||||
"Can't delete application release which has the UUID:" + applicationRelease
|
||||
.getUuid() + " and its belongs to the application which has application ID:"
|
||||
.getUuid()
|
||||
+ " and its belongs to the application which has application ID:"
|
||||
+ applicationId + " You have to move the lifecycle state from "
|
||||
+ currentState + " to acceptable state");
|
||||
}
|
||||
@ -663,8 +679,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
return directions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String deleteApplicationRelease(int applicationId, String releaseUuid)
|
||||
@Override public String deleteApplicationRelease(int applicationId, String releaseUuid)
|
||||
throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
@ -766,7 +781,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
UserRealm userRealm = DataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId);
|
||||
return userRealm != null && userRealm.getAuthorizationManager() != null && userRealm.getAuthorizationManager()
|
||||
.isUserAuthorized(MultitenantUtils.getTenantAwareUsername(username), permission,
|
||||
CarbonConstants.UI_PERMISSION_ACTION);
|
||||
CarbonConstants.UI_PERMISSION_ACTION);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -802,7 +817,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
"App Type contains in the application creating payload doesn't match with supported app types");
|
||||
}
|
||||
|
||||
if (application.getApplicationReleases().size() > 1 ){
|
||||
if (application.getApplicationReleases().size() > 1) {
|
||||
throw new RequestValidatingException(
|
||||
"Invalid payload. Application creating payload should contains one application release, but "
|
||||
+ "the payload contains more than one");
|
||||
@ -911,8 +926,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
|
||||
//todo check whether package names are same
|
||||
@Override
|
||||
public void updateApplicationArtifact(int appId, String deviceType, String uuid, InputStream binaryFile)
|
||||
@Override public void updateApplicationArtifact(int appId, String deviceType, String uuid, InputStream binaryFile)
|
||||
throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
|
||||
@ -928,8 +942,8 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
if (!isValidDeviceType) {
|
||||
throw new ValidationException(
|
||||
"Invalid request to update application release artifact, invalid application type: " + deviceType
|
||||
+ " for Application id: " + appId + " application release uuid: " + uuid);
|
||||
"Invalid request to update application release artifact, invalid application type: "
|
||||
+ deviceType + " for Application id: " + appId + " application release uuid: " + uuid);
|
||||
}
|
||||
if (appId <= 0) {
|
||||
throw new ValidationException(
|
||||
@ -974,7 +988,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
throw new ApplicationManagementException("Error occured while updating application artifact.", e);
|
||||
} catch (DeviceManagementException e) {
|
||||
throw new ApplicationManagementException("Error occured while getting supported device types in IoTS", e);
|
||||
} catch (DBConnectionException e) {
|
||||
} catch (DBConnectionException e) {
|
||||
throw new ApplicationManagementException(
|
||||
"Error occured when getting DB connection to update application release artifact of the application, appid: "
|
||||
+ appId + " and uuid " + uuid + ".", e);
|
||||
@ -1025,13 +1039,12 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
throws ApplicationManagementException {
|
||||
if (applicationRelease.getVersion() == null) {
|
||||
throw new ApplicationManagementException("ApplicationRelease version name is a mandatory parameter for "
|
||||
+ "creating release. It cannot be found.");
|
||||
+ "creating release. It cannot be found.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public LifecycleState getLifecycleState(int applicationId, String releaseUuid) throws
|
||||
ApplicationManagementException {
|
||||
@Override public LifecycleState getLifecycleState(int applicationId, String releaseUuid)
|
||||
throws ApplicationManagementException {
|
||||
LifecycleState lifecycleState;
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
@ -1039,7 +1052,8 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
if (lifecycleState == null) {
|
||||
return null;
|
||||
}
|
||||
lifecycleState.setNextStates(new ArrayList<>(lifecycleStateManger.getNextLifecycleStates(lifecycleState.getCurrentState())));
|
||||
lifecycleState.setNextStates(
|
||||
new ArrayList<>(lifecycleStateManger.getNextLifecycleStates(lifecycleState.getCurrentState())));
|
||||
|
||||
} catch (LifeCycleManagementDAOException e) {
|
||||
throw new ApplicationManagementException("Failed to get lifecycle state from database", e);
|
||||
@ -1049,8 +1063,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
return lifecycleState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeLifecycleState(int applicationId, String releaseUuid, LifecycleState state)
|
||||
@Override public void changeLifecycleState(int applicationId, String releaseUuid, LifecycleState state)
|
||||
throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
try {
|
||||
@ -1098,8 +1111,8 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Application updateApplication(int applicationId, Application application) throws ApplicationManagementException{
|
||||
@Override public Application updateApplication(int applicationId, Application application)
|
||||
throws ApplicationManagementException {
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
@ -1115,10 +1128,10 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
existingApplication = this.applicationDAO.getApplicationById(applicationId, tenantId);
|
||||
if (existingApplication == null) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new NotFoundException("Tried to update Application which is not in the publisher, " +
|
||||
"Please verify application details");
|
||||
throw new NotFoundException("Tried to update Application which is not in the publisher, "
|
||||
+ "Please verify application details");
|
||||
}
|
||||
if (!existingApplication.getUnrestrictedRoles().isEmpty()){
|
||||
if (!existingApplication.getUnrestrictedRoles().isEmpty()) {
|
||||
isExistingAppRestricted = true;
|
||||
}
|
||||
|
||||
@ -1150,9 +1163,9 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
if (isExistingAppRestricted && application.getUnrestrictedRoles().isEmpty()) {
|
||||
visibilityDAO.deleteUnrestrictedRoles(existingApplication.getUnrestrictedRoles(), application.getId(),
|
||||
tenantId);
|
||||
} else if(!isExistingAppRestricted && !application.getUnrestrictedRoles().isEmpty()){
|
||||
} else if (!isExistingAppRestricted && !application.getUnrestrictedRoles().isEmpty()) {
|
||||
visibilityDAO.addUnrestrictedRoles(application.getUnrestrictedRoles(), application.getId(), tenantId);
|
||||
} else if ( isExistingAppRestricted && !application.getUnrestrictedRoles().isEmpty()) {
|
||||
} else if (isExistingAppRestricted && !application.getUnrestrictedRoles().isEmpty()) {
|
||||
addingRoleList = getDifference(application.getUnrestrictedRoles(),
|
||||
existingApplication.getUnrestrictedRoles());
|
||||
removingRoleList = getDifference(existingApplication.getUnrestrictedRoles(),
|
||||
@ -1174,7 +1187,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
applicationDAO.deleteTags(removingTags, application.getId(), tenantId);
|
||||
}
|
||||
return applicationDAO.editApplication(application, tenantId);
|
||||
} catch (UserStoreException e) {
|
||||
} catch (UserStoreException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new ApplicationManagementException(
|
||||
"Error occurred while checking whether logged in user is ADMIN or not when updating application of application id: "
|
||||
@ -1183,8 +1196,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new ApplicationManagementException(
|
||||
"Error occurred while updating the application, application id: " + applicationId);
|
||||
}
|
||||
catch (VisibilityManagementDAOException e){
|
||||
} catch (VisibilityManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
throw new ApplicationManagementException(
|
||||
"Error occurred while updating the visibility restriction of the application. Application id is "
|
||||
@ -1221,7 +1233,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
private <T> List<T> getDifference(List<T> list1, Collection<T> list2) {
|
||||
List<T> list = new ArrayList<>();
|
||||
for (T t : list1) {
|
||||
if(!list2.contains(t)) {
|
||||
if (!list2.contains(t)) {
|
||||
list.add(t);
|
||||
}
|
||||
}
|
||||
@ -1244,10 +1256,9 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
|
||||
//todo check whether package names are same
|
||||
@Override
|
||||
public boolean updateRelease(int applicationId, String releaseUuid, String deviceType, ApplicationRelease updateRelease,
|
||||
InputStream binaryFileStram, InputStream iconFileStream, InputStream bannerFileStream,
|
||||
List<InputStream> attachments) throws ApplicationManagementException{
|
||||
@Override public boolean updateRelease(int applicationId, String releaseUuid, String deviceType,
|
||||
ApplicationRelease updateRelease, InputStream binaryFileStram, InputStream iconFileStream,
|
||||
InputStream bannerFileStream, List<InputStream> attachments) throws ApplicationManagementException {
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
|
||||
@ -32,14 +32,13 @@ import org.apache.commons.validator.routines.UrlValidator;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.application.mgt.common.ApplicationRelease;
|
||||
import org.wso2.carbon.device.application.mgt.common.ApplicationType;
|
||||
import org.wso2.carbon.device.application.mgt.common.DeviceType;
|
||||
import org.wso2.carbon.device.application.mgt.common.DeviceTypes;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.ParsingException;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.ArtifactsParser;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.Constants;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.StorageManagementUtil;
|
||||
import org.xml.sax.SAXException;
|
||||
@ -203,11 +202,11 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
||||
"application UUID " + applicationRelease.getUuid());
|
||||
}
|
||||
|
||||
if (DeviceType.ANDROID.toString().equalsIgnoreCase(deviceType)) {
|
||||
if (DeviceTypes.ANDROID.toString().equalsIgnoreCase(deviceType)) {
|
||||
ApkMeta apkMeta = ArtifactsParser.readAndroidManifestFile(cloneInputStream[2]);
|
||||
applicationRelease.setVersion(apkMeta.getVersionName());
|
||||
applicationRelease.setPackageName(apkMeta.getPackageName());
|
||||
} else if (DeviceType.IOS.toString().equalsIgnoreCase(deviceType)) {
|
||||
} else if (DeviceTypes.IOS.toString().equalsIgnoreCase(deviceType)) {
|
||||
NSDictionary plistInfo = ArtifactsParser.readiOSManifestFile(binaryFile);
|
||||
applicationRelease
|
||||
.setVersion(plistInfo.objectForKey(ArtifactsParser.IPA_BUNDLE_VERSION_KEY).toString());
|
||||
|
||||
@ -124,6 +124,10 @@ public interface ApplicationManagementAPI {
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
Response getApplications(
|
||||
@ApiParam(
|
||||
name = "deviceType",
|
||||
value = "Supporting device Type of the application")
|
||||
@QueryParam("device-type") String deviceType,
|
||||
@ApiParam(
|
||||
name = "name",
|
||||
value = "Name of the application")
|
||||
|
||||
@ -35,6 +35,7 @@ import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagemen
|
||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.NotFoundException;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@ -68,6 +69,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
||||
@Override
|
||||
@Consumes("application/json")
|
||||
public Response getApplications(
|
||||
@QueryParam("device-type") String deviceType,
|
||||
@QueryParam("name") String appName,
|
||||
@QueryParam("type") String appType,
|
||||
@QueryParam("category") String appCategory,
|
||||
@ -96,13 +98,22 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
||||
if (releaseState != null && !releaseState.isEmpty()) {
|
||||
filter.setCurrentAppReleaseState(releaseState);
|
||||
}
|
||||
if (deviceType != null && !deviceType.isEmpty()) {
|
||||
DeviceType dt = new DeviceType();
|
||||
dt.setName(deviceType);
|
||||
filter.setDeviceType(dt);
|
||||
}
|
||||
ApplicationList applications = applicationManager.getApplications(filter);
|
||||
if (applications.getApplications().isEmpty()) {
|
||||
return Response.status(Response.Status.NOT_FOUND)
|
||||
.entity("Couldn't find any application for requested query.").build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(applications).build();
|
||||
} catch (ApplicationManagementException e) {
|
||||
} catch(BadRequestException e){
|
||||
String msg = "Couldn't found a device type for " + deviceType;
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||
}catch (ApplicationManagementException e) {
|
||||
String msg = "Error occurred while getting the application list for publisher ";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
@ -158,6 +169,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
||||
|
||||
try {
|
||||
if (isInvalidReleaseCreatingRequest(binaryFile, iconFile, bannerFile, attachmentList, application.getType())) {
|
||||
// todo add msg
|
||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||
}
|
||||
|
||||
@ -210,6 +222,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
||||
} catch (ApplicationManagementException e) {
|
||||
String msg = "Error occurred while creating the application";
|
||||
log.error(msg, e);
|
||||
// todo add msg into return
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
|
||||
} catch (ResourceManagementException e) {
|
||||
String msg =
|
||||
|
||||
Loading…
Reference in New Issue
Block a user