Remove package attribute form Application

revert-70aa11f8
manoj 10 years ago
parent 3908705b68
commit 0e2e0fdd0e

@ -24,7 +24,6 @@ import java.util.Properties;
public class Application implements Serializable { public class Application implements Serializable {
private int id; private int id;
private String packageName;
private String platform; private String platform;
private String category; private String category;
private String name; private String name;
@ -33,6 +32,7 @@ public class Application implements Serializable {
private String version; private String version;
private String type; private String type;
private Properties appProperties; private Properties appProperties;
private String applicationIdentifier;
public String getType() { public String getType() {
return type; return type;
@ -85,14 +85,6 @@ public class Application implements Serializable {
this.version = version; this.version = version;
} }
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getPlatform() { public String getPlatform() {
return platform; return platform;
} }
@ -109,6 +101,14 @@ public class Application implements Serializable {
this.category = category; this.category = category;
} }
public String getApplicationIdentifier() {
return applicationIdentifier;
}
public void setApplicationIdentifier(String applicationIdentifier) {
this.applicationIdentifier = applicationIdentifier;
}
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) { if (this == o) {
return true; return true;
@ -138,9 +138,6 @@ public class Application implements Serializable {
if (name != null ? !name.equals(that.name) : that.name != null) { if (name != null ? !name.equals(that.name) : that.name != null) {
return false; return false;
} }
if (packageName != null ? !packageName.equals(that.packageName) : that.packageName != null) {
return false;
}
if (platform != null ? !platform.equals(that.platform) : that.platform != null) { if (platform != null ? !platform.equals(that.platform) : that.platform != null) {
return false; return false;
} }
@ -150,14 +147,15 @@ public class Application implements Serializable {
if (version != null ? !version.equals(that.version) : that.version != null) { if (version != null ? !version.equals(that.version) : that.version != null) {
return false; return false;
} }
if (applicationIdentifier != null ? !applicationIdentifier.equals(that.applicationIdentifier) : that.applicationIdentifier != null) {
return false;
}
return true; return true;
} }
@Override @Override
public int hashCode() { public int hashCode() {
int result = id; int result = id;
result = 31 * result + (packageName != null ? packageName.hashCode() : 0);
result = 31 * result + (platform != null ? platform.hashCode() : 0); result = 31 * result + (platform != null ? platform.hashCode() : 0);
result = 31 * result + (category != null ? category.hashCode() : 0); result = 31 * result + (category != null ? category.hashCode() : 0);
result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (name != null ? name.hashCode() : 0);
@ -166,6 +164,7 @@ public class Application implements Serializable {
result = 31 * result + (version != null ? version.hashCode() : 0); result = 31 * result + (version != null ? version.hashCode() : 0);
result = 31 * result + (type != null ? type.hashCode() : 0); result = 31 * result + (type != null ? type.hashCode() : 0);
result = 31 * result + (appProperties != null ? appProperties.hashCode() : 0); result = 31 * result + (appProperties != null ? appProperties.hashCode() : 0);
result = 31 * result + (applicationIdentifier != null ? applicationIdentifier.hashCode() : 0);
return result; return result;
} }

@ -189,7 +189,7 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
try { try {
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
device = deviceDAO.getDevice(deviceIdentifier, tenantId); device = deviceDAO.getDevice(deviceIdentifier, tenantId);
return applicationMappingDAO.getInstalledApplications(device.getId()); return applicationDAO.getInstalledApplications(device.getId());
}catch (DeviceManagementDAOException deviceDaoEx) { }catch (DeviceManagementDAOException deviceDaoEx) {
String errorMsg = "Error occured while fetching the Application List of device : " + device.getId(); String errorMsg = "Error occured while fetching the Application List of device : " + device.getId();
log.error(errorMsg, deviceDaoEx); log.error(errorMsg, deviceDaoEx);

@ -31,4 +31,6 @@ public interface ApplicationDAO {
int removeApplication(String applicationName, int tenantId) throws DeviceManagementDAOException; int removeApplication(String applicationName, int tenantId) throws DeviceManagementDAOException;
Application getApplication(String identifier, int tenantId) throws DeviceManagementDAOException; Application getApplication(String identifier, int tenantId) throws DeviceManagementDAOException;
List<Application> getInstalledApplications(int deviceId) throws DeviceManagementDAOException;
} }

@ -30,7 +30,4 @@ public interface ApplicationMappingDAO {
int tenantId) throws DeviceManagementDAOException; int tenantId) throws DeviceManagementDAOException;
int removeApplicationMapping(int deviceId, int applicationId, int tenantId) throws DeviceManagementDAOException; int removeApplicationMapping(int deviceId, int applicationId, int tenantId) throws DeviceManagementDAOException;
List<Application> getInstalledApplications(int deviceId) throws DeviceManagementDAOException;
} }

@ -32,6 +32,7 @@ import java.io.ObjectInputStream;
import java.sql.*; import java.sql.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Properties;
public class ApplicationDAOImpl implements ApplicationDAO { public class ApplicationDAOImpl implements ApplicationDAO {
@ -45,18 +46,20 @@ public class ApplicationDAOImpl implements ApplicationDAO {
int applicationId = -1; int applicationId = -1;
try { try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("INSERT INTO DM_APPLICATION (NAME, PACKAGE_NAME, PLATFORM, CATEGORY, " + stmt = conn.prepareStatement("INSERT INTO DM_APPLICATION (NAME, PLATFORM, CATEGORY, " +
"VERSION, TYPE, LOCATION_URL, IMAGE_URL, TENANT_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", "VERSION, TYPE, LOCATION_URL, IMAGE_URL, TENANT_ID,APP_PROPERTIES,APP_IDENTIFIER) " +
Statement.RETURN_GENERATED_KEYS); "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?,?)");
stmt.setString(1, application.getName()); stmt.setString(1, application.getName());
stmt.setString(2, application.getPackageName()); stmt.setString(2, application.getPlatform());
stmt.setString(3, application.getPlatform()); stmt.setString(3, application.getCategory());
stmt.setString(4, application.getCategory()); stmt.setString(4, application.getVersion());
stmt.setString(5, application.getVersion()); stmt.setString(5, application.getType());
stmt.setString(6, application.getType()); stmt.setString(6, application.getLocationUrl());
stmt.setString(7, application.getLocationUrl()); stmt.setString(7, application.getImageUrl());
stmt.setString(8, application.getImageUrl()); stmt.setInt(8, tenantId);
stmt.setInt(9, tenantId); stmt.setObject(9,application.getAppProperties());
stmt.setString(10,application.getApplicationIdentifier());
stmt.execute(); stmt.execute();
rs = stmt.getGeneratedKeys(); rs = stmt.getGeneratedKeys();
@ -81,18 +84,22 @@ public class ApplicationDAOImpl implements ApplicationDAO {
List<Integer> applicationIds = new ArrayList<Integer>(); List<Integer> applicationIds = new ArrayList<Integer>();
try { try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("INSERT INTO DM_APPLICATION (NAME, PACKAGE_NAME, PLATFORM, CATEGORY, " + stmt = conn.prepareStatement("INSERT INTO DM_APPLICATION (NAME, PLATFORM, CATEGORY, " +
"VERSION, TYPE, LOCATION_URL, IMAGE_URL, TENANT_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); "VERSION, TYPE, LOCATION_URL, IMAGE_URL, TENANT_ID,APP_PROPERTIES,APP_IDENTIFIER) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?,?)");
for (Application application : applications) { for (Application application : applications) {
stmt.setString(1, application.getName()); stmt.setString(1, application.getName());
stmt.setString(2, application.getPackageName()); stmt.setString(2, application.getPlatform());
stmt.setString(3, application.getPlatform()); stmt.setString(3, application.getCategory());
stmt.setString(4, application.getCategory()); stmt.setString(4, application.getVersion());
stmt.setString(5, application.getVersion()); stmt.setString(5, application.getType());
stmt.setString(6, application.getType()); stmt.setString(6, application.getLocationUrl());
stmt.setString(7, application.getLocationUrl()); stmt.setString(7, application.getImageUrl());
stmt.setString(8, application.getImageUrl()); stmt.setInt(8, tenantId);
stmt.setInt(9, tenantId); stmt.setObject(9,application.getAppProperties());
stmt.setString(10,application.getApplicationIdentifier());
stmt.addBatch(); stmt.addBatch();
} }
stmt.executeBatch(); stmt.executeBatch();
@ -150,8 +157,9 @@ public class ApplicationDAOImpl implements ApplicationDAO {
Application application = null; Application application = null;
try { try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement("SELECT ID, NAME, PACKAGE_NAME, CATEGORY, PLATFORM, TYPE, VERSION, IMAGE_URL, " + stmt = conn.prepareStatement("SELECT ID, NAME, APP_IDENTIFIER, PLATFORM, CATEGORY, VERSION, TYPE, " +
"LOCATION_URL FROM DM_APPLICATION WHERE PACKAGE_NAME = ? AND TENANT_ID = ?"); "LOCATION_URL, IMAGE_URL, APP_PROPERTIES, TENANT_ID FROM DM_APPLICATION WHERE APP_IDENTIFIER = ? " +
"AND TENANT_ID = ?");
stmt.setString(1, identifier); stmt.setString(1, identifier);
stmt.setInt(2, tenantId); stmt.setInt(2, tenantId);
rs = stmt.executeQuery(); rs = stmt.executeQuery();
@ -172,17 +180,80 @@ public class ApplicationDAOImpl implements ApplicationDAO {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }
private Application loadApplication(ResultSet rs) throws SQLException { @Override
public List<Application> getInstalledApplications(int deviceId) throws DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
List<Application> applications = new ArrayList<Application>();
Application application;
ByteArrayInputStream bais;
ObjectInputStream ois;
try {
conn = this.getConnection();
stmt = conn.prepareStatement("Select ID, NAME, APP_IDENTIFIER, PLATFORM, CATEGORY, VERSION, TYPE, " +
"LOCATION_URL, IMAGE_URL, APP_PROPERTIES, TENANT_ID From DM_APPLICATION app " +
"INNER JOIN "+
"(Select APPLICATION_ID From DM_DEVICE_APPLICATION_MAPPING WHERE DEVICE_ID=?) APPMAP " +
"ON "+
"app.ID = APPMAP.APPLICATION_ID ");
stmt.setInt(1,deviceId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
application = loadApplication(rs);
applications.add(application);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("SQL Error occurred while retrieving the list of Applications " +
"installed in device id '" + deviceId, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return applications;
}
private Application loadApplication(ResultSet rs) throws DeviceManagementDAOException{
ByteArrayInputStream bais;
ObjectInputStream ois;
Properties properties;
Application application = new Application(); Application application = new Application();
application.setId(rs.getInt("ID")); try {
application.setName(rs.getString("NAME")); application.setName(rs.getString("NAME"));
application.setPackageName(rs.getString("PACKAGE_NAME"));
application.setCategory(rs.getString("CATEGORY"));
application.setType(rs.getString("TYPE")); application.setType(rs.getString("TYPE"));
application.setVersion(rs.getString("VERSION"));
if (rs.getBytes("APP_PROPERTIES") !=null) {
byte[] appProperties = rs.getBytes("APP_PROPERTIES");
bais = new ByteArrayInputStream(appProperties);
ois = new ObjectInputStream(bais);
properties = (Properties) ois.readObject();
application.setAppProperties(properties);
}
application.setCategory(rs.getString("CATEGORY"));
application.setImageUrl(rs.getString("IMAGE_URL")); application.setImageUrl(rs.getString("IMAGE_URL"));
application.setLocationUrl(rs.getString("LOCATION_URL")); application.setLocationUrl(rs.getString("LOCATION_URL"));
application.setPlatform(rs.getString("PLATFORM")); application.setPlatform(rs.getString("PLATFORM"));
application.setVersion(rs.getString("VERSION"));
application.setApplicationIdentifier(rs.getString("APP_IDENTIFIER"));
}catch (IOException ex){
String errorMsg = "IO error occurred fetch at app properties";
log.error(errorMsg, ex);
throw new DeviceManagementDAOException(errorMsg, ex);
}catch (ClassNotFoundException cex){
String errorMsg = "Class not found error occurred fetch at app properties";
log.error(errorMsg, cex);
throw new DeviceManagementDAOException(errorMsg, cex);
}catch (SQLException ex){
String errorMsg = "SQL error occurred fetch at application";
log.error(errorMsg, ex);
throw new DeviceManagementDAOException(errorMsg, ex);
}
return application; return application;
} }

@ -18,11 +18,15 @@
*/ */
package org.wso2.carbon.device.mgt.core.dao.impl; package org.wso2.carbon.device.mgt.core.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO; import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.ProfileOperation;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
@ -30,9 +34,11 @@ import java.io.ObjectInputStream;
import java.sql.*; import java.sql.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Properties;
public class ApplicationMappingDAOImpl implements ApplicationMappingDAO { public class ApplicationMappingDAOImpl implements ApplicationMappingDAO {
private static final Log log = LogFactory.getLog(ApplicationMappingDAOImpl.class);
@Override @Override
public int addApplicationMapping(int deviceId, int applicationId, public int addApplicationMapping(int deviceId, int applicationId,
int tenantId) throws DeviceManagementDAOException { int tenantId) throws DeviceManagementDAOException {
@ -125,40 +131,5 @@ public class ApplicationMappingDAOImpl implements ApplicationMappingDAO {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }
@Override
public List<Application> getInstalledApplications(int deviceId) throws DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
List<Application> applications = new ArrayList<Application>();
Application application;
ByteArrayInputStream bais;
ObjectInputStream ois;
try {
conn = this.getConnection();
stmt = conn.prepareStatement(
"SELECT DEVICE_ID, APPLICATIONS FROM DM_DEVICE_APPLICATIONS WHERE DEVICE_ID = ?");
stmt.setInt(1, deviceId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
byte[] applicationDetails = rs.getBytes("APPLICATIONS");
bais = new ByteArrayInputStream(applicationDetails);
ois = new ObjectInputStream(bais);
application = (Application) ois.readObject();
applications.add(application);
}
} catch (IOException e) {
throw new DeviceManagementDAOException("IO Error occurred while de serialize the Application object", e);
} catch (ClassNotFoundException e) {
throw new DeviceManagementDAOException("Class not found error occurred while de serialize the " +
"Application object", e);
} catch (SQLException e) {
throw new DeviceManagementDAOException("SQL Error occurred while retrieving the list of Applications " +
"installed in device id '" + deviceId, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return applications;
}
} }

@ -25,6 +25,8 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import java.util.Properties;
public class ApplicationPersistenceDAOTests extends BaseDeviceManagementDAOTest { public class ApplicationPersistenceDAOTests extends BaseDeviceManagementDAOTest {
private static final Log log = LogFactory.getLog(ApplicationPersistenceDAOTests.class); private static final Log log = LogFactory.getLog(ApplicationPersistenceDAOTests.class);
@ -33,10 +35,11 @@ public class ApplicationPersistenceDAOTests extends BaseDeviceManagementDAOTest
@Test @Test
public void testAddApplication() { public void testAddApplication() {
/* Initializing source application bean to be tested */ /* Initializing source application bean to be tested */
Properties properties = new Properties();
Application source = new Application(); Application source = new Application();
source.setName("SimpleCalculator"); source.setName("SimpleCalculator");
source.setCategory("TestCategory"); source.setCategory("TestCategory");
source.setPackageName("com.simple.calculator"); source.setApplicationIdentifier("com.simple.calculator");
source.setType("TestType"); source.setType("TestType");
source.setVersion("1.0.0"); source.setVersion("1.0.0");
source.setImageUrl("http://test.org/image/"); source.setImageUrl("http://test.org/image/");
@ -58,14 +61,15 @@ public class ApplicationPersistenceDAOTests extends BaseDeviceManagementDAOTest
/* Retrieving the application by its name */ /* Retrieving the application by its name */
Application target = null; Application target = null;
try { try {
target = this.getApplication(source.getPackageName(), -1234); target = this.getApplication(source.getApplicationIdentifier(), -1234);
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
String msg = "Error occurred while retrieving application info"; String msg = "Error occurred while retrieving application info";
log.error(msg, e); log.error(msg, e);
Assert.fail(msg, e); Assert.fail(msg, e);
} }
Assert.assertEquals(target.getPackageName(), source.getPackageName(), "Application added is not as same as what's " + Assert.assertEquals(target.getApplicationIdentifier(), source.getApplicationIdentifier(), "Application added is not as same as " +
"what's " +
"retrieved"); "retrieved");
} }

@ -75,17 +75,17 @@ CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
); );
CREATE TABLE IF NOT EXISTS DM_APPLICATION ( CREATE TABLE IF NOT EXISTS DM_APPLICATION (
ID INTEGER AUTO_INCREMENT NOT NULL, ID INTEGER AUTO_INCREMENT NOT NULL,
NAME VARCHAR(50) NOT NULL, NAME VARCHAR(50) NOT NULL,
PACKAGE_NAME VARCHAR(50) NOT NULL, APP_IDENTIFIER VARCHAR(50) NOT NULL,
PLATFORM VARCHAR(50) NULL DEFAULT NULL, PLATFORM VARCHAR(50) NULL DEFAULT NULL,
CATEGORY VARCHAR(50) NULL, CATEGORY VARCHAR(50) NULL,
VERSION VARCHAR(50) NULL, VERSION VARCHAR(50) NULL,
TYPE VARCHAR(50) NULL, TYPE VARCHAR(50) NULL,
LOCATION_URL VARCHAR(100) NULL DEFAULT NULL, LOCATION_URL VARCHAR(100) NULL DEFAULT NULL,
IMAGE_URL VARCHAR(100) NULL DEFAULT NULL, IMAGE_URL VARCHAR(100) NULL DEFAULT NULL,
APP_PROPERTIES BLOB NULL,
TENANT_ID INTEGER NOT NULL, TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
); );

@ -88,15 +88,6 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE (
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
); );
CREATE TABLE IF NOT EXISTS DM_DEVICE_APPLICATIONS (
ID INTEGER AUTO_INCREMENT NOT NULL,
DEVICE_ID INTEGER NOT NULL,
APPLICATIONS BLOB DEFAULT NULL,
PRIMARY KEY (ID),
CONSTRAINT fk_dm_device_applications_device FOREIGN KEY (DEVICE_ID) REFERENCES
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
);
--- POLICY RELATED TABLES ---- --- POLICY RELATED TABLES ----
@ -307,13 +298,14 @@ CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
CREATE TABLE IF NOT EXISTS DM_APPLICATION ( CREATE TABLE IF NOT EXISTS DM_APPLICATION (
ID INTEGER AUTO_INCREMENT NOT NULL, ID INTEGER AUTO_INCREMENT NOT NULL,
NAME VARCHAR(50) NOT NULL, NAME VARCHAR(50) NOT NULL,
PACKAGE_NAME VARCHAR(50) NOT NULL, APP_IDENTIFIER VARCHAR(50) NOT NULL,
PLATFORM VARCHAR(50) NULL DEFAULT NULL, PLATFORM VARCHAR(50) NULL DEFAULT NULL,
CATEGORY VARCHAR(50) NULL, CATEGORY VARCHAR(50) NULL,
VERSION VARCHAR(50) NULL, VERSION VARCHAR(50) NULL,
TYPE VARCHAR(50) NULL, TYPE VARCHAR(50) NULL,
LOCATION_URL VARCHAR(100) NULL DEFAULT NULL, LOCATION_URL VARCHAR(100) NULL DEFAULT NULL,
IMAGE_URL VARCHAR(100) NULL DEFAULT NULL, IMAGE_URL VARCHAR(100) NULL DEFAULT NULL,
APP_PROPERTIES BLOB NULL,
TENANT_ID INTEGER NOT NULL, TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
); );

Loading…
Cancel
Save