Implementing application operations for app management

feature/appm-store/pbac
Chathura Ekanayake 7 years ago
parent 5811eb6a9e
commit 28f1ecfb5b

@ -109,4 +109,20 @@ public class ApplicationManagementAPIImpl {
return Response.status(Response.Status.OK).entity(application).build();
}
@DELETE
@Path("applications/{appuuid}")
public Response deleteApplication(@PathParam("appuuid") String uuid) {
ApplicationManager applicationManager = APIUtil.getApplicationManager();
try {
applicationManager.deleteApplication(uuid);
} catch (ApplicationManagementException e) {
String msg = "Error occurred while deleting the application: " + uuid;
log.error(msg, e);
return Response.status(Response.Status.BAD_REQUEST).build();
}
String responseMsg = "Successfully deleted the application: " + uuid;
return Response.status(Response.Status.OK).entity(responseMsg).build();
}
}

@ -18,7 +18,7 @@
*/
package org.wso2.carbon.device.application.mgt.common.exception;
public abstract class ApplicationManagementException extends Exception {
public class ApplicationManagementException extends Exception {
String message;

@ -29,7 +29,7 @@ public interface ApplicationManager{
public Application editApplication(Application application) throws ApplicationManagementException;
public void deleteApplication(int uuid) throws ApplicationManagementException;
public void deleteApplication(String uuid) throws ApplicationManagementException;
public ApplicationList getApplications(Filter filter) throws ApplicationManagementException;
}

@ -36,7 +36,7 @@ public interface ApplicationDAO {
Application editApplication(Application application) throws ApplicationManagementDAOException;
void deleteApplication(Application application) throws ApplicationManagementDAOException;
void deleteApplication(String uuid) throws ApplicationManagementDAOException;
int getApplicationCount(Filter filter) throws ApplicationManagementDAOException;
@ -44,7 +44,9 @@ public interface ApplicationDAO {
void editProperties(Map<String, String> properties) throws ApplicationManagementDAOException;
void deleteProperties(List<String> propertyKeys) throws ApplicationManagementDAOException;
void deleteProperties(int applicationId) throws ApplicationManagementDAOException;
void deleteTags(int applicationId) throws ApplicationManagementDAOException;
void changeLifeCycle(LifecycleState lifecycleState) throws ApplicationManagementDAOException;

@ -43,6 +43,8 @@ public class Util {
application.setId(rs.getInt("ID"));
application.setName(rs.getString("NAME"));
application.setUuid(rs.getString("UUID"));
application.setIdentifier(rs.getString("IDENTIFIER"));
application.setShortDescription(rs.getString("SHORT_DESCRIPTION"));
application.setDescription(rs.getString("DESCRIPTION"));
application.setIconName(rs.getString("ICON_NAME"));
application.setBannerName(rs.getString("BANNER_NAME"));

@ -37,11 +37,6 @@ public abstract class AbstractApplicationDAOImpl extends AbstractDAOImpl impleme
private static final Log log = LogFactory.getLog(AbstractApplicationDAOImpl.class);
@Override
public void deleteApplication(Application application) throws ApplicationManagementDAOException {
}
@Override
public int getApplicationCount(Filter filter) throws ApplicationManagementDAOException {
if(log.isDebugEnabled()){

@ -146,22 +146,32 @@ public class H2ApplicationDAOImpl extends AbstractApplicationDAOImpl {
}
@Override
public Application editApplication(Application application) throws ApplicationManagementDAOException {
return null;
public void deleteApplication(String uuid) throws ApplicationManagementDAOException {
}
@Override
public void addProperties(Map<String, String> properties) throws ApplicationManagementDAOException {
public void deleteProperties(int applicationId) throws ApplicationManagementDAOException {
}
@Override
public void editProperties(Map<String, String> properties) throws ApplicationManagementDAOException {
public void deleteTags(int applicationId) throws ApplicationManagementDAOException {
}
@Override
public Application editApplication(Application application) throws ApplicationManagementDAOException {
return null;
}
@Override
public void addProperties(Map<String, String> properties) throws ApplicationManagementDAOException {
}
@Override
public void deleteProperties(List<String> propertyKeys) throws ApplicationManagementDAOException {
public void editProperties(Map<String, String> properties) throws ApplicationManagementDAOException {
}

@ -189,6 +189,27 @@ public class MySQLApplicationDAOImpl extends AbstractApplicationDAOImpl {
return application;
}
@Override
public void deleteApplication(String uuid) throws ApplicationManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "DELETE FROM APPM_APPLICATION WHERE UUID = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, uuid);
stmt.executeUpdate();
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while deleting the application: " + uuid, e);
} finally {
Util.cleanupResources(stmt, rs);
}
}
@Override
public int getApplicationId(String uuid) throws ApplicationManagementDAOException {
Connection conn = null;
@ -216,7 +237,6 @@ public class MySQLApplicationDAOImpl extends AbstractApplicationDAOImpl {
}
return id;
}
@Override
@ -298,6 +318,22 @@ public class MySQLApplicationDAOImpl extends AbstractApplicationDAOImpl {
stmt.executeBatch();
}
// delete existing properties and add new ones. if no properties are set, existing ones will be deleted.
sql = "DELETE FROM APPM_APPLICATION_PROPERTY WHERE APPLICATION_ID = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, application.getId());
stmt.executeUpdate();
sql = "INSERT INTO APPM_APPLICATION_PROPERTY (PROP_KEY, PROP_VAL, APPLICATION_ID) VALUES (?, ?, ?); ";
stmt = conn.prepareStatement(sql);
for (String propKey : application.getProperties().keySet()) {
stmt.setString(1, propKey);
stmt.setString(2, application.getProperties().get(propKey));
stmt.setInt(3, application.getId());
stmt.addBatch();
}
stmt.executeBatch();
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} catch (SQLException e) {
@ -318,8 +354,47 @@ public class MySQLApplicationDAOImpl extends AbstractApplicationDAOImpl {
}
@Override
public void deleteProperties(List<String> propertyKeys) throws ApplicationManagementDAOException {
public void deleteProperties(int applicationId) throws ApplicationManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "DELETE FROM APPM_APPLICATION_PROPERTY WHERE APPLICATION_ID = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, applicationId);
stmt.executeUpdate();
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while deleting properties of application: " + applicationId, e);
} finally {
Util.cleanupResources(stmt, rs);
}
}
@Override
public void deleteTags(int applicationId) throws ApplicationManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = this.getConnection();
String sql = "DELETE FROM APPM_APPLICATION_TAG WHERE APPLICATION_ID = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, applicationId);
stmt.executeUpdate();
} catch (DBConnectionException e) {
throw new ApplicationManagementDAOException("Error occurred while obtaining the DB connection.", e);
} catch (SQLException e) {
throw new ApplicationManagementDAOException("Error occurred while deleting tags of application: " + applicationId, e);
} finally {
Util.cleanupResources(stmt, rs);
}
}
@Override
@ -345,29 +420,30 @@ public class MySQLApplicationDAOImpl extends AbstractApplicationDAOImpl {
try {
conn = this.getConnection();
sql += "INSERT INTO APPM_APPLICATION (UUID, NAME, SHORT_DESCRIPTION, DESCRIPTION, ICON_NAME, BANNER_NAME, " +
sql += "INSERT INTO APPM_APPLICATION (UUID, IDENTIFIER, NAME, SHORT_DESCRIPTION, DESCRIPTION, ICON_NAME, BANNER_NAME, " +
"VIDEO_NAME, SCREENSHOTS, CREATED_BY, CREATED_AT, MODIFIED_AT, APPLICATION_CATEGORY_ID, " + "" +
"PLATFORM_ID, TENANT_ID, LIFECYCLE_STATE_ID, LIFECYCLE_STATE_MODIFIED_AT, " +
"LIFECYCLE_STATE_MODIFIED_BY) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
"LIFECYCLE_STATE_MODIFIED_BY) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.setString(1, application.getUuid());
stmt.setString(2, application.getName());
stmt.setString(3, application.getShortDescription());
stmt.setString(4, application.getDescription());
stmt.setString(5, application.getIconName());
stmt.setString(6, application.getBannerName());
stmt.setString(7, application.getVideoName());
stmt.setString(8, JSONUtil.listToJsonArrayString(application.getScreenshots()));
stmt.setString(9, application.getUser().getUserName());
stmt.setDate(10, new Date(application.getCreatedAt().getTime()));
stmt.setDate(11, new Date(application.getModifiedAt().getTime()));
stmt.setInt(12, application.getCategory().getId());
stmt.setInt(13, application.getPlatform().getId());
stmt.setInt(14, application.getUser().getTenantId());
stmt.setInt(15, application.getCurrentLifecycle().getLifecycleState().getId());
stmt.setDate(16, new Date(application.getCurrentLifecycle().getLifecycleStateModifiedAt().getTime()));
stmt.setString(17, application.getCurrentLifecycle().getGetLifecycleStateModifiedBy());
stmt.setString(2, application.getIdentifier());
stmt.setString(3, application.getName());
stmt.setString(4, application.getShortDescription());
stmt.setString(5, application.getDescription());
stmt.setString(6, application.getIconName());
stmt.setString(7, application.getBannerName());
stmt.setString(8, application.getVideoName());
stmt.setString(9, JSONUtil.listToJsonArrayString(application.getScreenshots()));
stmt.setString(10, application.getUser().getUserName());
stmt.setDate(11, new Date(application.getCreatedAt().getTime()));
stmt.setDate(12, new Date(application.getModifiedAt().getTime()));
stmt.setInt(13, application.getCategory().getId());
stmt.setInt(14, application.getPlatform().getId());
stmt.setInt(15, application.getUser().getTenantId());
stmt.setInt(16, application.getCurrentLifecycle().getLifecycleState().getId());
stmt.setDate(17, new Date(application.getCurrentLifecycle().getLifecycleStateModifiedAt().getTime()));
stmt.setString(18, application.getCurrentLifecycle().getGetLifecycleStateModifiedBy());
stmt.executeUpdate();
rs = stmt.getGeneratedKeys();

@ -18,6 +18,9 @@
*/
package org.wso2.carbon.device.application.mgt.core.impl;
import com.sun.corba.se.spi.legacy.connection.Connection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.application.mgt.common.*;
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
@ -26,6 +29,7 @@ import org.wso2.carbon.device.application.mgt.core.dao.ApplicationDAO;
import org.wso2.carbon.device.application.mgt.core.dao.LifecycleStateDAO;
import org.wso2.carbon.device.application.mgt.core.dao.PlatformDAO;
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
import org.wso2.carbon.device.application.mgt.core.exception.NotFoundException;
import org.wso2.carbon.device.application.mgt.core.exception.ValidationException;
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
@ -35,7 +39,7 @@ import java.util.Date;
public class ApplicationManagerImpl implements ApplicationManager {
private static final Log log = LogFactory.getLog(ApplicationManagerImpl.class);
public static final String CREATED = "created";
@Override
@ -111,8 +115,26 @@ public class ApplicationManagerImpl implements ApplicationManager {
}
@Override
public void deleteApplication(int uuid) throws ApplicationManagementException {
public void deleteApplication(String uuid) throws ApplicationManagementException {
try {
ConnectionManagerUtil.openConnection();
ApplicationDAO applicationDAO = DAOFactory.getApplicationDAO();
int appId = applicationDAO.getApplicationId(uuid);
ConnectionManagerUtil.beginTransaction();
applicationDAO.deleteTags(appId);
applicationDAO.deleteProperties(appId);
applicationDAO.deleteApplication(uuid);
ConnectionManagerUtil.commitTransaction();
} catch (ApplicationManagementDAOException e) {
ConnectionManagerUtil.rollbackTransaction();
String msg = "Failed to delete application: " + uuid;
throw new ApplicationManagementException(msg, e);
} finally {
ConnectionManagerUtil.closeConnection();
}
}
@Override

Loading…
Cancel
Save