Cleaning up mobile device management implementation

revert-dabc3590
prabathabey 9 years ago
parent 1971b4690a
commit 530c6049ba

@ -0,0 +1,102 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException;
import org.wso2.carbon.device.mgt.mobile.config.datasource.JNDILookupDefinition;
import org.wso2.carbon.device.mgt.mobile.config.datasource.MobileDataSourceConfig;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
/**
* Factory class used to create MobileDeviceManagement related DAO objects.
*/
public abstract class AbstractMobileDeviceManagementDAOFactory implements MobileDeviceManagementDAOFactory {
private static final Log log = LogFactory.getLog(AbstractMobileDeviceManagementDAOFactory.class);
private static Map<String, DataSource> dataSourceMap = new HashMap<>();
private static boolean isInitialized;
public static void init(Map<String, MobileDataSourceConfig> mobileDataSourceConfigMap)
throws MobileDeviceMgtPluginException {
DataSource dataSource;
for (String pluginType : mobileDataSourceConfigMap.keySet()) {
if (dataSourceMap.get(pluginType) == null) {
dataSource = AbstractMobileDeviceManagementDAOFactory.resolveDataSource(mobileDataSourceConfigMap.get
(pluginType));
dataSourceMap.put(pluginType, dataSource);
}
}
isInitialized = true;
}
public static void init(String key, MobileDataSourceConfig mobileDataSourceConfig) throws
MobileDeviceMgtPluginException {
DataSource dataSource = AbstractMobileDeviceManagementDAOFactory.resolveDataSource(mobileDataSourceConfig);
dataSourceMap.put(key, dataSource);
}
/**
* Resolve data source from the data source definition.
*
* @param config Mobile data source configuration
* @return data source resolved from the data source definition
*/
public static DataSource resolveDataSource(MobileDataSourceConfig config) {
DataSource dataSource = null;
if (config == null) {
throw new RuntimeException("Device Management Repository data source configuration " +
"is null and thus, is not initialized");
}
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
if (jndiConfig != null) {
if (log.isDebugEnabled()) {
log.debug("Initializing Device Management Repository data source using the JNDI " +
"Lookup Definition");
}
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
jndiConfig.getJndiProperties();
if (jndiPropertyList != null) {
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
jndiProperties.put(prop.getName(), prop.getValue());
}
dataSource =
MobileDeviceManagementDAOUtil
.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
} else {
dataSource = MobileDeviceManagementDAOUtil
.lookupDataSource(jndiConfig.getJndiName(), null);
}
}
return dataSource;
}
public static Map<String, DataSource> getDataSourceMap() {
return dataSourceMap;
}
}

@ -18,84 +18,10 @@
package org.wso2.carbon.device.mgt.mobile.dao; package org.wso2.carbon.device.mgt.mobile.dao;
import org.apache.commons.logging.Log; public interface MobileDeviceManagementDAOFactory {
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException;
import org.wso2.carbon.device.mgt.mobile.config.datasource.JNDILookupDefinition;
import org.wso2.carbon.device.mgt.mobile.config.datasource.MobileDataSourceConfig;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import javax.sql.DataSource; MobileDeviceDAO getMobileDeviceDAO();
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
/** MobileFeatureDAO getMobileFeatureDAO();
* Factory class used to create MobileDeviceManagement related DAO objects.
*/
public abstract class MobileDeviceManagementDAOFactory implements MobileDeviceManagementDAOFactoryInterface {
private static final Log log = LogFactory.getLog(MobileDeviceManagementDAOFactory.class);
private static Map<String, DataSource> dataSourceMap = new HashMap<String, DataSource>();
private static boolean isInitialized;
public static void init(Map<String, MobileDataSourceConfig> mobileDataSourceConfigMap)
throws MobileDeviceMgtPluginException {
DataSource dataSource;
for (String pluginType : mobileDataSourceConfigMap.keySet()) {
if (dataSourceMap.get(pluginType) == null) {
dataSource = MobileDeviceManagementDAOFactory.resolveDataSource(mobileDataSourceConfigMap.get
(pluginType));
dataSourceMap.put(pluginType, dataSource);
}
}
isInitialized = true;
}
public static void init(String key, MobileDataSourceConfig mobileDataSourceConfig) throws
MobileDeviceMgtPluginException {
DataSource dataSource = MobileDeviceManagementDAOFactory.resolveDataSource(mobileDataSourceConfig);
dataSourceMap.put(key, dataSource);
}
/**
* Resolve data source from the data source definition.
*
* @param config Mobile data source configuration
* @return data source resolved from the data source definition
*/
public static DataSource resolveDataSource(MobileDataSourceConfig config) {
DataSource dataSource = null;
if (config == null) {
throw new RuntimeException("Device Management Repository data source configuration " +
"is null and thus, is not initialized");
}
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
if (jndiConfig != null) {
if (log.isDebugEnabled()) {
log.debug("Initializing Device Management Repository data source using the JNDI " +
"Lookup Definition");
}
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
jndiConfig.getJndiProperties();
if (jndiPropertyList != null) {
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
jndiProperties.put(prop.getName(), prop.getValue());
}
dataSource =
MobileDeviceManagementDAOUtil
.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
} else {
dataSource = MobileDeviceManagementDAOUtil
.lookupDataSource(jndiConfig.getJndiName(), null);
}
}
return dataSource;
}
public static Map<String, DataSource> getDataSourceMap() {
return dataSourceMap;
}
} }

@ -1,37 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao;
import org.wso2.carbon.device.mgt.mobile.config.datasource.MobileDataSourceConfig;
public interface MobileDeviceManagementDAOFactoryInterface {
public MobileDeviceDAO getMobileDeviceDAO();
public MobileOperationDAO getMobileOperationDAO();
public MobileOperationPropertyDAO getMobileOperationPropertyDAO();
public MobileDeviceOperationMappingDAO getMobileDeviceOperationDAO();
public MobileFeatureDAO getMobileFeatureDao();
public MobileFeaturePropertyDAO getFeaturePropertyDAO();
}

@ -1,118 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDeviceOperationMapping;
import java.util.List;
/**
* This class represents the mapping between mobile device and operations.
*/
public interface MobileDeviceOperationMappingDAO {
/**
* Adds a new mobile device operation mapping to the table.
*
* @param mblDeviceOperationMapping MobileDeviceOperationMapping object that holds data related
* to the MobileDeviceOperationMapping to be inserted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean addMobileDeviceOperationMapping(MobileDeviceOperationMapping mblDeviceOperationMapping)
throws MobileDeviceManagementDAOException;
/**
* Updates a MobileDeviceOperationMapping in MobileDeviceOperationMapping table.
*
* @param mblDeviceOperation MobileDeviceOperationMapping object that holds data has to be updated.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean updateMobileDeviceOperationMapping(MobileDeviceOperationMapping mblDeviceOperation)
throws MobileDeviceManagementDAOException;
/**
* Updates a MobileDeviceOperationMapping to In-Progress state in MobileDeviceOperationMapping
* table.
*
* @param mblDeviceId MobileDevice id of the mappings to be updated.
* @param operationId Operation id of the mapping to be updated.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean updateMobileDeviceOperationMappingToInProgress(String mblDeviceId, int operationId)
throws MobileDeviceManagementDAOException;
/**
* Updates a MobileDeviceOperationMapping to completed state in MobileDeviceOperationMapping
* table.
*
* @param mblDeviceId MobileDevice id of the mappings to be updated.
* @param operationId Operation id of the mapping to be updated.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean updateMobileDeviceOperationMappingToCompleted(String mblDeviceId, int operationId)
throws MobileDeviceManagementDAOException;
/**
* Delete a given MobileDeviceOperationMapping from MobileDeviceOperationMapping table.
*
* @param mblDeviceId MobileDevice id of the mappings to be deleted.
* @param operationId Operation id of the mapping to be deleted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean deleteMobileDeviceOperationMapping(String mblDeviceId, int operationId)
throws MobileDeviceManagementDAOException;
/**
* Retrieves a given MobileDeviceOperationMapping object from the MobileDeviceOperationMapping
* table.
*
* @param mblDeviceId Device id of the mapping to be retrieved.
* @param operationId Operation id of the mapping to be retrieved.
* @return MobileDeviceOperation object that holds data of the device operation mapping
* represented by deviceId and operationId.
* @throws MobileDeviceManagementDAOException
*/
MobileDeviceOperationMapping getMobileDeviceOperationMapping(String mblDeviceId, int operationId)
throws MobileDeviceManagementDAOException;
/**
* Retrieves all the of MobileDeviceOperationMappings relevant to a given mobile device.
*
* @param mblDeviceId MobileDevice id of the mappings to be retrieved.
* @return MobileDeviceOperationMapping object list.
* @throws MobileDeviceManagementDAOException
*/
List<MobileDeviceOperationMapping> getAllMobileDeviceOperationMappingsOfDevice(String mblDeviceId)
throws MobileDeviceManagementDAOException;
/**
* Retrieves all the pending MobileDeviceOperationMappings of a mobile device.
*
* @param mblDeviceId MobileDevice id of the mappings to be retrieved.
* @return MobileDeviceOperationMapping object list.
* @throws MobileDeviceManagementDAOException
*/
List<MobileDeviceOperationMapping> getAllPendingOperationMappingsOfMobileDevice(String mblDeviceId)
throws MobileDeviceManagementDAOException;
}

@ -1,62 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperation;
/**
* This class represents the key operations associated with persisting mobile operation related
* information.
*/
public interface MobileOperationDAO {
/**
* Adds a new Mobile operation to the MobileOperation table.
* @param mblOperation MobileOperation object that holds data related to the operation to be
* inserted.
* @return The id of the inserted record, if the insertion was unsuccessful -1 is returned.
* @throws MobileDeviceManagementDAOException
*/
int addMobileOperation(MobileOperation mblOperation) throws MobileDeviceManagementDAOException;
/**
* Updates a Mobile operation in the MobileOperation table.
* @param mblOperation MobileOperation object that holds data has to be updated.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean updateMobileOperation(MobileOperation mblOperation) throws MobileDeviceManagementDAOException;
/**
* Deletes a given MobileOperation from MobileOperation table.
* @param mblOperationId Operation code of the MobileOperation to be deleted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean deleteMobileOperation(int mblOperationId) throws MobileDeviceManagementDAOException;
/**
* Retrieve a MobileOperation from MobileOperation table.
* @param mblOperationId Operation id of the MobileOperation to be retrieved.
* @return MobileOperation object that holds data of MobileOperation represented by operationId.
* @throws MobileDeviceManagementDAOException
*/
MobileOperation getMobileOperation(int mblOperationId) throws MobileDeviceManagementDAOException;
}

@ -1,87 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperationProperty;
import java.util.List;
/**
*
* This class represents the key operations associated with persisting mobile operation property
* related information.
*
*/
public interface MobileOperationPropertyDAO {
/**
* Add a new MobileOperationProperty to MobileOperationProperty table.
*
* @param mblOperationProperty MobileOperationProperty object that holds data related to the
* operation property to be inserted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean addMobileOperationProperty(MobileOperationProperty mblOperationProperty)
throws MobileDeviceManagementDAOException;
/**
* Update a MobileOperationProperty in the MobileOperationProperty table.
*
* @param mblOperationProperty MobileOperationProperty object that holds data has to be updated.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean updateMobileOperationProperty(MobileOperationProperty mblOperationProperty)
throws MobileDeviceManagementDAOException;
/**
* Deletes MobileOperationProperties of a given operation id from the MobileOperationProperty
* table.
*
* @param mblOperationId Operation id of the MobileOperationProperty to be deleted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean deleteMobileOperationProperties(int mblOperationId)
throws MobileDeviceManagementDAOException;
/**
* Retrieve a given MobileOperationProperty from MobileOperationProperty table.
*
* @param mblOperationId Operation id of the mapping to be retrieved.
* @param property Property of the mapping to be retrieved.
* @return MobileOperationProperty object that holds data of the MobileOperationProperty
* represented by mblOperationId and property.
* @throws MobileDeviceManagementDAOException
*/
MobileOperationProperty getMobileOperationProperty(int mblOperationId, String property)
throws MobileDeviceManagementDAOException;
/**
* Retrieve all the MobileOperationProperties related to the a operation id from
* MobileOperationProperty table.
*
* @param mblOperationId Operation id of the MobileOperationProperty to be retrieved.
* @return List of MobileOperationProperty objects.
* @throws MobileDeviceManagementDAOException
*/
List<MobileOperationProperty> getAllMobileOperationPropertiesOfOperation(int mblOperationId)
throws MobileDeviceManagementDAOException;
}

@ -1,369 +0,0 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceOperationMappingDAO;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDeviceOperationMapping;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Implementation of MobileDeviceOperationMappingDAO.
*/
public class MobileDeviceOperationMappingDAOImpl implements MobileDeviceOperationMappingDAO {
private DataSource dataSource;
private static final Log log = LogFactory.getLog(MobileDeviceOperationMappingDAOImpl.class);
public MobileDeviceOperationMappingDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public boolean addMobileDeviceOperationMapping(MobileDeviceOperationMapping mblDeviceOperationMapping)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String createDBQuery =
"INSERT INTO AD_DEVICE_OPERATION_MAPPING (DEVICE_ID, OPERATION_ID, SENT_DATE, " +
"RECEIVED_DATE, STATUS) VALUES (?, ?, ?, ?, ?)";
stmt = conn.prepareStatement(createDBQuery);
stmt.setString(1, mblDeviceOperationMapping.getDeviceId());
stmt.setLong(2, mblDeviceOperationMapping.getOperationId());
stmt.setLong(3, mblDeviceOperationMapping.getSentDate());
stmt.setLong(4, mblDeviceOperationMapping.getReceivedDate());
stmt.setString(5, mblDeviceOperationMapping.getStatus().name());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Added a MobileDevice-Mapping DeviceId : " + mblDeviceOperationMapping
.getDeviceId() + ", " +
"OperationId : " + mblDeviceOperationMapping.getOperationId() + " to the MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while adding device id - '" +
mblDeviceOperationMapping.getDeviceId() + " and operation id - " +
mblDeviceOperationMapping.getOperationId() +
" to mapping table AD_DEVICE_OPERATION_MAPPING";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean updateMobileDeviceOperationMapping(MobileDeviceOperationMapping mblDeviceOperation)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String updateDBQuery =
"UPDATE AD_DEVICE_OPERATION_MAPPING SET SENT_DATE = ?, RECEIVED_DATE = ?, " +
"STATUS = ? WHERE DEVICE_ID = ? AND OPERATION_ID=?";
stmt = conn.prepareStatement(updateDBQuery);
stmt.setLong(1, mblDeviceOperation.getSentDate());
stmt.setLong(2, mblDeviceOperation.getReceivedDate());
stmt.setString(3, mblDeviceOperation.getStatus().name());
stmt.setString(4, mblDeviceOperation.getDeviceId());
stmt.setInt(5, mblDeviceOperation.getOperationId());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Updated MobileDevice-Mapping DeviceId : " + mblDeviceOperation.getDeviceId() + " , " +
"OperationId : " + mblDeviceOperation.getOperationId());
}
}
} catch (SQLException e) {
String msg = "Error occurred while updating device id - '" +
mblDeviceOperation.getDeviceId() + " and operation id - " +
mblDeviceOperation.getOperationId() + " in table AD_DEVICE_OPERATION_MAPPING";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean updateMobileDeviceOperationMappingToInProgress(String mblDeviceId, int operationId)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String updateDBQuery =
"UPDATE AD_DEVICE_OPERATION_MAPPING SET SENT_DATE = ?, STATUS = ? " +
"WHERE DEVICE_ID = ? AND OPERATION_ID=?";
stmt = conn.prepareStatement(updateDBQuery);
stmt.setLong(1, new Date().getTime());
stmt.setString(2, MobileDeviceOperationMapping.Status.INPROGRESS.name());
stmt.setString(3, mblDeviceId);
stmt.setInt(4, operationId);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Updated status of MobileDevice-Mapping DeviceId : " + mblDeviceId + " , " +
"OperationId : " + operationId + " to In-Progress state");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while updating the Status of operation to in-progress of device id - '" +
mblDeviceId + " and operation id - " +
operationId + " in table AD_DEVICE_OPERATION_MAPPING";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean updateMobileDeviceOperationMappingToCompleted(String mblDeviceId,
int operationId)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String updateDBQuery =
"UPDATE AD_DEVICE_OPERATION_MAPPING SET RECEIVED_DATE = ?, STATUS = ? " +
"WHERE DEVICE_ID = ? AND OPERATION_ID = ?";
stmt = conn.prepareStatement(updateDBQuery);
stmt.setLong(1, new Date().getTime());
stmt.setString(2, MobileDeviceOperationMapping.Status.COMPLETED.name());
stmt.setString(3, mblDeviceId);
stmt.setInt(4, operationId);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Updated status of MobileDevice-Mapping DeviceId : " + mblDeviceId + " , " +
"OperationId : " + operationId + " to Completed state");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while updating the Status of operation to completed of device id - '" +
mblDeviceId + " and operation id - " +
operationId + " in table AD_DEVICE_OPERATION_MAPPING";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean deleteMobileDeviceOperationMapping(String mblDeviceId, int operationId)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String deleteDBQuery =
"DELETE FROM AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND " +
"OPERATION_ID = ?";
stmt = conn.prepareStatement(deleteDBQuery);
stmt.setString(1, mblDeviceId);
stmt.setInt(2, operationId);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Deleted MobileDevice-Mapping DeviceId : " + mblDeviceId + " , " +
"OperationId : " + operationId + "from MDM database.");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while deleting the table entry AD_DEVICE_OPERATION with " +
" device id - '" + mblDeviceId + " and operation id - " + operationId;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public MobileDeviceOperationMapping getMobileDeviceOperationMapping(String mblDeviceId,
int operationId)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileDeviceOperationMapping mblDeviceOperation = null;
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, SENT_DATE, RECEIVED_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND OPERATION_ID = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, mblDeviceId);
stmt.setInt(2, operationId);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
mblDeviceOperation = new MobileDeviceOperationMapping();
mblDeviceOperation.setDeviceId(resultSet.getString(1));
mblDeviceOperation.setOperationId(resultSet.getInt(2));
mblDeviceOperation.setSentDate(resultSet.getInt(3));
mblDeviceOperation.setReceivedDate(resultSet.getInt(4));
mblDeviceOperation.setStatus(resultSet.getString(5));
if (log.isDebugEnabled()) {
log.debug("Fetched MobileDevice-Mapping of DeviceId : " + mblDeviceId + " , " +
"OperationId : " + operationId );
}
}
} catch (SQLException e) {
String msg =
"Error occurred while fetching table MBL_DEVICE_OPERATION entry with device id - '" +
mblDeviceId + " and operation id - " + operationId;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return mblDeviceOperation;
}
@Override
public List<MobileDeviceOperationMapping> getAllMobileDeviceOperationMappingsOfDevice(
String mblDeviceId)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileDeviceOperationMapping mblDeviceOperation;
List<MobileDeviceOperationMapping> mblDeviceOperations =
new ArrayList<>();
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, SENT_DATE, RECEIVED_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, mblDeviceId);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
mblDeviceOperation = new MobileDeviceOperationMapping();
mblDeviceOperation.setDeviceId(resultSet.getString(1));
mblDeviceOperation.setOperationId(resultSet.getInt(2));
mblDeviceOperation.setSentDate(resultSet.getInt(3));
mblDeviceOperation.setReceivedDate(resultSet.getInt(4));
mblDeviceOperation.setStatus(resultSet.getString(5));
mblDeviceOperations.add(mblDeviceOperation);
}
if (log.isDebugEnabled()) {
log.debug("Fetched all MobileDevice-Mappings of DeviceId : " + mblDeviceId);
}
} catch (SQLException e) {
String msg =
"Error occurred while fetching mapping table AD_DEVICE_OPERATION_MAPPING entries of " +
"device id - '" + mblDeviceId;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return mblDeviceOperations;
}
@Override
public List<MobileDeviceOperationMapping> getAllPendingOperationMappingsOfMobileDevice(
String mblDeviceId)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileDeviceOperationMapping mblDeviceOperation = null;
List<MobileDeviceOperationMapping> mblDeviceOperations =
new ArrayList<>();
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, SENT_DATE, RECEIVED_DATE, STATUS FROM" +
" AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND STATUS = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, mblDeviceId);
stmt.setString(2, MobileDeviceOperationMapping.Status.NEW.name());
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
mblDeviceOperation = new MobileDeviceOperationMapping();
mblDeviceOperation.setDeviceId(resultSet.getString(1));
mblDeviceOperation.setOperationId(resultSet.getInt(2));
mblDeviceOperation.setSentDate(resultSet.getInt(3));
mblDeviceOperation.setReceivedDate(resultSet.getInt(4));
mblDeviceOperation.setStatus(resultSet.getString(5));
mblDeviceOperations.add(mblDeviceOperation);
}
if (log.isDebugEnabled()) {
log.debug("Fetched all pending MobileDevice-Mappings of DeviceId : " + mblDeviceId);
}
} catch (SQLException e) {
String msg =
"Error occurred while fetching mapping table MBL_DEVICE_OPERATION entries of" +
" device id - '" + mblDeviceId;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return mblDeviceOperations;
}
private Connection getConnection() throws MobileDeviceManagementDAOException {
try {
return dataSource.getConnection();
} catch (SQLException e) {
String msg = "Error occurred while obtaining a connection from the mobile device " +
"management metadata repository datasource.";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
}
}
}

@ -64,12 +64,10 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
int rows = stmt.executeUpdate(); int rows = stmt.executeUpdate();
if (rows > 0) { if (rows > 0) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Added a new MobileFeature " + mobileFeature.getCode() + " to the" + log.debug("Added a new MobileFeature " + mobileFeature.getCode() + " to the MDM database.");
" MDM database.");
} }
status = true; status = true;
} }
} catch (SQLException e) { } catch (SQLException e) {
String msg = "Error occurred while adding feature code - '" + String msg = "Error occurred while adding feature code - '" +
mobileFeature.getCode() + "' to feature table"; mobileFeature.getCode() + "' to feature table";
@ -91,7 +89,7 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
conn = this.getConnection(); conn = this.getConnection();
String updateDBQuery = String updateDBQuery =
"UPDATE AD_FEATURE SET CODE = ?, NAME = ?, DESCRIPTION = ?, DEVICE_TYPE = ?" + "UPDATE AD_FEATURE SET CODE = ?, NAME = ?, DESCRIPTION = ?, DEVICE_TYPE = ?" +
" WHERE FEATURE_ID = ?"; " WHERE ID = ?";
stmt = conn.prepareStatement(updateDBQuery); stmt = conn.prepareStatement(updateDBQuery);
stmt.setString(1, mobileFeature.getCode()); stmt.setString(1, mobileFeature.getCode());
stmt.setString(2, mobileFeature.getName()); stmt.setString(2, mobileFeature.getName());
@ -132,8 +130,7 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
if (rows > 0) { if (rows > 0) {
status = true; status = true;
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Deleted MobileFeature code " + mblFeatureCode + " from the" + log.debug("Deleted MobileFeature code " + mblFeatureCode + " from the MDM database.");
" MDM database.");
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
@ -155,15 +152,14 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
String deleteDBQuery = String deleteDBQuery =
"DELETE FROM AD_FEATURE WHERE FEATURE_ID = ?"; "DELETE FROM AD_FEATURE WHERE ID = ?";
stmt = conn.prepareStatement(deleteDBQuery); stmt = conn.prepareStatement(deleteDBQuery);
stmt.setInt(1, mblFeatureId); stmt.setInt(1, mblFeatureId);
int rows = stmt.executeUpdate(); int rows = stmt.executeUpdate();
if (rows > 0) { if (rows > 0) {
status = true; status = true;
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Deleted MobileFeature id " + mblFeatureId + " from the" + log.debug("Deleted MobileFeature id " + mblFeatureId + " from the MDM database.");
" MDM database.");
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
@ -185,7 +181,7 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE " + "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE " +
"WHERE CODE = ?"; "WHERE CODE = ?";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, mblFeatureCode); stmt.setString(1, mblFeatureCode);
@ -198,13 +194,11 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
mobileFeature.setDescription(resultSet.getString(4)); mobileFeature.setDescription(resultSet.getString(4));
mobileFeature.setDeviceType(resultSet.getString(5)); mobileFeature.setDeviceType(resultSet.getString(5));
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Fetched MobileFeature " + mblFeatureCode + " from the" + log.debug("Fetched MobileFeature " + mblFeatureCode + " from the MDM database.");
" MDM database.");
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
String msg = "Error occurred while fetching feature code - '" + String msg = "Error occurred while fetching feature code - '" + mblFeatureCode + "'";
mblFeatureCode + "'";
log.error(msg, e); log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e); throw new MobileDeviceManagementDAOException(msg, e);
} finally { } finally {
@ -222,8 +216,8 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE" + "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE" +
" WHERE FEATURE_ID = ?"; " WHERE ID = ?";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
stmt.setInt(1, mblFeatureId); stmt.setInt(1, mblFeatureId);
ResultSet resultSet = stmt.executeQuery(); ResultSet resultSet = stmt.executeQuery();
@ -235,13 +229,11 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
mobileFeature.setDescription(resultSet.getString(4)); mobileFeature.setDescription(resultSet.getString(4));
mobileFeature.setDeviceType(resultSet.getString(5)); mobileFeature.setDeviceType(resultSet.getString(5));
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Fetched MobileFeatureId" + mblFeatureId + " from the" + log.debug("Fetched MobileFeatureId" + mblFeatureId + " from the MDM database.");
" MDM database.");
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
String msg = "Error occurred while fetching feature id - '" + String msg = "Error occurred while fetching feature id - '" + mblFeatureId + "'";
mblFeatureId + "'";
log.error(msg, e); log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e); throw new MobileDeviceManagementDAOException(msg, e);
} finally { } finally {
@ -259,7 +251,7 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE"; "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
ResultSet resultSet = stmt.executeQuery(); ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) { while (resultSet.next()) {
@ -285,16 +277,15 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
} }
@Override @Override
public List<MobileFeature> getFeatureByDeviceType(String deviceType) throws public List<MobileFeature> getFeatureByDeviceType(String deviceType) throws MobileDeviceManagementDAOException {
MobileDeviceManagementDAOException {
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
MobileFeature mobileFeature; MobileFeature mobileFeature;
List<MobileFeature> mobileFeatures = new ArrayList<MobileFeature>(); List<MobileFeature> mobileFeatures = new ArrayList<>();
try { try {
conn = this.getConnection(); conn = this.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE" + "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE" +
" WHERE DEVICE_TYPE = ?"; " WHERE DEVICE_TYPE = ?";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, deviceType); stmt.setString(1, deviceType);
@ -332,4 +323,5 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
throw new MobileDeviceManagementDAOException(msg, e); throw new MobileDeviceManagementDAOException(msg, e);
} }
} }
} }

@ -1,191 +0,0 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileOperationDAO;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperation;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Implementation of MobileOperationDAO.
*/
public class MobileOperationDAOImpl implements MobileOperationDAO {
private DataSource dataSource;
private static final Log log = LogFactory.getLog(MobileOperationDAOImpl.class);
public MobileOperationDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public int addMobileOperation(MobileOperation mblOperation)
throws MobileDeviceManagementDAOException {
int status = -1;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String createDBQuery =
"INSERT INTO AD_OPERATION(FEATURE_CODE, CREATED_DATE) VALUES ( ?, ?)";
stmt = conn.prepareStatement(createDBQuery, new String[] { "OPERATION_ID" });
stmt.setString(1, mblOperation.getFeatureCode());
stmt.setLong(2, mblOperation.getCreatedDate());
int rows = stmt.executeUpdate();
if (rows > 0) {
ResultSet rs = stmt.getGeneratedKeys();
if (rs != null && rs.next()) {
status = rs.getInt(1);
}
if (log.isDebugEnabled()) {
log.debug("Added a new MobileOperation " + mblOperation.getFeatureCode() +
" to MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while adding the operation - '" +
mblOperation.getFeatureCode() + "' to AD_OPERATION table";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean updateMobileOperation(MobileOperation mblOperation)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String updateDBQuery =
"UPDATE AD_OPERATION SET FEATURE_CODE = ?, CREATED_DATE = ? WHERE " +
"OPERATION_ID = ?";
stmt = conn.prepareStatement(updateDBQuery);
stmt.setString(1, mblOperation.getFeatureCode());
stmt.setLong(2, mblOperation.getCreatedDate());
stmt.setInt(3, mblOperation.getOperationId());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Updated MobileOperation " + mblOperation.getFeatureCode() +
" to MDM database.");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while updating the AD_OPERATION table entry with operation id - '" +
mblOperation.getOperationId() + "'";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean deleteMobileOperation(int mblOperationId)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String deleteDBQuery =
"DELETE FROM AD_OPERATION WHERE OPERATION_ID = ?";
stmt = conn.prepareStatement(deleteDBQuery);
stmt.setInt(1, mblOperationId);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Deleted a new MobileOperation " + mblOperationId +
" from MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while deleting AD_OPERATION entry with operation Id - ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public MobileOperation getMobileOperation(int mblOperationId)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileOperation operation = null;
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT OPERATION_ID, FEATURE_CODE, CREATED_DATE FROM AD_OPERATION WHERE " +
"OPERATION_ID = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setInt(1, mblOperationId);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
operation = new MobileOperation();
operation.setOperationId(resultSet.getInt(1));
operation.setFeatureCode(resultSet.getString(2));
operation.setCreatedDate(resultSet.getLong(3));
if (log.isDebugEnabled()) {
log.debug("Fetched MobileOperation " + operation.getFeatureCode() +
" from MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while fetching operationId - '" +
mblOperationId + "' from MBL_OPERATION";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return operation;
}
private Connection getConnection() throws MobileDeviceManagementDAOException {
try {
return dataSource.getConnection();
} catch (SQLException e) {
String msg = "Error occurred while obtaining a connection from the mobile device " +
"management metadata repository datasource.";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
}
}
}

@ -1,239 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileOperationPropertyDAO;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperationProperty;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* Implementation of MobileOperationPropertyDAO.
*/
public class MobileOperationPropertyDAOImpl implements MobileOperationPropertyDAO {
private DataSource dataSource;
private static final Log log = LogFactory.getLog(MobileOperationPropertyDAOImpl.class);
public MobileOperationPropertyDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public boolean addMobileOperationProperty(MobileOperationProperty mblOperationProperty)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String createDBQuery =
"INSERT INTO AD_OPERATION_PROPERTY(OPERATION_ID, PROPERTY, VALUE) " +
"VALUES ( ?, ?, ?)";
stmt = conn.prepareStatement(createDBQuery);
stmt.setInt(1, mblOperationProperty.getOperationId());
stmt.setString(2, mblOperationProperty.getProperty());
stmt.setString(3, mblOperationProperty.getValue());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Added a new MobileOperationProperty " + mblOperationProperty.getProperty() +
" to MDM database.");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while adding mobile operation property to AD_OPERATION_PROPERTY " +
"table";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean updateMobileOperationProperty(
MobileOperationProperty mblOperationProperty)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String createDBQuery =
"UPDATE AD_OPERATION_PROPERTY SET VALUE = ? WHERE OPERATION_ID = ? AND " +
"PROPERTY = ?";
stmt = conn.prepareStatement(createDBQuery);
stmt.setString(1, mblOperationProperty.getValue());
stmt.setInt(2, mblOperationProperty.getOperationId());
stmt.setString(3, mblOperationProperty.getProperty());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Updated MobileOperationProperty " + mblOperationProperty.getProperty() +
" to MDM database.");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while updating the mobile operation property in" +
" AD_OPERATION_PROPERTY table.";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean deleteMobileOperationProperties(int mblOperationId)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String deleteDBQuery =
"DELETE FROM AD_OPERATION_PROPERTY WHERE OPERATION_ID = ?";
stmt = conn.prepareStatement(deleteDBQuery);
stmt.setInt(1, mblOperationId);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Deleted MobileOperationProperties of operation-id " +
mblOperationId +
" from MDM database.");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while deleting AD_OPERATION_PROPERTY entry with operation Id - ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public MobileOperationProperty getMobileOperationProperty(int mblOperationId,
String property)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileOperationProperty mobileOperationProperty = null;
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT OPERATION_ID, PROPERTY, VALUE FROM AD_OPERATION_PROPERTY WHERE " +
"OPERATION_ID = ? AND PROPERTY = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setInt(1, mblOperationId);
stmt.setString(2, property);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
mobileOperationProperty = new MobileOperationProperty();
mobileOperationProperty.setOperationId(resultSet.getInt(1));
mobileOperationProperty.setProperty(resultSet.getString(2));
mobileOperationProperty.setValue(resultSet.getString(3));
if (log.isDebugEnabled()) {
log.debug("Fetched MobileOperationProperty of Operation-id : " +
mblOperationId +
" Property : " + property + " from MDM database.");
}
}
} catch (SQLException e) {
String msg =
"Error occurred while fetching the mobile operation property of Operation_id : " +
mblOperationId + " and Property : " + property;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return mobileOperationProperty;
}
@Override
public List<MobileOperationProperty> getAllMobileOperationPropertiesOfOperation(
int mblOperationId) throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileOperationProperty mobileOperationProperty;
List<MobileOperationProperty> properties = new ArrayList<>();
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT OPERATION_ID, PROPERTY, VALUE FROM AD_OPERATION_PROPERTY WHERE " +
"OPERATION_ID = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setInt(1, mblOperationId);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
mobileOperationProperty = new MobileOperationProperty();
mobileOperationProperty.setOperationId(resultSet.getInt(1));
mobileOperationProperty.setProperty(resultSet.getString(2));
mobileOperationProperty.setValue(resultSet.getString(3));
properties.add(mobileOperationProperty);
}
if (log.isDebugEnabled()) {
log.debug("Fetched all MobileOperationProperties of Operation-id : " +
mblOperationId +
" from MDM database.");
}
} catch (SQLException e) {
String msg =
"Error occurred while fetching the mobile operation properties of Operation_id " +
mblOperationId;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return properties;
}
private Connection getConnection() throws MobileDeviceManagementDAOException {
try {
return dataSource.getConnection();
} catch (SQLException e) {
String msg = "Error occurred while obtaining a connection from the mobile device " +
"management metadata repository datasource.";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
}
}
}

@ -18,23 +18,13 @@
package org.wso2.carbon.device.mgt.mobile.impl.android; package org.wso2.carbon.device.mgt.mobile.impl.android;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.*; import org.wso2.carbon.device.mgt.common.*;
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.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.license.mgt.License;
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDevice;
import org.wso2.carbon.device.mgt.mobile.impl.android.dao.AndroidDAOFactory;
import org.wso2.carbon.device.mgt.mobile.util.MobileDeviceManagementUtil;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**

@ -28,8 +28,8 @@ import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager;
import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager; import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager;
import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException; import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException;
import org.wso2.carbon.device.mgt.mobile.common.MobilePluginConstants; import org.wso2.carbon.device.mgt.mobile.common.MobilePluginConstants;
import org.wso2.carbon.device.mgt.mobile.dao.AbstractMobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDevice; import org.wso2.carbon.device.mgt.mobile.dto.MobileDevice;
import org.wso2.carbon.device.mgt.mobile.impl.android.dao.AndroidDAOFactory; import org.wso2.carbon.device.mgt.mobile.impl.android.dao.AndroidDAOFactory;
import org.wso2.carbon.device.mgt.mobile.impl.android.util.AndroidPluginUtils; import org.wso2.carbon.device.mgt.mobile.impl.android.util.AndroidPluginUtils;
@ -49,7 +49,7 @@ import java.util.List;
public class AndroidDeviceManager implements DeviceManager { public class AndroidDeviceManager implements DeviceManager {
private MobileDeviceManagementDAOFactory daoFactory; private AbstractMobileDeviceManagementDAOFactory daoFactory;
private static final Log log = LogFactory.getLog(AndroidDeviceManagementService.class); private static final Log log = LogFactory.getLog(AndroidDeviceManagementService.class);
private FeatureManager featureManager = new AndroidFeatureManager(); private FeatureManager featureManager = new AndroidFeatureManager();
private LicenseManager licenseManager; private LicenseManager licenseManager;

@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.Feature; import org.wso2.carbon.device.mgt.common.Feature;
import org.wso2.carbon.device.mgt.common.FeatureManager; import org.wso2.carbon.device.mgt.common.FeatureManager;
import org.wso2.carbon.device.mgt.mobile.dao.AbstractMobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO; import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO;
@ -37,11 +38,10 @@ public class AndroidFeatureManager implements FeatureManager {
private MobileFeatureDAO featureDAO; private MobileFeatureDAO featureDAO;
private static final Log log = LogFactory.getLog(AndroidFeatureManager.class); private static final Log log = LogFactory.getLog(AndroidFeatureManager.class);
private MobileDeviceManagementDAOFactory mobileDeviceManagementDAOFactory;
public AndroidFeatureManager() { public AndroidFeatureManager() {
mobileDeviceManagementDAOFactory = new AndroidDAOFactory(); MobileDeviceManagementDAOFactory daoFactory = new AndroidDAOFactory();
this.featureDAO = mobileDeviceManagementDAOFactory.getMobileFeatureDao(); this.featureDAO = daoFactory.getMobileFeatureDAO();
} }
@Override @Override

@ -29,12 +29,11 @@ import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
public class AndroidDAOFactory extends MobileDeviceManagementDAOFactory public class AndroidDAOFactory extends AbstractMobileDeviceManagementDAOFactory {
implements MobileDeviceManagementDAOFactoryInterface {
private static final Log log = LogFactory.getLog(AndroidDAOFactory.class); private static final Log log = LogFactory.getLog(AndroidDAOFactory.class);
protected static DataSource dataSource; protected static DataSource dataSource;
private static ThreadLocal<Connection> currentConnection = new ThreadLocal<Connection>(); private static ThreadLocal<Connection> currentConnection = new ThreadLocal<>();
public AndroidDAOFactory() { public AndroidDAOFactory() {
this.dataSource = getDataSourceMap().get(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); this.dataSource = getDataSourceMap().get(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
@ -46,21 +45,7 @@ public class AndroidDAOFactory extends MobileDeviceManagementDAOFactory
} }
@Override @Override
public MobileOperationDAO getMobileOperationDAO() { public MobileFeatureDAO getMobileFeatureDAO() {
return null;
}
@Override
public MobileOperationPropertyDAO getMobileOperationPropertyDAO() {
return null;
}
@Override
public MobileDeviceOperationMappingDAO getMobileDeviceOperationDAO() {
return null;
}
@Override public MobileFeatureDAO getMobileFeatureDao() {
return new AndroidFeatureDAOImpl(); return new AndroidFeatureDAOImpl();
} }
@ -136,4 +121,5 @@ public class AndroidDAOFactory extends MobileDeviceManagementDAOFactory
closeConnection(); closeConnection();
} }
} }
} }

@ -52,17 +52,16 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT ANDROID_DEVICE_ID, GCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " + "SELECT DEVICE_ID, GCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " +
"VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION" + "VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION" +
" FROM AD_DEVICE WHERE ANDROID_DEVICE_ID = ?"; " FROM AD_DEVICE WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, mblDeviceId); stmt.setString(1, mblDeviceId);
rs = stmt.executeQuery(); rs = stmt.executeQuery();
if (rs.next()) { if (rs.next()) {
mobileDevice = new MobileDevice(); mobileDevice = new MobileDevice();
mobileDevice.setMobileDeviceId(rs.getString(AndroidPluginConstants. mobileDevice.setMobileDeviceId(rs.getString(AndroidPluginConstants.DEVICE_ID));
ANDROID_DEVICE_ID));
mobileDevice.setModel(rs.getString(AndroidPluginConstants.DEVICE_MODEL)); mobileDevice.setModel(rs.getString(AndroidPluginConstants.DEVICE_MODEL));
mobileDevice.setSerial(rs.getString(AndroidPluginConstants.SERIAL)); mobileDevice.setSerial(rs.getString(AndroidPluginConstants.SERIAL));
mobileDevice.setVendor(rs.getString(AndroidPluginConstants.VENDOR)); mobileDevice.setVendor(rs.getString(AndroidPluginConstants.VENDOR));
@ -103,7 +102,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String createDBQuery = String createDBQuery =
"INSERT INTO AD_DEVICE(ANDROID_DEVICE_ID, GCM_TOKEN, DEVICE_INFO, SERIAL, " + "INSERT INTO AD_DEVICE(DEVICE_ID, GCM_TOKEN, DEVICE_INFO, SERIAL, " +
"VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, " + "VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, " +
"OS_VERSION, DEVICE_MODEL) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; "OS_VERSION, DEVICE_MODEL) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
@ -150,7 +149,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
String updateDBQuery = String updateDBQuery =
"UPDATE AD_DEVICE SET GCM_TOKEN = ?, DEVICE_INFO = ?, SERIAL = ?, VENDOR = ?, " + "UPDATE AD_DEVICE SET GCM_TOKEN = ?, DEVICE_INFO = ?, SERIAL = ?, VENDOR = ?, " +
"MAC_ADDRESS = ?, DEVICE_NAME = ?, LATITUDE = ?, LONGITUDE = ?, IMEI = ?, " + "MAC_ADDRESS = ?, DEVICE_NAME = ?, LATITUDE = ?, LONGITUDE = ?, IMEI = ?, " +
"IMSI = ?, OS_VERSION = ?, DEVICE_MODEL = ? WHERE ANDROID_DEVICE_ID = ?"; "IMSI = ?, OS_VERSION = ?, DEVICE_MODEL = ? WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(updateDBQuery); stmt = conn.prepareStatement(updateDBQuery);
Map<String, String> properties = mobileDevice.getDeviceProperties(); Map<String, String> properties = mobileDevice.getDeviceProperties();
@ -195,7 +194,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String deleteDBQuery = String deleteDBQuery =
"DELETE FROM AD_DEVICE WHERE ANDROID_DEVICE_ID = ?"; "DELETE FROM AD_DEVICE WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(deleteDBQuery); stmt = conn.prepareStatement(deleteDBQuery);
stmt.setString(1, mblDeviceId); stmt.setString(1, mblDeviceId);
int rows = stmt.executeUpdate(); int rows = stmt.executeUpdate();
@ -225,7 +224,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT ANDROID_DEVICE_ID, GCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " + "SELECT DEVICE_ID, GCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " +
"VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION " + "VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION " +
"FROM AD_DEVICE"; "FROM AD_DEVICE";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
@ -233,8 +232,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
while (rs.next()) { while (rs.next()) {
mobileDevice = new MobileDevice(); mobileDevice = new MobileDevice();
mobileDevice.setMobileDeviceId(rs.getString(AndroidPluginConstants. mobileDevice.setMobileDeviceId(rs.getString(AndroidPluginConstants.DEVICE_ID));
ANDROID_DEVICE_ID));
mobileDevice.setModel(rs.getString(AndroidPluginConstants.DEVICE_MODEL)); mobileDevice.setModel(rs.getString(AndroidPluginConstants.DEVICE_MODEL));
mobileDevice.setSerial(rs.getString(AndroidPluginConstants.SERIAL)); mobileDevice.setSerial(rs.getString(AndroidPluginConstants.SERIAL));
mobileDevice.setVendor(rs.getString(AndroidPluginConstants.VENDOR)); mobileDevice.setVendor(rs.getString(AndroidPluginConstants.VENDOR));
@ -244,7 +242,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
mobileDevice.setImsi(rs.getString(AndroidPluginConstants.IMSI)); mobileDevice.setImsi(rs.getString(AndroidPluginConstants.IMSI));
mobileDevice.setOsVersion(rs.getString(AndroidPluginConstants.OS_VERSION)); mobileDevice.setOsVersion(rs.getString(AndroidPluginConstants.OS_VERSION));
Map<String, String> propertyMap = new HashMap<String, String>(); Map<String, String> propertyMap = new HashMap<>();
propertyMap.put(AndroidPluginConstants.GCM_TOKEN, rs.getString(AndroidPluginConstants.GCM_TOKEN)); propertyMap.put(AndroidPluginConstants.GCM_TOKEN, rs.getString(AndroidPluginConstants.GCM_TOKEN));
propertyMap.put(AndroidPluginConstants.DEVICE_INFO, rs.getString(AndroidPluginConstants.DEVICE_INFO)); propertyMap.put(AndroidPluginConstants.DEVICE_INFO, rs.getString(AndroidPluginConstants.DEVICE_INFO));
propertyMap.put(AndroidPluginConstants.DEVICE_NAME, rs.getString(AndroidPluginConstants.DEVICE_NAME)); propertyMap.put(AndroidPluginConstants.DEVICE_NAME, rs.getString(AndroidPluginConstants.DEVICE_NAME));

@ -22,7 +22,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants; import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO; import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.mobile.dto.MobileFeature; import org.wso2.carbon.device.mgt.mobile.dto.MobileFeature;
@ -30,7 +29,6 @@ import org.wso2.carbon.device.mgt.mobile.impl.android.dao.AndroidDAOFactory;
import org.wso2.carbon.device.mgt.mobile.impl.android.dao.AndroidFeatureManagementDAOException; import org.wso2.carbon.device.mgt.mobile.impl.android.dao.AndroidFeatureManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.impl.android.util.AndroidPluginConstants; import org.wso2.carbon.device.mgt.mobile.impl.android.util.AndroidPluginConstants;
import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -75,7 +73,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
@Override @Override
public boolean updateFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException { public boolean updateFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException {
boolean status = false; boolean status = false;
Connection conn = null; Connection conn;
PreparedStatement stmt = null; PreparedStatement stmt = null;
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
@ -112,7 +110,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
PreparedStatement stmt = null; PreparedStatement stmt = null;
boolean status = false; boolean status = false;
Connection conn = null; Connection conn;
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String sql = "DELETE FROM AD_FEATURE WHERE ID = ?"; String sql = "DELETE FROM AD_FEATURE WHERE ID = ?";
@ -131,11 +129,10 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
} }
@Override @Override
public boolean deleteFeatureByCode(String mblFeatureCode) throws public boolean deleteFeatureByCode(String mblFeatureCode) throws MobileDeviceManagementDAOException {
MobileDeviceManagementDAOException {
PreparedStatement stmt = null; PreparedStatement stmt = null;
boolean status = false; boolean status = false;
Connection conn = null; Connection conn;
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String sql = "DELETE FROM AD_FEATURE WHERE CODE = ?"; String sql = "DELETE FROM AD_FEATURE WHERE CODE = ?";
@ -154,11 +151,10 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
} }
@Override @Override
public MobileFeature getFeatureById(int mblFeatureId) throws public MobileFeature getFeatureById(int mblFeatureId) throws MobileDeviceManagementDAOException {
MobileDeviceManagementDAOException {
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
Connection conn = null; Connection conn;
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE ID = ?"; String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE ID = ?";
@ -189,11 +185,10 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
} }
@Override @Override
public MobileFeature getFeatureByCode(String mblFeatureCode) throws public MobileFeature getFeatureByCode(String mblFeatureCode) throws MobileDeviceManagementDAOException {
MobileDeviceManagementDAOException {
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
Connection conn = null; Connection conn;
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
@ -232,11 +227,10 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
@Override @Override
public List<MobileFeature> getAllFeatures() throws MobileDeviceManagementDAOException { public List<MobileFeature> getAllFeatures() throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
Connection conn = null; Connection conn = null;
List<MobileFeature> features = new ArrayList<MobileFeature>(); List<MobileFeature> features = new ArrayList<>();
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
@ -250,8 +244,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
mobileFeature.setId(rs.getInt(AndroidPluginConstants.ANDROID_FEATURE_ID)); mobileFeature.setId(rs.getInt(AndroidPluginConstants.ANDROID_FEATURE_ID));
mobileFeature.setCode(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_CODE)); mobileFeature.setCode(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_CODE));
mobileFeature.setName(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_NAME)); mobileFeature.setName(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_NAME));
mobileFeature.setDescription(rs.getString(AndroidPluginConstants. mobileFeature.setDescription(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_DESCRIPTION));
ANDROID_FEATURE_DESCRIPTION));
mobileFeature.setDeviceType( mobileFeature.setDeviceType(
DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
features.add(mobileFeature); features.add(mobileFeature);
@ -265,4 +258,5 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
AndroidDAOFactory.closeConnection(); AndroidDAOFactory.closeConnection();
} }
} }
} }

@ -24,7 +24,7 @@ package org.wso2.carbon.device.mgt.mobile.impl.android.util;
public class AndroidPluginConstants { public class AndroidPluginConstants {
//Properties related to AD_DEVICE table //Properties related to AD_DEVICE table
public static final String ANDROID_DEVICE_ID = "ANDROID_DEVICE_ID"; public static final String DEVICE_ID = "DEVICE_ID";
public static final String GCM_TOKEN = "GCM_TOKEN"; public static final String GCM_TOKEN = "GCM_TOKEN";
public static final String DEVICE_INFO = "DEVICE_INFO"; public static final String DEVICE_INFO = "DEVICE_INFO";
public static final String SERIAL = "SERIAL"; public static final String SERIAL = "SERIAL";

@ -28,8 +28,8 @@ import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager;
import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager; import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager;
import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException; import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException;
import org.wso2.carbon.device.mgt.mobile.common.MobilePluginConstants; import org.wso2.carbon.device.mgt.mobile.common.MobilePluginConstants;
import org.wso2.carbon.device.mgt.mobile.dao.AbstractMobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDevice; import org.wso2.carbon.device.mgt.mobile.dto.MobileDevice;
import org.wso2.carbon.device.mgt.mobile.impl.windows.dao.WindowsDAOFactory; import org.wso2.carbon.device.mgt.mobile.impl.windows.dao.WindowsDAOFactory;
import org.wso2.carbon.device.mgt.mobile.impl.windows.util.WindowsPluginUtils; import org.wso2.carbon.device.mgt.mobile.impl.windows.util.WindowsPluginUtils;
@ -49,7 +49,7 @@ import java.util.List;
public class WindowsDeviceManager implements DeviceManager { public class WindowsDeviceManager implements DeviceManager {
private MobileDeviceManagementDAOFactory daoFactory; private AbstractMobileDeviceManagementDAOFactory daoFactory;
private LicenseManager licenseManager; private LicenseManager licenseManager;
private FeatureManager featureManager = new WindowsFeatureManager(); private FeatureManager featureManager = new WindowsFeatureManager();
private static final Log log = LogFactory.getLog(WindowsDeviceManagementService.class); private static final Log log = LogFactory.getLog(WindowsDeviceManagementService.class);

@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.Feature; import org.wso2.carbon.device.mgt.common.Feature;
import org.wso2.carbon.device.mgt.common.FeatureManager; import org.wso2.carbon.device.mgt.common.FeatureManager;
import org.wso2.carbon.device.mgt.mobile.dao.AbstractMobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO; import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO;
@ -37,16 +38,14 @@ public class WindowsFeatureManager implements FeatureManager {
private MobileFeatureDAO featureDAO; private MobileFeatureDAO featureDAO;
private static final Log log = LogFactory.getLog(WindowsFeatureManager.class); private static final Log log = LogFactory.getLog(WindowsFeatureManager.class);
private MobileDeviceManagementDAOFactory mobileDeviceManagementDAOFactory;
public WindowsFeatureManager() { public WindowsFeatureManager() {
mobileDeviceManagementDAOFactory = new WindowsDAOFactory(); MobileDeviceManagementDAOFactory daoFactory = new WindowsDAOFactory();
this.featureDAO = mobileDeviceManagementDAOFactory.getMobileFeatureDao(); this.featureDAO = daoFactory.getMobileFeatureDAO();
} }
@Override @Override
public boolean addFeature(Feature feature) throws DeviceManagementException { public boolean addFeature(Feature feature) throws DeviceManagementException {
try { try {
WindowsDAOFactory.beginTransaction(); WindowsDAOFactory.beginTransaction();
MobileFeature mobileFeature = MobileDeviceManagementUtil.convertToMobileFeature(feature); MobileFeature mobileFeature = MobileDeviceManagementUtil.convertToMobileFeature(feature);

@ -28,12 +28,11 @@ import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
public class WindowsDAOFactory extends MobileDeviceManagementDAOFactory public class WindowsDAOFactory extends AbstractMobileDeviceManagementDAOFactory {
implements MobileDeviceManagementDAOFactoryInterface {
private static final Log log = LogFactory.getLog(WindowsDAOFactory.class); private static final Log log = LogFactory.getLog(WindowsDAOFactory.class);
protected static DataSource dataSource; protected static DataSource dataSource;
private static ThreadLocal<Connection> currentConnection = new ThreadLocal<Connection>(); private static ThreadLocal<Connection> currentConnection = new ThreadLocal<>();
public WindowsDAOFactory() { public WindowsDAOFactory() {
this.dataSource = getDataSourceMap().get(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_WINDOWS); this.dataSource = getDataSourceMap().get(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_WINDOWS);
@ -45,27 +44,7 @@ public class WindowsDAOFactory extends MobileDeviceManagementDAOFactory
} }
@Override @Override
public MobileOperationDAO getMobileOperationDAO() { public MobileFeatureDAO getMobileFeatureDAO() {
return null;
}
@Override
public MobileOperationPropertyDAO getMobileOperationPropertyDAO() {
return null;
}
@Override
public MobileDeviceOperationMappingDAO getMobileDeviceOperationDAO() {
return null;
}
@Override
public MobileFeatureDAO getMobileFeatureDao() {
return null;
}
@Override
public MobileFeaturePropertyDAO getFeaturePropertyDAO() {
return null; return null;
} }
@ -145,4 +124,5 @@ public class WindowsDAOFactory extends MobileDeviceManagementDAOFactory
log.warn("Error occurred while roll-backing the transaction", e); log.warn("Error occurred while roll-backing the transaction", e);
} }
} }
} }

@ -251,4 +251,5 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
} }
} }
} }

@ -28,7 +28,7 @@ import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException;
import org.wso2.carbon.device.mgt.mobile.config.MobileDeviceConfigurationManager; import org.wso2.carbon.device.mgt.mobile.config.MobileDeviceConfigurationManager;
import org.wso2.carbon.device.mgt.mobile.config.MobileDeviceManagementConfig; import org.wso2.carbon.device.mgt.mobile.config.MobileDeviceManagementConfig;
import org.wso2.carbon.device.mgt.mobile.config.datasource.MobileDataSourceConfig; import org.wso2.carbon.device.mgt.mobile.config.datasource.MobileDataSourceConfig;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.mobile.dao.AbstractMobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.mobile.impl.android.AndroidDeviceManagementService; import org.wso2.carbon.device.mgt.mobile.impl.android.AndroidDeviceManagementService;
import org.wso2.carbon.device.mgt.mobile.impl.android.AndroidPolicyMonitoringService; import org.wso2.carbon.device.mgt.mobile.impl.android.AndroidPolicyMonitoringService;
@ -79,7 +79,7 @@ public class MobileDeviceManagementServiceComponent {
Map<String, MobileDataSourceConfig> dsConfigMap = Map<String, MobileDataSourceConfig> dsConfigMap =
config.getMobileDeviceMgtRepository().getMobileDataSourceConfigMap(); config.getMobileDeviceMgtRepository().getMobileDataSourceConfigMap();
MobileDeviceManagementDAOFactory.init(dsConfigMap); AbstractMobileDeviceManagementDAOFactory.init(dsConfigMap);
String setupOption = System.getProperty("setup"); String setupOption = System.getProperty("setup");
if (setupOption != null) { if (setupOption != null) {
@ -91,7 +91,7 @@ public class MobileDeviceManagementServiceComponent {
try { try {
for (String pluginType : dsConfigMap.keySet()) { for (String pluginType : dsConfigMap.keySet()) {
MobileDeviceManagementDAOUtil MobileDeviceManagementDAOUtil
.setupMobileDeviceManagementSchema(MobileDeviceManagementDAOFactory.getDataSourceMap .setupMobileDeviceManagementSchema(AbstractMobileDeviceManagementDAOFactory.getDataSourceMap
().get(pluginType), pluginType); ().get(pluginType), pluginType);
} }
} catch (MobileDeviceMgtPluginException e) { } catch (MobileDeviceMgtPluginException e) {

@ -1,441 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.impl.dao;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.impl.MobileDeviceOperationMappingDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dao.impl.MobileOperationDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDevice;
import org.wso2.carbon.device.mgt.mobile.dto.MobileDeviceOperationMapping;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperation;
import org.wso2.carbon.device.mgt.mobile.impl.common.DBTypes;
import org.wso2.carbon.device.mgt.mobile.impl.common.TestDBConfiguration;
import org.wso2.carbon.device.mgt.mobile.impl.dao.util.MobileDatabaseUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
*
* Class for holding unit-tests related to MobileDeviceOperationMappingDAO class.
*
*/
public class MobileDeviceOperationMappingDAOTestSuite {
private static final Log log =
LogFactory.getLog(MobileDeviceOperationMappingDAOTestSuite.class);
public static final String TEST_MOBILE_DEVICE_ID = "ABCD";
public static final String TEST_MOBILE_IMEI = "2412421412";
public static final String TEST_MOBILE_IMSI = "325235235";
public static final String TEST_MOBILE_MODEL = "S5";
public static final String TEST_MOBILE_VENDOR = "samsung";
public static final String TEST_MOBILE_REG_ID = "2414";
public static final String TEST_MOBILE_OS_VERSION = "5.0.0";
public static final String TEST_MOBILE_LATITUDE = "6.93N";
public static final String TEST_MOBILE_LONGITUDE = "80.60E";
public static final String TEST_MOBILE_TOKEN = "2412K2HKHK24K12H4";
public static final String TEST_MOBILE_SERIAL = "24124IIH4I2K4";
public static final String TEST_MOBILE_CHALLENGE = "ASFASFSAFASFATWTWQTTQWTWQTQWTQWTWQT";
public static final String TEST_MOBILE_UNLOCK_TOKEN = "FAFWQUWFUQWYWQYRWQURYUURUWQUWRUWRUWE";
public static final String TEST_MBL_OPR_FEATURE_CODE1 = "LOCK";
public static final String TEST_MBL_OPR_FEATURE_CODE2 = "WIPE";
public static final long TEST_MBL_OPR_CREATED_DATE = new java.util.Date().getTime();
private TestDBConfiguration testDBConfiguration;
private MobileOperationDAOImpl mblOperationDAO;
private MobileDeviceOperationMappingDAOImpl mblDeviceOperationMappingDAO;
private int mblOperationId1;
private int mblOperationId2;
@BeforeClass
@Parameters("dbType")
public void setUpDB(String dbTypeStr) throws Exception {
DBTypes dbType = DBTypes.valueOf(dbTypeStr);
testDBConfiguration = MobileDatabaseUtils.getTestDBConfiguration(dbType);
switch (dbType) {
case H2:
MobileDatabaseUtils.createH2DB(testDBConfiguration);
DataSource testDataSource = new org.apache.tomcat.jdbc.pool.DataSource();
PoolProperties properties = new PoolProperties();
properties.setUrl(testDBConfiguration.getConnectionURL());
properties.setDriverClassName(testDBConfiguration.getDriverClassName());
properties.setUsername(testDBConfiguration.getUsername());
properties.setPassword(testDBConfiguration.getPassword());
testDataSource.setPoolProperties(properties);
mblOperationDAO = new MobileOperationDAOImpl(testDataSource);
mblDeviceOperationMappingDAO =
new MobileDeviceOperationMappingDAOImpl(testDataSource);
default:
}
}
//@Test
public void addMobileDeviceOperationMappingTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
List<MobileDeviceOperationMapping> mblOperations =
new ArrayList<MobileDeviceOperationMapping>();
MobileDeviceOperationMapping mblDvOperationMapping =
new MobileDeviceOperationMapping();
//Add a new Device to the database
MobileDevice mobileDevice = new MobileDevice();
mobileDevice.setMobileDeviceId(TEST_MOBILE_DEVICE_ID);
mobileDevice.setImei(TEST_MOBILE_IMEI);
mobileDevice.setImsi(TEST_MOBILE_IMSI);
mobileDevice.setModel(TEST_MOBILE_MODEL);
mobileDevice.setVendor(TEST_MOBILE_VENDOR);
mobileDevice.setOsVersion(TEST_MOBILE_OS_VERSION);
mobileDevice.setLatitude(TEST_MOBILE_LATITUDE);
mobileDevice.setLongitude(TEST_MOBILE_LONGITUDE);
mobileDevice.setSerial(TEST_MOBILE_SERIAL);
//Add an Operation to the db
MobileOperation mblOperation = new MobileOperation();
mblOperation.setFeatureCode(TEST_MBL_OPR_FEATURE_CODE1);
mblOperation.setCreatedDate(TEST_MBL_OPR_CREATED_DATE);
mblOperationId1 = mblOperationDAO.addMobileOperation(mblOperation);
//Add a new Operation 2 to the db
mblOperation.setFeatureCode(TEST_MBL_OPR_FEATURE_CODE2);
mblOperation.setCreatedDate(TEST_MBL_OPR_CREATED_DATE);
mblOperationId2 = mblOperationDAO.addMobileOperation(mblOperation);
//Add a device-operation mapping 1 to the table
mblDvOperationMapping.setDeviceId(TEST_MOBILE_DEVICE_ID);
mblDvOperationMapping.setOperationId(mblOperationId1);
mblDvOperationMapping.setStatus(MobileDeviceOperationMapping.Status.NEW);
boolean status1 =
mblDeviceOperationMappingDAO.addMobileDeviceOperationMapping(mblDvOperationMapping);
//Add a device-operation mapping 2 to the table
mblDvOperationMapping.setDeviceId(TEST_MOBILE_DEVICE_ID);
mblDvOperationMapping.setOperationId(mblOperationId2);
mblDvOperationMapping.setStatus(MobileDeviceOperationMapping.Status.NEW);
boolean status2 =
mblDeviceOperationMappingDAO.addMobileDeviceOperationMapping(mblDvOperationMapping);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, SENT_DATE, RECEIVED_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setString(1, TEST_MOBILE_DEVICE_ID);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
mblDvOperationMapping = new MobileDeviceOperationMapping();
mblDvOperationMapping.setDeviceId(resultSet.getString(1));
mblDvOperationMapping.setOperationId(resultSet.getInt(2));
mblDvOperationMapping.setSentDate(resultSet.getLong(3));
mblDvOperationMapping.setReceivedDate(resultSet.getLong(4));
mblDvOperationMapping.setStatus(resultSet.getString(5));
mblOperations.add(mblDvOperationMapping);
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation Mappings data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status1, "MobileOperationMapping1 has added ");
Assert.assertTrue(status2, "MobileOperationMapping2 has added ");
Assert.assertTrue(mblOperations.size() == 2, "MobileOperationMappings have retrieved ");
for (MobileDeviceOperationMapping mapping : mblOperations) {
Assert.assertEquals(TEST_MOBILE_DEVICE_ID, mapping.getDeviceId(),
"MobileOperationMapping device id has persisted ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.NEW, mapping.getStatus(),
"MobileOperationMapping status has persisted ");
Assert.assertTrue(mapping.getOperationId() > 0,
"MobileOperationMapping operation-id has persisted ");
Assert.assertTrue(mapping.getSentDate() == 0,
"MobileOperationMapping sent-date has fetched ");
Assert.assertTrue(mapping.getReceivedDate() == 0,
"MobileOperationMapping received-date has fetched ");
}
}
//@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest" })
public void getMobileDeviceOperationMappingTest() throws MobileDeviceManagementDAOException {
MobileDeviceOperationMapping mblOperationMapping =
mblDeviceOperationMappingDAO.getMobileDeviceOperationMapping(
TEST_MOBILE_DEVICE_ID, mblOperationId1);
Assert.assertNotNull(mblOperationMapping, "MobileOperationMapping 1 has fetched ");
Assert.assertEquals(TEST_MOBILE_DEVICE_ID, mblOperationMapping.getDeviceId(),
"MobileOperationMapping device id has fetched ");
Assert.assertEquals(mblOperationId1, mblOperationMapping.getOperationId(),
"MobileOperationMapping device id has fetched ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.NEW,
mblOperationMapping.getStatus(),
"MobileOperationMapping status has fetched ");
Assert.assertTrue(mblOperationMapping.getSentDate() == 0,
"MobileOperationMapping sent-date has fetched ");
Assert.assertTrue(mblOperationMapping.getReceivedDate() == 0,
"MobileOperationMapping received-date has fetched ");
}
//@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest" })
public void getAllMobileDeviceOperationMappingsOfDeviceTest()
throws MobileDeviceManagementDAOException {
List<MobileDeviceOperationMapping> mblOperationMappings =
mblDeviceOperationMappingDAO.getAllMobileDeviceOperationMappingsOfDevice(
TEST_MOBILE_DEVICE_ID);
Assert.assertNotNull(mblOperationMappings, "MobileOperationMappings have fetched ");
Assert.assertTrue(mblOperationMappings.size() == 2,
"All MobileOperationMappings have fetched ");
for (MobileDeviceOperationMapping mblOperationMapping : mblOperationMappings) {
Assert.assertEquals(TEST_MOBILE_DEVICE_ID, mblOperationMapping.getDeviceId(),
"MobileOperationMapping device id has fetched ");
Assert.assertTrue(mblOperationMapping.getOperationId() > 0,
"MobileOperationMapping operation-id has fetched ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.NEW,
mblOperationMapping.getStatus(),
"MobileOperationMapping status has fetched ");
Assert.assertTrue(mblOperationMapping.getSentDate() == 0,
"MobileOperationMapping sent-date has fetched ");
Assert.assertTrue(mblOperationMapping.getReceivedDate() == 0,
"MobileOperationMapping received-date has fetched ");
}
}
/**@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest",
"getAllMobileDeviceOperationMappingsOfDeviceTest" })*/
public void updateMobileDeviceOperationMappingToInProgressTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileDeviceOperationMapping mblOperationMapping = null;
//Update device-operation to In-Progress state
boolean status =
mblDeviceOperationMappingDAO.updateMobileDeviceOperationMappingToInProgress(
TEST_MOBILE_DEVICE_ID, mblOperationId1);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, SENT_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setString(1, TEST_MOBILE_DEVICE_ID);
preparedStatement.setInt(2, mblOperationId1);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
mblOperationMapping = new MobileDeviceOperationMapping();
mblOperationMapping.setDeviceId(resultSet.getString(1));
mblOperationMapping.setOperationId(resultSet.getInt(2));
mblOperationMapping.setSentDate(resultSet.getLong(3));
mblOperationMapping.setStatus(resultSet.getString(4));
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation Mappings data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileOperationMapping 1 has updated ");
Assert.assertNotNull(mblOperationMapping, "MobileOperationMappings have fetched ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.INPROGRESS,
mblOperationMapping.getStatus(),
"MobileOperationMapping status has updated ");
Assert.assertTrue(mblOperationMapping.getSentDate() > 0,
"MobileOperationMapping sent-date has updated ");
}
/**
@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest",
"getAllMobileDeviceOperationMappingsOfDeviceTest" })*/
public void updateMobileDeviceOperationMappingToCompletedTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileDeviceOperationMapping mblOperationMapping = null;
//Update device-operation to Completed state
boolean status =
mblDeviceOperationMappingDAO.updateMobileDeviceOperationMappingToCompleted(
TEST_MOBILE_DEVICE_ID, mblOperationId1);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, RECEIVED_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setString(1, TEST_MOBILE_DEVICE_ID);
preparedStatement.setInt(2, mblOperationId1);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
mblOperationMapping = new MobileDeviceOperationMapping();
mblOperationMapping.setDeviceId(resultSet.getString(1));
mblOperationMapping.setOperationId(resultSet.getInt(2));
mblOperationMapping.setReceivedDate(resultSet.getLong(3));
mblOperationMapping.setStatus(resultSet.getString(4));
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation Mappings data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileOperationMapping 1 has updated ");
Assert.assertNotNull(mblOperationMapping, "MobileOperationMappings have fetched ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.COMPLETED,
mblOperationMapping.getStatus(),
"MobileOperationMapping status has updated ");
Assert.assertTrue(mblOperationMapping.getReceivedDate() > 0,
"MobileOperationMapping received-date has updated ");
}
/**
@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest",
"getAllMobileDeviceOperationMappingsOfDeviceTest",
"updateMobileDeviceOperationMappingToInProgressTest",
"updateMobileDeviceOperationMappingToCompletedTest" })*/
public void updateMobileDeviceOperationMappingTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileDeviceOperationMapping mblOperationMapping = new MobileDeviceOperationMapping();
long currentTime = new java.util.Date().getTime();
//Update device-operation mapping 1
mblOperationMapping.setDeviceId(TEST_MOBILE_DEVICE_ID);
mblOperationMapping.setOperationId(mblOperationId1);
mblOperationMapping.setStatus(MobileDeviceOperationMapping.Status.INPROGRESS);
mblOperationMapping.setSentDate(currentTime);
mblOperationMapping.setReceivedDate(currentTime);
boolean status =
mblDeviceOperationMappingDAO.updateMobileDeviceOperationMapping(
mblOperationMapping);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, RECEIVED_DATE, SENT_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setString(1, TEST_MOBILE_DEVICE_ID);
preparedStatement.setInt(2, mblOperationId1);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
mblOperationMapping = new MobileDeviceOperationMapping();
mblOperationMapping.setDeviceId(resultSet.getString(1));
mblOperationMapping.setOperationId(resultSet.getInt(2));
mblOperationMapping.setReceivedDate(resultSet.getLong(3));
mblOperationMapping.setSentDate(resultSet.getLong(4));
mblOperationMapping.setStatus(resultSet.getString(5));
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation Mappings data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileOperationMapping 1 has updated ");
Assert.assertNotNull(mblOperationMapping, "MobileOperationMappings have fetched ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.INPROGRESS,
mblOperationMapping.getStatus(),
"MobileOperationMapping status has updated ");
Assert.assertTrue(mblOperationMapping.getReceivedDate() == currentTime,
"MobileOperationMapping received-date has updated ");
Assert.assertTrue(mblOperationMapping.getSentDate() == currentTime,
"MobileOperationMapping sent-date has updated ");
}
/**
@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest",
"getAllMobileDeviceOperationMappingsOfDeviceTest",
"updateMobileDeviceOperationMappingToInProgressTest" })*/
public void getAllPendingOperationMappingsOfMobileDeviceTest()
throws MobileDeviceManagementDAOException {
List<MobileDeviceOperationMapping> mblOperationMappings =
mblDeviceOperationMappingDAO.getAllPendingOperationMappingsOfMobileDevice(
TEST_MOBILE_DEVICE_ID);
Assert.assertNotNull(mblOperationMappings, "Pending MobileOperationMappings have fetched ");
Assert.assertTrue(mblOperationMappings.size() == 1,
"All MobileOperationMappings have fetched ");
for (MobileDeviceOperationMapping mblOperationMapping : mblOperationMappings) {
Assert.assertEquals(TEST_MOBILE_DEVICE_ID, mblOperationMapping.getDeviceId(),
"MobileOperationMapping device id has fetched ");
Assert.assertTrue(mblOperationMapping.getOperationId() == mblOperationId2,
"MobileOperationMapping operation-id has fetched ");
Assert.assertEquals(MobileDeviceOperationMapping.Status.NEW,
mblOperationMapping.getStatus(),
"MobileOperationMapping status has fetched ");
Assert.assertTrue(mblOperationMapping.getSentDate() == 0,
"MobileOperationMapping sent-date has fetched ");
Assert.assertTrue(mblOperationMapping.getReceivedDate() == 0,
"MobileOperationMapping received-date has fetched ");
}
}
/**
@Test(dependsOnMethods = { "addMobileDeviceOperationMappingTest",
"getAllMobileDeviceOperationMappingsOfDeviceTest",
"updateMobileDeviceOperationMappingToInProgressTest",
"updateMobileDeviceOperationMappingToCompletedTest",
"updateMobileDeviceOperationMappingTest" })*/
public void deleteMobileDeviceOperationMappingTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
boolean status =
mblDeviceOperationMappingDAO.deleteMobileDeviceOperationMapping(
TEST_MOBILE_DEVICE_ID, mblOperationId1);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT DEVICE_ID, OPERATION_ID, RECEIVED_DATE, SENT_DATE, STATUS FROM " +
"AD_DEVICE_OPERATION_MAPPING WHERE DEVICE_ID = ? AND OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setString(1, TEST_MOBILE_DEVICE_ID);
preparedStatement.setInt(2, mblOperationId1);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
status = false;
}
} catch (SQLException e) {
String msg = "Error in retrieving MobileFeatureProperty data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileDeviceOperationMapping 1 has deleted ");
}
}

@ -92,7 +92,7 @@ public class MobileFeatureDAOTestSuite {
try { try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL()); conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query = String query =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE WHERE CODE = ?"; "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE WHERE CODE = ?";
preparedStatement = conn.prepareStatement(query); preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, MBL_FEATURE_CODE); preparedStatement.setString(1, MBL_FEATURE_CODE);
ResultSet resultSet = preparedStatement.executeQuery(); ResultSet resultSet = preparedStatement.executeQuery();
@ -175,7 +175,7 @@ public class MobileFeatureDAOTestSuite {
try { try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL()); conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query = String query =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE CODE = ?"; "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE CODE = ?";
stmt = conn.prepareStatement(query); stmt = conn.prepareStatement(query);
stmt.setString(1, MBL_FEATURE_UPDATED_CODE); stmt.setString(1, MBL_FEATURE_UPDATED_CODE);
ResultSet resultSet = stmt.executeQuery(); ResultSet resultSet = stmt.executeQuery();
@ -208,7 +208,7 @@ public class MobileFeatureDAOTestSuite {
boolean status = mblFeatureDAO.deleteFeatureById(mblFeatureId); boolean status = mblFeatureDAO.deleteFeatureById(mblFeatureId);
try { try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL()); conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query = "SELECT FEATURE_ID, CODE FROM AD_FEATURE WHERE FEATURE_ID = ?"; String query = "SELECT ID, CODE FROM AD_FEATURE WHERE ID = ?";
stmt = conn.prepareStatement(query); stmt = conn.prepareStatement(query);
stmt.setInt(1, mblFeatureId); stmt.setInt(1, mblFeatureId);
ResultSet resultSet = stmt.executeQuery(); ResultSet resultSet = stmt.executeQuery();
@ -241,7 +241,7 @@ public class MobileFeatureDAOTestSuite {
boolean status = mblFeatureDAO.deleteFeatureByCode(MBL_FEATURE_CODE); boolean status = mblFeatureDAO.deleteFeatureByCode(MBL_FEATURE_CODE);
try { try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL()); conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query = "SELECT FEATURE_ID, CODE FROM AD_FEATURE WHERE CODE = ?"; String query = "SELECT ID, CODE FROM AD_FEATURE WHERE CODE = ?";
preparedStatement = conn.prepareStatement(query); preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, MBL_FEATURE_CODE); preparedStatement.setString(1, MBL_FEATURE_CODE);
ResultSet resultSet = preparedStatement.executeQuery(); ResultSet resultSet = preparedStatement.executeQuery();

@ -1,186 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.impl.dao;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.impl.MobileOperationDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperation;
import org.wso2.carbon.device.mgt.mobile.impl.common.DBTypes;
import org.wso2.carbon.device.mgt.mobile.impl.common.TestDBConfiguration;
import org.wso2.carbon.device.mgt.mobile.impl.dao.util.MobileDatabaseUtils;
import java.sql.*;
/**
* Class for holding unit-tests related to MobileOperationDAO class.
*/
public class MobileOperationDAOTestSuite {
private static final Log log = LogFactory.getLog(MobileOperationDAOTestSuite.class);
public static final String TEST_MBL_OPR_FEATURE_CODE = "LOCK";
public static final String TEST_MBL_OPR_UPDATED_FEATURE_CODE = "MUTE";
public static final long TEST_MBL_OPR_CREATED_DATE = new java.util.Date().getTime();
private TestDBConfiguration testDBConfiguration;
private MobileOperationDAOImpl mblOperationDAO;
private int mblOperationId;
@BeforeClass
@Parameters("dbType")
public void setUpDB(String dbTypeStr) throws Exception {
DBTypes dbType = DBTypes.valueOf(dbTypeStr);
testDBConfiguration = MobileDatabaseUtils.getTestDBConfiguration(dbType);
switch (dbType) {
case H2:
MobileDatabaseUtils.createH2DB(testDBConfiguration);
DataSource testDataSource = new org.apache.tomcat.jdbc.pool.DataSource();
PoolProperties properties = new PoolProperties();
properties.setUrl(testDBConfiguration.getConnectionURL());
properties.setDriverClassName(testDBConfiguration.getDriverClassName());
properties.setUsername(testDBConfiguration.getUsername());
properties.setPassword(testDBConfiguration.getPassword());
testDataSource.setPoolProperties(properties);
mblOperationDAO = new MobileOperationDAOImpl(testDataSource);
default:
}
}
@Test
public void addMobileOperationTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileOperation mblOperation = new MobileOperation();
MobileOperation testMblOperation = new MobileOperation();
mblOperation.setFeatureCode(TEST_MBL_OPR_FEATURE_CODE);
mblOperation.setCreatedDate(TEST_MBL_OPR_CREATED_DATE);
mblOperationId = mblOperationDAO.addMobileOperation(mblOperation);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT OPERATION_ID, FEATURE_CODE, CREATED_DATE FROM AD_OPERATION WHERE OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setInt(1, mblOperationId);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
testMblOperation.setOperationId(resultSet.getInt(1));
testMblOperation.setFeatureCode(resultSet.getString(2));
testMblOperation.setCreatedDate(resultSet.getLong(3));
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(mblOperationId > 0, "MobileOperation has added ");
Assert.assertEquals(TEST_MBL_OPR_FEATURE_CODE, testMblOperation.getFeatureCode(),
"MobileOperation feature code has persisted ");
Assert.assertEquals(TEST_MBL_OPR_CREATED_DATE, testMblOperation.getCreatedDate(),
"MobileOperation created-date has persisted ");
}
@Test(dependsOnMethods = { "addMobileOperationTest" })
public void getMobileOperationTest()
throws MobileDeviceManagementDAOException {
MobileOperation mobileOperation = mblOperationDAO.getMobileOperation(mblOperationId);
Assert.assertEquals(TEST_MBL_OPR_CREATED_DATE, mobileOperation.getCreatedDate(),
"MobileOperation created-date has retrieved ");
Assert.assertEquals(TEST_MBL_OPR_FEATURE_CODE, mobileOperation.getFeatureCode(),
"MobileOperation feature-code has retrieved ");
}
@Test(dependsOnMethods = { "addMobileOperationTest", "getMobileOperationTest" })
public void updateMobileOperationTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
long updatedDate = new java.util.Date().getTime();
MobileOperation mblOperation = new MobileOperation();
MobileOperation testMblOperation = new MobileOperation();
mblOperation.setFeatureCode(TEST_MBL_OPR_UPDATED_FEATURE_CODE);
mblOperation.setCreatedDate(updatedDate);
mblOperation.setOperationId(mblOperationId);
boolean status = mblOperationDAO.updateMobileOperation(mblOperation);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT OPERATION_ID, FEATURE_CODE, CREATED_DATE FROM AD_OPERATION WHERE OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setInt(1, mblOperationId);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
testMblOperation.setOperationId(resultSet.getInt(1));
testMblOperation.setFeatureCode(resultSet.getString(2));
testMblOperation.setCreatedDate(resultSet.getLong(3));
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileOperation has updated ");
Assert.assertEquals(TEST_MBL_OPR_UPDATED_FEATURE_CODE, testMblOperation.getFeatureCode(),
"MobileOperation feature code has updated ");
Assert.assertEquals(updatedDate, testMblOperation.getCreatedDate(),
"MobileOperation created-date has updated ");
}
@Test(dependsOnMethods = { "addMobileOperationTest", "getMobileOperationTest",
"updateMobileOperationTest" })
public void deleteMobileDeviceTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
boolean deleted = mblOperationDAO.deleteMobileOperation(mblOperationId);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT OPERATION_ID, FEATURE_CODE, CREATED_DATE FROM AD_OPERATION WHERE OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setInt(1, mblOperationId);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
deleted = false;
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(deleted, "MobileOperation has deleted ");
}
}

@ -1,237 +0,0 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* you may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.mobile.impl.dao;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.impl.MobileOperationDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dao.impl.MobileOperationPropertyDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperation;
import org.wso2.carbon.device.mgt.mobile.dto.MobileOperationProperty;
import org.wso2.carbon.device.mgt.mobile.impl.common.DBTypes;
import org.wso2.carbon.device.mgt.mobile.impl.common.TestDBConfiguration;
import org.wso2.carbon.device.mgt.mobile.impl.dao.util.MobileDatabaseUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
*
* Class for holding unit-tests related to MobileOperationPropertyDAO class.
*
*/
public class MobileOperationPropertyDAOTestSuite {
private static final Log log = LogFactory.getLog(MobileOperationPropertyDAOTestSuite.class);
public static final String TEST_MBL_OPR_FEATURE_CODE = "LOCK";
public static final long TEST_MBL_OPR_CREATED_DATE = new java.util.Date().getTime();
public static final String TEST_MBL_OPR_PROPERTY_SSID = "SSID";
public static final String TEST_MBL_OPR_PROPERTY_SSID_VALUE = "wso2";
public static final String TEST_MBL_OPR_PROPERTY_PWD = "PASSWORD";
public static final String TEST_MBL_OPR_PROPERTY_PWD_VALUE = "wso2";
public static final String TEST_MBL_OPR_PROPERTY_PWD_UPDATED_VALUE = "wso2mdm";
private int mblOperationId;
private TestDBConfiguration testDBConfiguration;
private MobileOperationPropertyDAOImpl mobileOperationPropertyDAO;
private MobileOperationDAOImpl mblOperationDAO;
@BeforeClass
@Parameters("dbType")
public void setUpDB(String dbTypeStr) throws Exception {
DBTypes dbType = DBTypes.valueOf(dbTypeStr);
testDBConfiguration = MobileDatabaseUtils.getTestDBConfiguration(dbType);
switch (dbType) {
case H2:
MobileDatabaseUtils.createH2DB(testDBConfiguration);
DataSource testDataSource = new org.apache.tomcat.jdbc.pool.DataSource();
PoolProperties properties = new PoolProperties();
properties.setUrl(testDBConfiguration.getConnectionURL());
properties.setDriverClassName(testDBConfiguration.getDriverClassName());
properties.setUsername(testDBConfiguration.getUsername());
properties.setPassword(testDBConfiguration.getPassword());
testDataSource.setPoolProperties(properties);
mobileOperationPropertyDAO = new MobileOperationPropertyDAOImpl(testDataSource);
mblOperationDAO = new MobileOperationDAOImpl(testDataSource);
default:
}
}
@Test
public void addMobileOperationPropertyTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileOperation mblOperation = new MobileOperation();
MobileOperationProperty operationProperty = new MobileOperationProperty();
List<MobileOperationProperty> properties = new ArrayList<MobileOperationProperty>();
//Add a new Operation to the database
MobileOperation testMblOperation = new MobileOperation();
mblOperation.setFeatureCode(TEST_MBL_OPR_FEATURE_CODE);
mblOperation.setCreatedDate(TEST_MBL_OPR_CREATED_DATE);
mblOperationId = mblOperationDAO.addMobileOperation(mblOperation);
//Add property1
operationProperty.setOperationId(mblOperationId);
operationProperty.setProperty(TEST_MBL_OPR_PROPERTY_SSID);
operationProperty.setValue(TEST_MBL_OPR_PROPERTY_SSID_VALUE);
boolean status1 = mobileOperationPropertyDAO.addMobileOperationProperty(operationProperty);
//add property2
operationProperty = new MobileOperationProperty();
operationProperty.setOperationId(mblOperationId);
operationProperty.setProperty(TEST_MBL_OPR_PROPERTY_PWD);
operationProperty.setValue(TEST_MBL_OPR_PROPERTY_PWD_VALUE);
boolean status2 = mobileOperationPropertyDAO.addMobileOperationProperty(operationProperty);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT OPERATION_ID, PROPERTY, VALUE FROM AD_OPERATION_PROPERTY WHERE OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setInt(1, mblOperationId);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
operationProperty = new MobileOperationProperty();
operationProperty.setOperationId(resultSet.getInt(1));
operationProperty.setProperty(resultSet.getString(2));
operationProperty.setValue(resultSet.getString(3));
properties.add(operationProperty);
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Operation Property data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status1, "MobileOperationProperty1 has added ");
Assert.assertTrue(status2, "MobileOperationProperty2 has added ");
Assert.assertTrue(properties.size() == 2, "MobileOperationProperties have retrieved ");
for (MobileOperationProperty mobileOperationProperty : properties) {
Assert.assertNotNull(mobileOperationProperty.getProperty(),
"MobileOperationProperty property has persisted ");
Assert.assertNotNull(mobileOperationProperty.getValue(),
"MobileOperationProperty value has persisted ");
}
}
@Test(dependsOnMethods = { "addMobileOperationPropertyTest" })
public void getMobileOperationPropertyTest()
throws MobileDeviceManagementDAOException {
MobileOperationProperty mobileOperationProperty = mobileOperationPropertyDAO
.getMobileOperationProperty(mblOperationId, TEST_MBL_OPR_PROPERTY_PWD);
Assert.assertEquals(mblOperationId, mobileOperationProperty.getOperationId(),
"MobileOperationProperty operation-id has retrieved ");
Assert.assertEquals(TEST_MBL_OPR_PROPERTY_PWD, mobileOperationProperty.getProperty(),
"MobileOperationProperty property has retrieved ");
Assert.assertEquals(TEST_MBL_OPR_PROPERTY_PWD_VALUE, mobileOperationProperty.getValue(),
"MobileOperationProperty property-value has retrieved ");
}
@Test(dependsOnMethods = { "addMobileOperationPropertyTest" })
public void getAllMobileOperationPropertiesOfOperationTest()
throws MobileDeviceManagementDAOException {
List<MobileOperationProperty> mobileOperationProperties = mobileOperationPropertyDAO
.getAllMobileOperationPropertiesOfOperation(mblOperationId);
Assert.assertTrue(mobileOperationProperties.size() == 2,
"MobileOperationProperties of operation has retrieved");
}
@Test(dependsOnMethods = { "addMobileOperationPropertyTest", "getMobileOperationPropertyTest",
"getAllMobileOperationPropertiesOfOperationTest" })
public void updateMobileOperationPropertyTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileOperationProperty mblOperationProperty = new MobileOperationProperty();
MobileOperationProperty testMblOperationProperty = new MobileOperationProperty();
mblOperationProperty.setOperationId(mblOperationId);
mblOperationProperty.setProperty(TEST_MBL_OPR_PROPERTY_PWD);
mblOperationProperty.setValue(TEST_MBL_OPR_PROPERTY_PWD_UPDATED_VALUE);
boolean status =
mobileOperationPropertyDAO.updateMobileOperationProperty(mblOperationProperty);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT OPERATION_ID, PROPERTY, VALUE FROM AD_OPERATION_PROPERTY WHERE" +
" OPERATION_ID = ? AND PROPERTY = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setInt(1, mblOperationId);
preparedStatement.setString(2, TEST_MBL_OPR_PROPERTY_PWD);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
testMblOperationProperty.setOperationId(resultSet.getInt(1));
testMblOperationProperty.setProperty(resultSet.getString(2));
testMblOperationProperty.setValue(resultSet.getString(3));
}
} catch (SQLException e) {
String msg = "Error in retrieving MobileOperationProperty data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileOperationProperty has updated ");
Assert.assertEquals(TEST_MBL_OPR_PROPERTY_PWD_UPDATED_VALUE,
testMblOperationProperty.getValue(),
"MobileOperationProperty value has updated ");
}
@Test(dependsOnMethods = { "addMobileOperationPropertyTest", "getMobileOperationPropertyTest",
"getAllMobileOperationPropertiesOfOperationTest",
"updateMobileOperationPropertyTest" })
public void deleteMobileOperationPropertiesOfOperationTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
boolean status =
mobileOperationPropertyDAO.deleteMobileOperationProperties(mblOperationId);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String selectDBQuery =
"SELECT OPERATION_ID, PROPERTY, VALUE FROM AD_OPERATION_PROPERTY WHERE" +
" OPERATION_ID = ?";
preparedStatement = conn.prepareStatement(selectDBQuery);
preparedStatement.setInt(1, mblOperationId);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
status = false;
}
} catch (SQLException e) {
String msg = "Error in retrieving MobileOperationProperty data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileOperationProperty has deleted ");
}
}

@ -23,12 +23,12 @@ CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
-- Table `AD_FEATURE` -- Table `AD_FEATURE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_FEATURE` ( CREATE TABLE IF NOT EXISTS `AD_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT , `ID` INT NOT NULL AUTO_INCREMENT ,
`CODE` VARCHAR(45) NOT NULL, `CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL , `NAME` VARCHAR(100) NULL ,
`DESCRIPTION` VARCHAR(200) NULL , `DESCRIPTION` VARCHAR(200) NULL ,
`DEVICE_TYPE` VARCHAR(50) NULL , `DEVICE_TYPE` VARCHAR(50) NULL ,
PRIMARY KEY (`FEATURE_ID`) ); PRIMARY KEY (`ID`) );
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `AD_OPERATION` -- Table `AD_OPERATION`
@ -39,40 +39,6 @@ CREATE TABLE IF NOT EXISTS `AD_OPERATION` (
`CREATED_DATE` BIGINT NULL , `CREATED_DATE` BIGINT NULL ,
PRIMARY KEY (`OPERATION_ID`)); PRIMARY KEY (`OPERATION_ID`));
-- -----------------------------------------------------
-- Table `AD_DEVICE_OPERATION_MAPPING`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE_OPERATION_MAPPING` (
`DEVICE_ID` VARCHAR(45) NOT NULL ,
`OPERATION_ID` INT NOT NULL ,
`SENT_DATE` BIGINT NULL ,
`RECEIVED_DATE` BIGINT NULL ,
`STATUS` VARCHAR(10) NOT NULL ,
PRIMARY KEY (`DEVICE_ID`, `OPERATION_ID`) ,
CONSTRAINT `fk_AD_DEVICE_OPERATION_AD_DEVICE`
FOREIGN KEY (`DEVICE_ID` )
REFERENCES `AD_DEVICE` (`DEVICE_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_AD_DEVICE_OPERATION_AD_OPERATION1`
FOREIGN KEY (`OPERATION_ID` )
REFERENCES `AD_OPERATION` (`OPERATION_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
-- -----------------------------------------------------
-- Table `AD_OPERATION_PROPERTY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_OPERATION_PROPERTY` (
`OPERATION_ID` INT NOT NULL ,
`PROPERTY` VARCHAR(45) NOT NULL ,
`VALUE` TEXT NULL ,
PRIMARY KEY (`OPERATION_ID`, `PROPERTY`) ,
CONSTRAINT `fk_AD_OPERATION_PROPERTY_AD_OPERATION1`
FOREIGN KEY (`OPERATION_ID` )
REFERENCES `AD_OPERATION` (`OPERATION_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `AD_FEATURE_PROPERTY` -- Table `AD_FEATURE_PROPERTY`
@ -83,6 +49,6 @@ CREATE TABLE IF NOT EXISTS `AD_FEATURE_PROPERTY` (
PRIMARY KEY (`PROPERTY`) , PRIMARY KEY (`PROPERTY`) ,
CONSTRAINT `fk_AD_FEATURE_PROPERTY_AD_FEATURE1` CONSTRAINT `fk_AD_FEATURE_PROPERTY_AD_FEATURE1`
FOREIGN KEY (`FEATURE_ID` ) FOREIGN KEY (`FEATURE_ID` )
REFERENCES `AD_FEATURE` (`FEATURE_ID` ) REFERENCES `AD_FEATURE` (`ID` )
ON DELETE NO ACTION ON DELETE NO ACTION
ON UPDATE NO ACTION); ON UPDATE NO ACTION);

@ -29,10 +29,7 @@
<parameter name="dbType" value="H2"/> <parameter name="dbType" value="H2"/>
<classes> <classes>
<class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileFeatureDAOTestSuite"/> <class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileFeatureDAOTestSuite"/>
<class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileOperationDAOTestSuite"/>
<class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileOperationPropertyDAOTestSuite"/>
<class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileFeaturePropertyDAOTestSuite"/> <class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileFeaturePropertyDAOTestSuite"/>
<class name="org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceOperationMappingDAOTestSuite"/>
</classes> </classes>
</test> </test>

@ -3,7 +3,7 @@
-- Table `AD_DEVICE` -- Table `AD_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE` ( CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`ANDROID_DEVICE_ID` VARCHAR(45) NOT NULL, `DEVICE_ID` VARCHAR(45) NOT NULL,
`GCM_TOKEN` VARCHAR(45) NULL DEFAULT NULL, `GCM_TOKEN` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL, `DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL, `IMEI` VARCHAR(45) NULL DEFAULT NULL,
@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`SERIAL` VARCHAR(45) NULL DEFAULT NULL, `SERIAL` VARCHAR(45) NULL DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) NULL DEFAULT NULL, `MAC_ADDRESS` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL, `DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`ANDROID_DEVICE_ID`)); PRIMARY KEY (`DEVICE_ID`));
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `AD_FEATURE` -- Table `AD_FEATURE`

@ -2,7 +2,7 @@
-- Table `AD_DEVICE` -- Table `AD_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE AD_DEVICE ( CREATE TABLE AD_DEVICE (
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL, DEVICE_ID VARCHAR(45) NOT NULL,
GCM_TOKEN VARCHAR(45) NULL DEFAULT NULL, GCM_TOKEN VARCHAR(45) NULL DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL, DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL, IMEI VARCHAR(45) NULL DEFAULT NULL,
@ -15,7 +15,7 @@ CREATE TABLE AD_DEVICE (
SERIAL VARCHAR(45) NULL DEFAULT NULL, SERIAL VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL, MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL, DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (ANDROID_DEVICE_ID)); PRIMARY KEY (DEVICE_ID));
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `AD_FEATURE` -- Table `AD_FEATURE`

@ -2,7 +2,7 @@
-- Table AD_DEVICE -- Table AD_DEVICE
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS AD_DEVICE ( CREATE TABLE IF NOT EXISTS AD_DEVICE (
ID VARCHAR(45) NOT NULL , DEVICE_ID VARCHAR(45) NOT NULL ,
DEVICE_INFO VARCHAR(500) NULL DEFAULT NULL, DEVICE_INFO VARCHAR(500) NULL DEFAULT NULL,
GCM_TOKEN VARCHAR(45) NULL DEFAULT NULL, GCM_TOKEN VARCHAR(45) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL, IMEI VARCHAR(45) NULL DEFAULT NULL,
@ -15,7 +15,7 @@ CREATE TABLE IF NOT EXISTS AD_DEVICE (
SERIAL VARCHAR(45) NULL DEFAULT NULL, SERIAL VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL, MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL, DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (ID) PRIMARY KEY (DEVICE_ID)
); );
-- ----------------------------------------------------- -- -----------------------------------------------------

@ -41,7 +41,7 @@ CREATE TABLE WIN_FEATURE_PROPERTY (
PRIMARY KEY (PROPERTY), PRIMARY KEY (PROPERTY),
CONSTRAINT fk_WIN_FEATURE_PROPERTY_WIN_FEATURE1 CONSTRAINT fk_WIN_FEATURE_PROPERTY_WIN_FEATURE1
FOREIGN KEY (FEATURE_ID) FOREIGN KEY (FEATURE_ID)
REFERENCES WIN_FEATURE (FEATURE_ID) REFERENCES WIN_FEATURE (ID)
ON DELETE NO ACTION ON DELETE NO ACTION
ON UPDATE NO ACTION); ON UPDATE NO ACTION);
/ /

Loading…
Cancel
Save