Kamidu Sachith 9 years ago
commit bbcfe309f9

@ -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;
}

@ -32,11 +32,20 @@ public interface MobileFeatureDAO {
* Adds a new MobileFeature to Mobile-Feature table. * Adds a new MobileFeature to Mobile-Feature table.
* *
* @param mobileFeature MobileFeature object that holds data related to the feature to be inserted. * @param mobileFeature MobileFeature object that holds data related to the feature to be inserted.
* @return The id of inserted MobileFeature. * @return boolean status of the operation.
* @throws MobileDeviceManagementDAOException * @throws MobileDeviceManagementDAOException
*/ */
boolean addFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException; boolean addFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException;
/**
* Adda a list of MobileFeatures to Mobile-Feature table.
*
* @param mobileFeatures List of MobileFeature objects.
* @return boolean status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean addFeatures(List<MobileFeature> mobileFeatures) throws MobileDeviceManagementDAOException;
/** /**
* Updates a MobileFeature in Mobile-Feature table. * Updates a MobileFeature in Mobile-Feature table.
* *

@ -1,94 +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.MobileFeatureProperty;
import java.util.List;
/**
* This class represents the key operations associated with persisting mobile feature property
* related information.
*/
public interface MobileFeaturePropertyDAO {
/**
* Add a new MobileFeatureProperty to MobileFeatureProperty table.
*
* @param mblFeatureProperty MobileFeatureProperty object that holds data related to the feature
* property to be inserted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean addMobileFeatureProperty(MobileFeatureProperty mblFeatureProperty)
throws MobileDeviceManagementDAOException;
/**
* Updates a MobileFeatureProperty in the MobileFeatureProperty table.
*
* @param mblFeatureProperty MobileFeatureProperty object that holds data has to be updated.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean updateMobileFeatureProperty(MobileFeatureProperty mblFeatureProperty)
throws MobileDeviceManagementDAOException;
/**
* Deletes a given MobileFeatureProperty from MobileFeatureProperty table.
*
* @param property Property of the MobileFeatureProperty to be deleted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean deleteMobileFeatureProperty(String property) throws MobileDeviceManagementDAOException;
/**
* Deletes MobileFeatureProperties of a given feature from MobileFeatureProperty table.
*
* @param mblFeatureId Feature-id of the MobileFeature corresponding properties should be deleted.
* @return The status of the operation.
* @throws MobileDeviceManagementDAOException
*/
boolean deleteMobileFeaturePropertiesOfFeature(Integer mblFeatureId)
throws MobileDeviceManagementDAOException;
/**
* Retrieves a given MobileFeatureProperty from MobileFeatureProperty table.
*
* @param property Property of the feature property to be retrieved.
* @return MobileFeatureProperty object that holds data of the feature property represented by
* property.
* @throws MobileDeviceManagementDAOException
*/
MobileFeatureProperty getMobileFeatureProperty(String property)
throws MobileDeviceManagementDAOException;
/**
* Retrieves a list of MobileFeatureProperties corresponds to a given feature id from
* MobileFeatureProperty table.
*
* @param mblFeatureId feature id of the MobileFeatureProperties to be retrieved.
* @return List of MobileFeatureProperty objects that holds data of the MobileFeatureProperties
* represented by featureId.
* @throws MobileDeviceManagementDAOException
*/
List<MobileFeatureProperty> getFeaturePropertiesOfFeature(Integer mblFeatureId)
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";
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 MBL_DEVICE_OPERATION";
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 MBL_DEVICE_OPERATION";
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 MBL_DEVICE_OPERATION";
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<MobileDeviceOperationMapping>();
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 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;
}
@Override
public List<MobileDeviceOperationMapping> getAllPendingOperationMappingsOfMobileDevice(
String mblDeviceId)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileDeviceOperationMapping mblDeviceOperation = null;
List<MobileDeviceOperationMapping> mblDeviceOperations =
new ArrayList<MobileDeviceOperationMapping>();
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";
@ -81,6 +79,11 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
return status; return status;
} }
@Override
public boolean addFeatures(List<MobileFeature> mobileFeatures) throws MobileDeviceManagementDAOException {
return false;
}
@Override @Override
public boolean updateFeature(MobileFeature mobileFeature) public boolean updateFeature(MobileFeature mobileFeature)
throws MobileDeviceManagementDAOException { throws MobileDeviceManagementDAOException {
@ -91,7 +94,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 +135,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 +157,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 +186,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 +199,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 +221,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 +234,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 +256,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 +282,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 +328,5 @@ public class MobileFeatureDAOImpl implements MobileFeatureDAO {
throw new MobileDeviceManagementDAOException(msg, e); throw new MobileDeviceManagementDAOException(msg, e);
} }
} }
} }

@ -1,250 +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.MobileFeaturePropertyDAO;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.util.MobileDeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.mobile.dto.MobileFeatureProperty;
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 MobileFeaturePropertyDAO.
*/
public class MobileFeaturePropertyDAOImpl implements MobileFeaturePropertyDAO {
private DataSource dataSource;
private static final Log log = LogFactory.getLog(MobileFeaturePropertyDAOImpl.class);
public MobileFeaturePropertyDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public boolean addMobileFeatureProperty(MobileFeatureProperty mblFeatureProperty)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String createDBQuery =
"INSERT INTO AD_FEATURE_PROPERTY(PROPERTY, FEATURE_ID) VALUES (?, ?)";
stmt = conn.prepareStatement(createDBQuery);
stmt.setString(1, mblFeatureProperty.getProperty());
stmt.setInt(2, mblFeatureProperty.getFeatureID());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Added MobileFeatureProperty " + mblFeatureProperty.getProperty() +
" to the MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while adding property id - '" +
mblFeatureProperty.getFeatureID() + "'";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean updateMobileFeatureProperty(MobileFeatureProperty mblFeatureProperty)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String updateDBQuery =
"UPDATE AD_FEATURE_PROPERTY SET FEATURE_ID = ? WHERE PROPERTY = ?";
stmt = conn.prepareStatement(updateDBQuery);
stmt.setInt(1, mblFeatureProperty.getFeatureID());
stmt.setString(2, mblFeatureProperty.getProperty());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Updated MobileFeatureProperty " + mblFeatureProperty.getProperty());
}
}
} catch (SQLException e) {
String msg = "Error occurred while updating the feature property with property - '" +
mblFeatureProperty.getProperty() + "'";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean deleteMobileFeatureProperty(String property)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String deleteDBQuery =
"DELETE FROM AD_FEATURE_PROPERTY WHERE PROPERTY = ?";
stmt = conn.prepareStatement(deleteDBQuery);
stmt.setString(1, property);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Deleted MobileFeatureProperty " + property + " from MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while deleting feature property with property - " +
property;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public boolean deleteMobileFeaturePropertiesOfFeature(Integer mblFeatureId)
throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String deleteDBQuery =
"DELETE FROM AD_FEATURE_PROPERTY WHERE FEATURE_ID = ?";
stmt = conn.prepareStatement(deleteDBQuery);
stmt.setInt(1, mblFeatureId);
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Deleted all MobileFeatureProperties of FeatureId " + mblFeatureId +
" from MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while deleting feature properties of feature - " +
mblFeatureId;
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return status;
}
@Override
public MobileFeatureProperty getMobileFeatureProperty(String property)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileFeatureProperty mobileFeatureProperty = null;
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT PROPERTY, FEATURE_ID FROM AD_FEATURE_PROPERTY WHERE PROPERTY = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, property);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
mobileFeatureProperty = new MobileFeatureProperty();
mobileFeatureProperty.setProperty(resultSet.getString(1));
mobileFeatureProperty.setFeatureID(resultSet.getInt(2));
if (log.isDebugEnabled()) {
log.debug("Fetched MobileFeatureProperty " + mobileFeatureProperty.getProperty() +
" from MDM database.");
}
}
} catch (SQLException e) {
String msg = "Error occurred while fetching property - '" +
property + "'";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return mobileFeatureProperty;
}
@Override
public List<MobileFeatureProperty> getFeaturePropertiesOfFeature(Integer mblFeatureId)
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileFeatureProperty mobileFeatureProperty;
List<MobileFeatureProperty> FeatureProperties = new ArrayList<MobileFeatureProperty>();
try {
conn = this.getConnection();
String selectDBQuery =
"SELECT PROPERTY, FEATURE_ID FROM AD_FEATURE_PROPERTY WHERE FEATURE_ID = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setInt(1, mblFeatureId);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
mobileFeatureProperty = new MobileFeatureProperty();
mobileFeatureProperty.setProperty(resultSet.getString(1));
mobileFeatureProperty.setFeatureID(resultSet.getInt(2));
FeatureProperties.add(mobileFeatureProperty);
}
if (log.isDebugEnabled()) {
log.debug("Fetched all MobileFeatureProperties of featureId " + mblFeatureId +
" from MDM database.");
}
return FeatureProperties;
} catch (SQLException e) {
String msg = "Error occurred while fetching all feature property.'";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
}
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,192 +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 {
public static final String COLUMN_OPERATION_ID = "OPERATION_ID";
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[] { COLUMN_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 MBL_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 MBL_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 MBL_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 MBL_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" +
" MBL_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 MBL_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<MobileOperationProperty>();
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;
@ -62,10 +62,13 @@ public class AndroidDeviceManager implements DeviceManager {
try { try {
licenseManager licenseManager
.addLicense(AndroidDeviceManagementService.DEVICE_TYPE_ANDROID, defaultLicense); .addLicense(AndroidDeviceManagementService.DEVICE_TYPE_ANDROID, defaultLicense);
featureManager.addSupportedFeaturesToDB();
} catch (LicenseManagementException e) { } catch (LicenseManagementException e) {
log.error("Error occurred while adding default license for Android devices", e); log.error("Error occurred while adding default license for Android devices", e);
} } catch (DeviceManagementException e) {
} log.error("Error occurred while adding supported device features for Android platform", e);
}
}
@Override @Override
public FeatureManager getFeatureManager() { public FeatureManager getFeatureManager() {

@ -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 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
public boolean addFeature(Feature feature) throws DeviceManagementException { public boolean addFeature(Feature feature) throws DeviceManagementException {
try { try {
AndroidDAOFactory.beginTransaction(); AndroidDAOFactory.beginTransaction();
MobileFeature mobileFeature = MobileDeviceManagementUtil.convertToMobileFeature(feature); MobileFeature mobileFeature = MobileDeviceManagementUtil.convertToMobileFeature(feature);
@ -63,11 +62,32 @@ public class AndroidFeatureManager implements FeatureManager {
} }
} }
@Override
public boolean addFeatures(List<Feature> features) throws DeviceManagementException {
List<MobileFeature> mobileFeatures = new ArrayList<MobileFeature>();
for (Feature feature : features) {
mobileFeatures.add(MobileDeviceManagementUtil.convertToMobileFeature(feature));
}
try {
AndroidDAOFactory.beginTransaction();
featureDAO.addFeatures(mobileFeatures);
AndroidDAOFactory.commitTransaction();
return true;
} catch (MobileDeviceManagementDAOException e) {
try {
AndroidDAOFactory.rollbackTransaction();
} catch (MobileDeviceManagementDAOException e1) {
log.warn("Error occurred while roll-backing the transaction", e);
}
throw new DeviceManagementException("Error occurred while adding the features", e);
}
}
@Override @Override
public Feature getFeature(String name) throws DeviceManagementException { public Feature getFeature(String name) throws DeviceManagementException {
try { try {
MobileFeature mobileFeature = featureDAO.getFeatureByCode(name); MobileFeature mobileFeature = featureDAO.getFeatureByCode(name);
Feature feature = MobileDeviceManagementUtil.convertToFeature(mobileFeature); Feature feature = MobileDeviceManagementUtil.convertToFeature(mobileFeature);
return feature; return feature;
} catch (MobileDeviceManagementDAOException e) { } catch (MobileDeviceManagementDAOException e) {
throw new DeviceManagementException("Error occurred while retrieving the feature", e); throw new DeviceManagementException("Error occurred while retrieving the feature", e);
@ -76,7 +96,6 @@ public class AndroidFeatureManager implements FeatureManager {
@Override @Override
public List<Feature> getFeatures() throws DeviceManagementException { public List<Feature> getFeatures() throws DeviceManagementException {
List<Feature> featureList = new ArrayList<Feature>(); List<Feature> featureList = new ArrayList<Feature>();
try { try {
List<MobileFeature> mobileFeatures = featureDAO.getAllFeatures(); List<MobileFeature> mobileFeatures = featureDAO.getAllFeatures();
@ -86,13 +105,13 @@ public class AndroidFeatureManager implements FeatureManager {
return featureList; return featureList;
} catch (MobileDeviceManagementDAOException e) { } catch (MobileDeviceManagementDAOException e) {
throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " +
"Android platform", e); "Android platform", e);
} }
} }
@Override @Override
public boolean removeFeature(String code) throws DeviceManagementException { public boolean removeFeature(String code) throws DeviceManagementException {
boolean status = false; boolean status;
try { try {
AndroidDAOFactory.beginTransaction(); AndroidDAOFactory.beginTransaction();
featureDAO.deleteFeatureByCode(code); featureDAO.deleteFeatureByCode(code);
@ -109,4 +128,118 @@ public class AndroidFeatureManager implements FeatureManager {
return status; return status;
} }
@Override
public boolean addSupportedFeaturesToDB() throws DeviceManagementException {
synchronized (this) {
List<Feature> supportedFeatures = getSupportedFeatures();
List<Feature> existingFeatures = this.getFeatures();
List<Feature> missingFeatures = MobileDeviceManagementUtil.
getMissingFeatures(supportedFeatures, existingFeatures);
if (missingFeatures.size() > 0) {
return this.addFeatures(missingFeatures);
}
return true;
}
}
//Get the supported feature list.
private static List<Feature> getSupportedFeatures() {
List<Feature> supportedFeatures = new ArrayList<Feature>();
Feature feature = new Feature();
feature.setCode("DEVICE_LOCK");
feature.setName("Device Lock");
feature.setDescription("Lock the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DEVICE_LOCATION");
feature.setName("Location");
feature.setDescription("Request coordinates of device location");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("WIFI");
feature.setName("wifi");
feature.setDescription("Setting up wifi configuration");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("CAMERA");
feature.setName("camera");
feature.setDescription("Enable or disable camera");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("EMAIL");
feature.setName("Email");
feature.setDescription("Configure email settings");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DEVICE_MUTE");
feature.setName("mute");
feature.setDescription("Enable mute in the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DEVICE_INFO");
feature.setName("Device info");
feature.setDescription("Request device information");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("ENTERPRISE_WIPE");
feature.setName("Enterprise Wipe");
feature.setDescription("Remove enterprise applications");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("CLEAR_PASSWORD");
feature.setName("Clear Password");
feature.setDescription("Clear current password");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("WIPE_DATA");
feature.setName("Wipe Data");
feature.setDescription("Factory reset the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("APPLICATION_LIST");
feature.setName("Application List");
feature.setDescription("Request list of current installed applications");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("CHANGE_LOCK_CODE");
feature.setName("Change Lock-code");
feature.setDescription("Change current lock code");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("INSTALL_APPLICATION");
feature.setName("Install App");
feature.setDescription("Install Enterprise or Market application");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("UNINSTALL_APPLICATION");
feature.setName("Uninstall App");
feature.setDescription("Uninstall application");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("BLACKLIST_APPLICATIONS");
feature.setName("Blacklist app");
feature.setDescription("Blacklist applications");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("ENCRYPT_STORAGE");
feature.setName("Encrypt storage");
feature.setDescription("Encrypt storage");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DEVICE_RING");
feature.setName("Ring");
feature.setDescription("Ring the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("PASSCODE_POLICY");
feature.setName("Password Policy");
feature.setDescription("Set passcode policy");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("NOTIFICATION");
feature.setName("Message");
feature.setDescription("Send message");
supportedFeatures.add(feature);
return supportedFeatures;
}
} }

@ -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);
@ -45,29 +44,10 @@ public class AndroidDAOFactory extends MobileDeviceManagementDAOFactory
return new AndroidDeviceDAOImpl(); return new AndroidDeviceDAOImpl();
} }
@Override public MobileFeatureDAO getMobileFeatureDAO() {
public MobileOperationDAO getMobileOperationDAO() {
return null;
}
@Override
public MobileOperationPropertyDAO getMobileOperationPropertyDAO() {
return null;
}
@Override
public MobileDeviceOperationMappingDAO getMobileDeviceOperationDAO() {
return null;
}
@Override public MobileFeatureDAO getMobileFeatureDao() {
return new AndroidFeatureDAOImpl(); return new AndroidFeatureDAOImpl();
} }
public MobileFeaturePropertyDAO getFeaturePropertyDAO() {
return null;
}
public static void beginTransaction() throws MobileDeviceManagementDAOException { public static void beginTransaction() throws MobileDeviceManagementDAOException {
try { try {
Connection conn = dataSource.getConnection(); Connection conn = dataSource.getConnection();
@ -136,4 +116,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;
@ -48,10 +46,9 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
@Override @Override
public boolean addFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException { public boolean addFeature(MobileFeature mobileFeature) throws 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 = "INSERT INTO AD_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)"; String sql = "INSERT INTO AD_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)";
@ -61,11 +58,37 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
stmt.setString(3, mobileFeature.getDescription()); stmt.setString(3, mobileFeature.getDescription());
stmt.executeUpdate(); stmt.executeUpdate();
status = true; status = true;
status = true;
} catch (SQLException e) { } catch (SQLException e) {
throw new AndroidFeatureManagementDAOException( throw new AndroidFeatureManagementDAOException(
"Error occurred while adding android feature '" + "Error occurred while adding android feature '" +
mobileFeature.getName() + "' into the metadata repository", e); mobileFeature.getName() + "' into the metadata repository", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return status;
}
@Override
public boolean addFeatures(List<MobileFeature> mobileFeatures) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
MobileFeature mobileFeature;
boolean status = false;
Connection conn;
try {
conn = AndroidDAOFactory.getConnection();
stmt = conn.prepareStatement("INSERT INTO AD_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)");
for (int i = 0; i < mobileFeatures.size(); i++) {
mobileFeature = mobileFeatures.get(i);
stmt.setString(1, mobileFeature.getCode());
stmt.setString(2, mobileFeature.getName());
stmt.setString(3, mobileFeature.getDescription());
stmt.addBatch();
}
stmt.executeBatch();
status = true;
} catch (SQLException e) {
throw new AndroidFeatureManagementDAOException(
"Error occurred while adding android features into the metadata repository", e);
} finally { } finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null); MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
} }
@ -75,7 +98,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 +135,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 +154,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 = ?";
@ -146,7 +168,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
} catch (SQLException e) { } catch (SQLException e) {
throw new AndroidFeatureManagementDAOException( throw new AndroidFeatureManagementDAOException(
"Error occurred while deleting android feature '" + "Error occurred while deleting android feature '" +
mblFeatureCode + "' from Android database.", e); mblFeatureCode + "' from Android database.", e);
} finally { } finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null); MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
} }
@ -154,11 +176,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 +210,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();
@ -217,7 +237,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
} catch (SQLException e) { } catch (SQLException e) {
throw new AndroidFeatureManagementDAOException( throw new AndroidFeatureManagementDAOException(
"Error occurred while retrieving android feature '" + "Error occurred while retrieving android feature '" +
mblFeatureCode + "' from the Android database.", e); mblFeatureCode + "' from the Android database.", e);
} finally { } finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
AndroidDAOFactory.closeConnection(); AndroidDAOFactory.closeConnection();
@ -232,12 +252,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();
String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE"; String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE";
@ -250,8 +268,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);
@ -259,10 +276,10 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO {
return features; return features;
} catch (SQLException e) { } catch (SQLException e) {
throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all " + throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all " +
"android features from the android database.", e); "android features from the android database.", e);
} finally { } finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
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);
@ -57,11 +57,16 @@ public class WindowsDeviceManager implements DeviceManager {
public WindowsDeviceManager() { public WindowsDeviceManager() {
this.daoFactory = new WindowsDAOFactory(); this.daoFactory = new WindowsDAOFactory();
this.licenseManager = new RegistryBasedLicenseManager(); this.licenseManager = new RegistryBasedLicenseManager();
License defaultLicense = WindowsPluginUtils.getDefaultLicense(); License defaultLicense = WindowsPluginUtils.getDefaultLicense();
try { try {
licenseManager.addLicense(WindowsDeviceManagementService.DEVICE_TYPE_WINDOWS, defaultLicense); licenseManager.addLicense(WindowsDeviceManagementService.DEVICE_TYPE_WINDOWS, defaultLicense);
featureManager.addSupportedFeaturesToDB();
} catch (LicenseManagementException e) { } catch (LicenseManagementException e) {
log.error("Error occurred while adding default license for Windows devices", e); log.error("Error occurred while adding default license for Windows devices", e);
} catch (DeviceManagementException e) {
log.error("Error occurred while adding supported device features for Windows platform", e);
} }
} }

@ -1,25 +1,23 @@
/* /*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
* *
* WSO2 Inc. licenses this file to you under the Apache License, * WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except * Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. * in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, * Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an * software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations * specific language governing permissions and limitations
* under the License. * under the License.
*
*/ */
package org.wso2.carbon.device.mgt.mobile.impl.windows; package org.wso2.carbon.device.mgt.mobile.impl.windows;
import org.apache.commons.logging.Log;
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;
@ -36,37 +34,58 @@ import java.util.List;
public class WindowsFeatureManager implements FeatureManager { public class WindowsFeatureManager implements FeatureManager {
private MobileFeatureDAO featureDAO; private MobileFeatureDAO featureDAO;
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);
featureDAO.addFeature(mobileFeature); featureDAO.addFeature(mobileFeature);
WindowsDAOFactory.commitTransaction(); WindowsDAOFactory.commitTransaction();
return true; return true;
} catch (MobileDeviceManagementDAOException e) { } catch (MobileDeviceManagementDAOException e) {
WindowsDAOFactory.rollbackTransaction(); WindowsDAOFactory.rollbackTransaction();
throw new DeviceManagementException("Error occurred while adding the feature", e); throw new DeviceManagementException("Error occurred while adding the feature", e);
} finally {
WindowsDAOFactory.closeConnection();
}
}
@Override
public boolean addFeatures(List<Feature> features) throws DeviceManagementException {
List<MobileFeature> mobileFeatures = new ArrayList<MobileFeature>();
for (Feature feature : features) {
mobileFeatures.add(MobileDeviceManagementUtil.convertToMobileFeature(feature));
}
try {
WindowsDAOFactory.beginTransaction();
featureDAO.addFeatures(mobileFeatures);
WindowsDAOFactory.commitTransaction();
return true;
} catch (MobileDeviceManagementDAOException e) {
WindowsDAOFactory.rollbackTransaction();
throw new DeviceManagementException("Error occurred while adding the features", e);
} finally {
WindowsDAOFactory.closeConnection();
} }
} }
@Override @Override
public Feature getFeature(String name) throws DeviceManagementException { public Feature getFeature(String name) throws DeviceManagementException {
try { try {
WindowsDAOFactory.openConnection();
MobileFeature mobileFeature = featureDAO.getFeatureByCode(name); MobileFeature mobileFeature = featureDAO.getFeatureByCode(name);
Feature feature = MobileDeviceManagementUtil.convertToFeature(mobileFeature); Feature feature = MobileDeviceManagementUtil.convertToFeature(mobileFeature);
return feature; return feature;
} catch (MobileDeviceManagementDAOException e) { } catch (MobileDeviceManagementDAOException e) {
throw new DeviceManagementException("Error occurred while retrieving the feature", e); throw new DeviceManagementException("Error occurred while retrieving the feature", e);
} finally {
WindowsDAOFactory.closeConnection();
} }
} }
@ -75,6 +94,7 @@ public class WindowsFeatureManager implements FeatureManager {
List<Feature> featureList = new ArrayList<Feature>(); List<Feature> featureList = new ArrayList<Feature>();
try { try {
WindowsDAOFactory.openConnection();
List<MobileFeature> mobileFeatures = featureDAO.getAllFeatures(); List<MobileFeature> mobileFeatures = featureDAO.getAllFeatures();
for (MobileFeature mobileFeature : mobileFeatures) { for (MobileFeature mobileFeature : mobileFeatures) {
featureList.add(MobileDeviceManagementUtil.convertToFeature(mobileFeature)); featureList.add(MobileDeviceManagementUtil.convertToFeature(mobileFeature));
@ -82,23 +102,95 @@ public class WindowsFeatureManager implements FeatureManager {
return featureList; return featureList;
} catch (MobileDeviceManagementDAOException e) { } catch (MobileDeviceManagementDAOException e) {
throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " +
"Android platform", e); "Windows platform", e);
} finally {
WindowsDAOFactory.closeConnection();
} }
} }
@Override @Override
public boolean removeFeature(String code) throws DeviceManagementException { public boolean removeFeature(String code) throws DeviceManagementException {
boolean status = false; boolean status;
try { try {
WindowsDAOFactory.beginTransaction(); WindowsDAOFactory.beginTransaction();
featureDAO.deleteFeatureByCode(code); featureDAO.deleteFeatureByCode(code);
WindowsDAOFactory.commitTransaction(); WindowsDAOFactory.commitTransaction();
status = true; status = true;
} catch (MobileDeviceManagementDAOException e) { } catch (MobileDeviceManagementDAOException e) {
WindowsDAOFactory.rollbackTransaction(); WindowsDAOFactory.rollbackTransaction();
throw new DeviceManagementException("Error occurred while removing the feature", e); throw new DeviceManagementException("Error occurred while removing the feature", e);
} finally {
WindowsDAOFactory.closeConnection();
} }
return status; return status;
} }
} @Override
public boolean addSupportedFeaturesToDB() throws DeviceManagementException {
synchronized (this) {
List<Feature> supportedFeatures = getSupportedFeatures();
List<Feature> existingFeatures = this.getFeatures();
List<Feature> missingFeatures = MobileDeviceManagementUtil.
getMissingFeatures(supportedFeatures, existingFeatures);
if (missingFeatures.size() > 0) {
return this.addFeatures(missingFeatures);
}
return true;
}
}
/**
* Get supported Windows features.
*
* @return Supported features.
*/
public static List<Feature> getSupportedFeatures() {
List<Feature> supportedFeatures = new ArrayList<Feature>();
Feature feature = new Feature();
feature.setCode("DEVICE_LOCK");
feature.setName("Device Lock");
feature.setDescription("Lock the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("CAMERA");
feature.setName("camera");
feature.setDescription("Enable or disable camera");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DEVICE_INFO");
feature.setName("Device info");
feature.setDescription("Request device information");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("WIPE_DATA");
feature.setName("Wipe Data");
feature.setDescription("Factory reset the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("ENCRYPT_STORAGE");
feature.setName("Encrypt storage");
feature.setDescription("Encrypt storage");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DEVICE_RING");
feature.setName("Ring");
feature.setDescription("Ring the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("PASSCODE_POLICY");
feature.setName("Password Policy");
feature.setDescription("Set passcode policy");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("DISENROLL");
feature.setName("DisEnroll");
feature.setDescription("DisEnroll the device");
supportedFeatures.add(feature);
feature = new Feature();
feature.setCode("LOCK_RESET");
feature.setName("LockReset");
feature.setDescription("Lock Reset device");
supportedFeatures.add(feature);
return supportedFeatures;
}
}

@ -21,19 +21,22 @@ package org.wso2.carbon.device.mgt.mobile.impl.windows.dao;
import org.apache.commons.logging.Log; 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.*; import org.wso2.carbon.device.mgt.mobile.dao.AbstractMobileDeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceDAO;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO;
import org.wso2.carbon.device.mgt.mobile.impl.windows.dao.impl.WindowsDeviceDAOImpl; import org.wso2.carbon.device.mgt.mobile.impl.windows.dao.impl.WindowsDeviceDAOImpl;
import org.wso2.carbon.device.mgt.mobile.impl.windows.dao.impl.WindowsFeatureDAOImpl;
import javax.sql.DataSource; 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,28 +48,8 @@ public class WindowsDAOFactory extends MobileDeviceManagementDAOFactory
} }
@Override @Override
public MobileOperationDAO getMobileOperationDAO() { public MobileFeatureDAO getMobileFeatureDAO() {
return null; return new WindowsFeatureDAOImpl();
}
@Override
public MobileOperationPropertyDAO getMobileOperationPropertyDAO() {
return null;
}
@Override
public MobileDeviceOperationMappingDAO getMobileDeviceOperationDAO() {
return null;
}
@Override
public MobileFeatureDAO getMobileFeatureDao() {
return null;
}
@Override
public MobileFeaturePropertyDAO getFeaturePropertyDAO() {
return null;
} }
public static void beginTransaction() throws MobileDeviceManagementDAOException { public static void beginTransaction() throws MobileDeviceManagementDAOException {

@ -0,0 +1,80 @@
/*
* 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.windows.dao;
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
/**
* Implement Exception class for Windows Device Features.
*/
public class WindowsFeatureManagementDAOException extends MobileDeviceManagementDAOException {
private String message;
private static final long serialVersionUID = 2021891706072918865L;
/**
* Constructs a new MobileDeviceManagementDAOException with the specified detail message and
* nested exception.
*
* @param message error message
* @param nestedException exception
*/
public WindowsFeatureManagementDAOException(String message, Exception nestedException) {
super(message, nestedException);
}
/**
* Constructs a new MobileDeviceManagementDAOException with the specified detail message
* and cause.
*
* @param message the detail message.
* @param cause the cause of this exception.
*/
public WindowsFeatureManagementDAOException(String message, Throwable cause) {
super(message, cause);
setErrorMessage(message);
}
/**
* Constructs a new MobileDeviceManagementDAOException with the specified detail message.
*
* @param message the detail message.
*/
public WindowsFeatureManagementDAOException(String message) {
super(message);
setErrorMessage(message);
}
/**
* Constructs a new MobileDeviceManagementDAOException with the specified and cause.
*
* @param cause the cause of this exception.
*/
public WindowsFeatureManagementDAOException(Throwable cause) {
super(cause);
}
public String getMessage() {
return message;
}
public void setErrorMessage(String errorMessage) {
this.message = errorMessage;
}
}

@ -15,7 +15,6 @@
* specific language governing permissions and limitations * specific language governing permissions and limitations
* under the License. * under the License.
*/ */
package org.wso2.carbon.device.mgt.mobile.impl.windows.dao.impl; package org.wso2.carbon.device.mgt.mobile.impl.windows.dao.impl;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -52,17 +51,17 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
try { try {
conn = WindowsDAOFactory.getConnection(); conn = WindowsDAOFactory.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT MOBILE_DEVICE_ID, CHANNEL_URI, DEVICE_INFO, IMEI, IMSI, " + "SELECT DEVICE_ID, CHANNEL_URI, DEVICE_INFO, IMEI, IMSI, " +
"OS_VERSION, DEVICE_MODEL, VENDOR, LATITUDE, LONGITUDE, SERIAL, MAC_ADDRESS," + "OS_VERSION, DEVICE_MODEL, VENDOR, LATITUDE, LONGITUDE, SERIAL, MAC_ADDRESS," +
" OS_VERSION, DEVICE_NAME " + " OS_VERSION, DEVICE_NAME " +
"FROM WINDOWS_DEVICE WHERE MOBILE_DEVICE_ID = ?"; "FROM WIN_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();
while (rs.next()) { while (rs.next()) {
mobileDevice = new MobileDevice(); mobileDevice = new MobileDevice();
mobileDevice.setMobileDeviceId(rs.getString(WindowsPluginConstants.MOBILE_DEVICE_ID)); mobileDevice.setMobileDeviceId(rs.getString(WindowsPluginConstants.DEVICE_ID));
mobileDevice.setImei(rs.getString(WindowsPluginConstants.IMEI)); mobileDevice.setImei(rs.getString(WindowsPluginConstants.IMEI));
mobileDevice.setImsi(rs.getString(WindowsPluginConstants.IMSI)); mobileDevice.setImsi(rs.getString(WindowsPluginConstants.IMSI));
mobileDevice.setModel(rs.getString(WindowsPluginConstants.DEVICE_MODEL)); mobileDevice.setModel(rs.getString(WindowsPluginConstants.DEVICE_MODEL));
@ -72,7 +71,7 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
mobileDevice.setSerial(rs.getString(WindowsPluginConstants.SERIAL)); mobileDevice.setSerial(rs.getString(WindowsPluginConstants.SERIAL));
mobileDevice.setOsVersion(rs.getString(WindowsPluginConstants.LATITUDE)); mobileDevice.setOsVersion(rs.getString(WindowsPluginConstants.LATITUDE));
Map<String, String> propertyMap = new HashMap<String, String>(); Map<String, String> propertyMap = new HashMap<>();
propertyMap.put(WindowsPluginConstants.CHANNEL_URI, rs.getString(WindowsPluginConstants.CHANNEL_URI)); propertyMap.put(WindowsPluginConstants.CHANNEL_URI, rs.getString(WindowsPluginConstants.CHANNEL_URI));
propertyMap.put(WindowsPluginConstants.DEVICE_INFO, rs.getString(WindowsPluginConstants.DEVICE_INFO)); propertyMap.put(WindowsPluginConstants.DEVICE_INFO, rs.getString(WindowsPluginConstants.DEVICE_INFO));
propertyMap.put(WindowsPluginConstants.MAC_ADDRESS, rs.getString(WindowsPluginConstants.MAC_ADDRESS)); propertyMap.put(WindowsPluginConstants.MAC_ADDRESS, rs.getString(WindowsPluginConstants.MAC_ADDRESS));
@ -99,7 +98,7 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
try { try {
conn = WindowsDAOFactory.getConnection(); conn = WindowsDAOFactory.getConnection();
String createDBQuery = String createDBQuery =
"INSERT INTO WINDOWS_DEVICE(MOBILE_DEVICE_ID, CHANNEL_URI, DEVICE_INFO, IMEI, " + "INSERT INTO WIN_DEVICE(DEVICE_ID, CHANNEL_URI, DEVICE_INFO, IMEI, " +
"IMSI, OS_VERSION, DEVICE_MODEL, VENDOR, LATITUDE, LONGITUDE, SERIAL, " + "IMSI, OS_VERSION, DEVICE_MODEL, VENDOR, LATITUDE, LONGITUDE, SERIAL, " +
"MAC_ADDRESS, DEVICE_NAME) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; "MAC_ADDRESS, DEVICE_NAME) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
@ -139,14 +138,14 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
@Override @Override
public boolean updateMobileDevice(MobileDevice mobileDevice) throws MobileDeviceManagementDAOException { public boolean updateMobileDevice(MobileDevice mobileDevice) throws MobileDeviceManagementDAOException {
boolean status = false; boolean status = false;
Connection conn = null; Connection conn;
PreparedStatement stmt = null; PreparedStatement stmt = null;
try { try {
conn = WindowsDAOFactory.getConnection(); conn = WindowsDAOFactory.getConnection();
String updateDBQuery = String updateDBQuery =
"UPDATE WINDOWS_DEVICE SET CHANNEL_URI = ?, DEVICE_INFO = ?, IMEI = ?, IMSI = ?, " + "UPDATE WIN_DEVICE SET CHANNEL_URI = ?, DEVICE_INFO = ?, IMEI = ?, IMSI = ?, " +
"OS_VERSION = ?, DEVICE_MODEL = ?, VENDOR = ?, LATITUDE = ?, LONGITUDE = ?, " + "OS_VERSION = ?, DEVICE_MODEL = ?, VENDOR = ?, LATITUDE = ?, LONGITUDE = ?, " +
"SERIAL = ?, MAC_ADDRESS = ?, DEVICE_NAME = ? WHERE MOBILE_DEVICE_ID = ?"; "SERIAL = ?, MAC_ADDRESS = ?, DEVICE_NAME = ? WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(updateDBQuery); stmt = conn.prepareStatement(updateDBQuery);
@ -188,7 +187,7 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
PreparedStatement stmt = null; PreparedStatement stmt = null;
try { try {
conn = WindowsDAOFactory.getConnection(); conn = WindowsDAOFactory.getConnection();
String deleteDBQuery = "DELETE FROM WINDOWS_DEVICE WHERE MOBILE_DEVICE_ID = ?"; String deleteDBQuery = "DELETE FROM WIN_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();
@ -214,20 +213,20 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
MobileDevice mobileDevice; MobileDevice mobileDevice;
List<MobileDevice> mobileDevices = new ArrayList<MobileDevice>(); List<MobileDevice> mobileDevices = new ArrayList<>();
try { try {
conn = WindowsDAOFactory.getConnection(); conn = WindowsDAOFactory.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT MOBILE_DEVICE_ID, CHANNEL_URI, DEVICE_INFO, IMEI, IMSI, " + "SELECT DEVICE_ID, CHANNEL_URI, DEVICE_INFO, IMEI, IMSI, " +
"OS_VERSION, DEVICE_MODEL, VENDOR, LATITUDE, LONGITUDE, SERIAL, MAC_ADDRESS," + "OS_VERSION, DEVICE_MODEL, VENDOR, LATITUDE, LONGITUDE, SERIAL, MAC_ADDRESS," +
" OS_VERSION, DEVICE_NAME " + " OS_VERSION, DEVICE_NAME " +
"FROM WINDOWS_DEVICE"; "FROM WIN_DEVICE";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
rs = stmt.executeQuery(); rs = stmt.executeQuery();
while (rs.next()) { while (rs.next()) {
mobileDevice = new MobileDevice(); mobileDevice = new MobileDevice();
mobileDevice.setMobileDeviceId(rs.getString(WindowsPluginConstants.MOBILE_DEVICE_ID)); mobileDevice.setMobileDeviceId(rs.getString(WindowsPluginConstants.DEVICE_ID));
mobileDevice.setVendor(rs.getString(WindowsPluginConstants.IMEI)); mobileDevice.setVendor(rs.getString(WindowsPluginConstants.IMEI));
mobileDevice.setLatitude(rs.getString(WindowsPluginConstants.IMSI)); mobileDevice.setLatitude(rs.getString(WindowsPluginConstants.IMSI));
mobileDevice.setLongitude(rs.getString(WindowsPluginConstants.OS_VERSION)); mobileDevice.setLongitude(rs.getString(WindowsPluginConstants.OS_VERSION));
@ -235,7 +234,7 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
mobileDevice.setImsi(rs.getString(WindowsPluginConstants.VENDOR)); mobileDevice.setImsi(rs.getString(WindowsPluginConstants.VENDOR));
mobileDevice.setOsVersion(rs.getString(WindowsPluginConstants.LATITUDE)); mobileDevice.setOsVersion(rs.getString(WindowsPluginConstants.LATITUDE));
Map<String, String> propertyMap = new HashMap<String, String>(); Map<String, String> propertyMap = new HashMap<>();
propertyMap.put(WindowsPluginConstants.CHANNEL_URI, rs.getString(WindowsPluginConstants.CHANNEL_URI)); propertyMap.put(WindowsPluginConstants.CHANNEL_URI, rs.getString(WindowsPluginConstants.CHANNEL_URI));
propertyMap.put(WindowsPluginConstants.DEVICE_INFO, rs.getString(WindowsPluginConstants.DEVICE_INFO)); propertyMap.put(WindowsPluginConstants.DEVICE_INFO, rs.getString(WindowsPluginConstants.DEVICE_INFO));
propertyMap.put(WindowsPluginConstants.DEVICE_NAME, rs.getString(WindowsPluginConstants.DEVICE_NAME)); propertyMap.put(WindowsPluginConstants.DEVICE_NAME, rs.getString(WindowsPluginConstants.DEVICE_NAME));
@ -252,4 +251,5 @@ public class WindowsDeviceDAOImpl implements MobileDeviceDAO {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
} }
} }
} }

@ -0,0 +1,272 @@
/*
* 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.windows.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.MobileFeatureDAO;
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.impl.windows.dao.WindowsDAOFactory;
import org.wso2.carbon.device.mgt.mobile.impl.windows.dao.WindowsFeatureManagementDAOException;
import org.wso2.carbon.device.mgt.mobile.impl.windows.util.WindowsPluginConstants;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* Implement MobileFeatureDAO for Windows devices.
*/
public class WindowsFeatureDAOImpl implements MobileFeatureDAO {
private static final Log log = LogFactory.getLog(WindowsFeatureDAOImpl.class);
public WindowsFeatureDAOImpl() {
}
@Override
public boolean addFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
boolean status;
Connection conn;
try {
conn = WindowsDAOFactory.getConnection();
String sql = "INSERT INTO WIN_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)";
stmt = conn.prepareStatement(sql);
stmt.setString(1, mobileFeature.getCode());
stmt.setString(2, mobileFeature.getName());
stmt.setString(3, mobileFeature.getDescription());
stmt.executeUpdate();
status = true;
status = true;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException(
"Error occurred while adding windows feature '" +
mobileFeature.getName() + "' into the metadata repository", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return status;
}
@Override
public boolean addFeatures(List<MobileFeature> mobileFeatures) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
boolean status = false;
Connection conn;
try {
conn = WindowsDAOFactory.getConnection();
stmt = conn.prepareStatement("INSERT INTO WIN_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)");
for (MobileFeature mobileFeature : mobileFeatures) {
stmt.setString(1, mobileFeature.getCode());
stmt.setString(2, mobileFeature.getName());
stmt.setString(3, mobileFeature.getDescription());
stmt.addBatch();
}
stmt.executeBatch();
status = true;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException(
"Error occurred while adding windows features into the metadata repository", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return status;
}
@Override
public boolean updateFeature(MobileFeature mobileFeature) throws MobileDeviceManagementDAOException {
boolean status = false;
Connection conn;
PreparedStatement stmt = null;
try {
conn = WindowsDAOFactory.getConnection();
String updateDBQuery =
"UPDATE WIN_FEATURE SET NAME = ?, DESCRIPTION = ?" +
"WHERE CODE = ?";
stmt = conn.prepareStatement(updateDBQuery);
stmt.setString(1, mobileFeature.getName());
stmt.setString(2, mobileFeature.getDescription());
stmt.setString(3, mobileFeature.getCode());
int rows = stmt.executeUpdate();
if (rows > 0) {
status = true;
if (log.isDebugEnabled()) {
log.debug("Windows Feature " + mobileFeature.getCode() + " data has been " +
"modified.");
}
}
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException("Error occurred while updating the Windows Feature '" +
mobileFeature.getCode() + "' to the Windows db.", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return status;
}
@Override
public boolean deleteFeatureById(int mblFeatureId) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
boolean status = false;
Connection conn;
try {
conn = WindowsDAOFactory.getConnection();
String sql = "DELETE FROM WIN_FEATURE WHERE FEATURE_ID = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, mblFeatureId);
stmt.execute();
status = true;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException(
"Error occurred while deleting windows feature '" +
mblFeatureId + "' from Windows database.", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return status;
}
@Override
public boolean deleteFeatureByCode(String mblFeatureCode) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
boolean status = false;
Connection conn;
try {
conn = WindowsDAOFactory.getConnection();
String sql = "DELETE FROM WIN_FEATURE WHERE CODE = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, mblFeatureCode);
stmt.execute();
status = true;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException(
"Error occurred while deleting windows feature '" +
mblFeatureCode + "' from Windows database.", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, null);
}
return status;
}
@Override
public MobileFeature getFeatureById(int mblFeatureId) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
ResultSet rs = null;
Connection conn;
try {
conn = WindowsDAOFactory.getConnection();
String sql = "SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM WIN_FEATURE WHERE ID = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, mblFeatureId);
rs = stmt.executeQuery();
MobileFeature mobileFeature = null;
if (rs.next()) {
mobileFeature = new MobileFeature();
mobileFeature.setId(rs.getInt(WindowsPluginConstants.WINDOWS_FEATURE_ID));
mobileFeature.setCode(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_CODE));
mobileFeature.setName(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_NAME));
mobileFeature.setDescription(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_DESCRIPTION));
mobileFeature.setDeviceType(
DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_WINDOWS);
}
return mobileFeature;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException(
"Error occurred while retrieving windows feature '" +
mblFeatureId + "' from the Windows database.", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
}
@Override
public MobileFeature getFeatureByCode(String mblFeatureCode) throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
ResultSet rs = null;
Connection conn;
try {
conn = WindowsDAOFactory.getConnection();
String sql = "SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM WIN_FEATURE WHERE CODE = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, mblFeatureCode);
rs = stmt.executeQuery();
MobileFeature mobileFeature = null;
if (rs.next()) {
mobileFeature = new MobileFeature();
mobileFeature.setId(rs.getInt(WindowsPluginConstants.WINDOWS_FEATURE_ID));
mobileFeature.setCode(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_CODE));
mobileFeature.setName(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_NAME));
mobileFeature.setDescription(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_DESCRIPTION));
mobileFeature.setDeviceType(
DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_WINDOWS);
}
return mobileFeature;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException(
"Error occurred while retrieving windows feature '" +
mblFeatureCode + "' from the Windows database.", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
}
@Override
public List<MobileFeature> getFeatureByDeviceType(String deviceType) throws MobileDeviceManagementDAOException {
return this.getAllFeatures();
}
@Override
public List<MobileFeature> getAllFeatures() throws MobileDeviceManagementDAOException {
PreparedStatement stmt = null;
ResultSet rs = null;
Connection conn;
List<MobileFeature> features = new ArrayList<>();
try {
conn = WindowsDAOFactory.getConnection();
String sql = "SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM WIN_FEATURE";
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
MobileFeature mobileFeature;
while (rs.next()) {
mobileFeature = new MobileFeature();
mobileFeature.setId(rs.getInt(WindowsPluginConstants.WINDOWS_FEATURE_ID));
mobileFeature.setCode(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_CODE));
mobileFeature.setName(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_NAME));
mobileFeature.setDescription(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_DESCRIPTION));
mobileFeature.setDeviceType(
DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_WINDOWS);
features.add(mobileFeature);
}
return features;
} catch (SQLException e) {
throw new WindowsFeatureManagementDAOException("Error occurred while retrieving all " +
"windows features from the Windows database.", e);
} finally {
MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
}
}

@ -24,7 +24,7 @@ package org.wso2.carbon.device.mgt.mobile.impl.windows.util;
public class WindowsPluginConstants { public class WindowsPluginConstants {
//properties related to database table WINDOWS_DEVICE //properties related to database table WINDOWS_DEVICE
public static final String MOBILE_DEVICE_ID = "MOBILE_DEVICE_ID"; public static final String DEVICE_ID = "DEVICE_ID";
public static final String CHANNEL_URI = "CHANNEL_URI"; public static final String CHANNEL_URI = "CHANNEL_URI";
public static final String DEVICE_INFO = "DEVICE_INFO"; public static final String DEVICE_INFO = "DEVICE_INFO";
public static final String IMEI = "IMEI"; public static final String IMEI = "IMEI";
@ -38,4 +38,11 @@ public class WindowsPluginConstants {
public static final String MAC_ADDRESS = "MAC_ADDRESS"; public static final String MAC_ADDRESS = "MAC_ADDRESS";
public static final String DEVICE_NAME = "DEVICE_NAME"; public static final String DEVICE_NAME = "DEVICE_NAME";
//Properties related to WIN_FEATURE table
public static final String WINDOWS_FEATURE_ID = "FEATURE_ID";
public static final String WINDOWS_FEATURE_CODE = "CODE";
public static final String WINDOWS_FEATURE_NAME = "NAME";
public static final String WINDOWS_FEATURE_DESCRIPTION = "DESCRIPTION";
} }

@ -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) {

@ -45,21 +45,18 @@ public final class MobileDeviceManagementSchemaInitializer extends DatabaseCreat
return pluginType; return pluginType;
} }
public void setPluginType(String pluginType) {
this.pluginType = pluginType;
}
public MobileDeviceManagementSchemaInitializer(DataSource dataSource, String pType) { public MobileDeviceManagementSchemaInitializer(DataSource dataSource, String pType) {
super(dataSource); super(dataSource);
this.pluginType = pType; this.pluginType = pType;
} }
protected String getDbScriptLocation(String databaseType) { protected String getDbScriptLocation(String databaseType) {
String scriptName = databaseType + "_" + getPluginType() + ".sql"; String scriptName = databaseType + ".sql";
String scriptLocation = setupSQLScriptBaseLocation + this.getPluginType() + File.separator + scriptName;
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Loading database script from :" + scriptName); log.debug("Loading database script from :" + scriptLocation);
} }
return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName; return scriptLocation;
} }
} }

@ -298,4 +298,19 @@ public class MobileDeviceManagementUtil {
e.getMessage(), e); e.getMessage(), e);
} }
} }
public static List<Feature> getMissingFeatures(List<Feature> supportedFeatures, List<Feature> existingFeatures) {
HashMap<String,Feature> featureHashMap = new HashMap();
for (Feature feature: existingFeatures) {
featureHashMap.put(feature.getCode(),feature);
}
List<Feature> missingFeatures = new ArrayList<Feature>();
for (Feature supportedFeature : supportedFeatures) {
if (featureHashMap.get(supportedFeature.getCode()) != null) {
continue;
}
missingFeatures.add(supportedFeature);
}
return missingFeatures;
}
} }

@ -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 ");
}
}

@ -1,260 +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.MobileFeatureDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dto.MobileFeature;
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.List;
/**
*
* Class for holding unit-tests related to MobileFeatureDAO class.
*
*/
public class MobileFeatureDAOTestSuite {
private static final Log log = LogFactory.getLog(MobileFeatureDAOTestSuite.class);
public static final String MBL_FEATURE_NAME = "Camera";
private static final String MBL_FEATURE_CODE = "500A";
public static final String MBL_FEATURE_DESCRIPTION = "Camera enable or disable";
public static final String MBL_FEATURE_DEVICE_TYPE = "Android";
public static final String MBL_FEATURE_UPDATED_CODE = "501B";
private TestDBConfiguration testDBConfiguration;
private MobileFeatureDAOImpl mblFeatureDAO;
private int mblFeatureId;
@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);
mblFeatureDAO = new MobileFeatureDAOImpl(testDataSource);
default:
}
}
@Test
public void addMobileFeatureTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileFeature mobileFeature = new MobileFeature();
MobileFeature testMblFeature = new MobileFeature();
mobileFeature.setCode(MBL_FEATURE_CODE);
mobileFeature.setDescription(MBL_FEATURE_DESCRIPTION);
mobileFeature.setName(MBL_FEATURE_NAME);
mobileFeature.setDeviceType(MBL_FEATURE_DEVICE_TYPE);
mblFeatureDAO.addFeature(mobileFeature);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE WHERE CODE = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, MBL_FEATURE_CODE);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
testMblFeature.setId(resultSet.getInt(1));
testMblFeature.setCode(resultSet.getString(2));
testMblFeature.setName(resultSet.getString(3));
testMblFeature.setDescription(resultSet.getString(4));
testMblFeature.setDeviceType(resultSet.getString(5));
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Feature data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
mblFeatureId = testMblFeature.getId();
Assert.assertTrue(mblFeatureId > 0, "MobileFeature has added ");
Assert.assertEquals(MBL_FEATURE_CODE, testMblFeature.getCode(),
"MobileFeature code has persisted ");
Assert.assertEquals(MBL_FEATURE_NAME, testMblFeature.getName(),
"MobileFeature name has persisted ");
Assert.assertEquals(MBL_FEATURE_DESCRIPTION, testMblFeature.getDescription(),
"MobileFeature description has persisted ");
Assert.assertEquals(MBL_FEATURE_DEVICE_TYPE, testMblFeature.getDeviceType(),
"MobileFeature device-type has persisted ");
}
@Test(dependsOnMethods = { "addMobileFeatureTest" })
public void getMobileFeatureByCodeTest()
throws MobileDeviceManagementDAOException {
MobileFeature mobileFeature = mblFeatureDAO.getFeatureByCode(MBL_FEATURE_CODE);
Assert.assertEquals(MBL_FEATURE_CODE, mobileFeature.getCode(),
"MobileFeature code has retrieved ");
Assert.assertEquals(MBL_FEATURE_NAME, mobileFeature.getName(),
"MobileFeature name has retrieved ");
Assert.assertEquals(MBL_FEATURE_DESCRIPTION, mobileFeature.getDescription(),
"MobileFeature description has retrieved ");
}
@Test(dependsOnMethods = { "addMobileFeatureTest" })
public void getMobileFeatureByIdTest()
throws MobileDeviceManagementDAOException {
MobileFeature mobileFeature = mblFeatureDAO.getFeatureById(mblFeatureId);
Assert.assertEquals(MBL_FEATURE_CODE, mobileFeature.getCode(),
"MobileFeature code has retrieved ");
Assert.assertEquals(MBL_FEATURE_NAME, mobileFeature.getName(),
"MobileFeature name has retrieved ");
Assert.assertEquals(MBL_FEATURE_DESCRIPTION, mobileFeature.getDescription(),
"MobileFeature description has retrieved ");
}
@Test(dependsOnMethods = { "addMobileFeatureTest" })
public void getAllMobileFeaturesTest()
throws MobileDeviceManagementDAOException {
List<MobileFeature> mobileFeatures = mblFeatureDAO.getAllFeatures();
Assert.assertNotNull(mobileFeatures, "MobileFeature list is not null");
Assert.assertTrue(mobileFeatures.size() > 0, "MobileFeature list has 1 MobileFeature");
}
@Test(dependsOnMethods = { "addMobileFeatureTest", "getMobileFeatureByCodeTest",
"getMobileFeatureByIdTest", "getAllMobileFeaturesTest" })
public void updateMobileFeatureTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
MobileFeature mobileFeature = new MobileFeature();
MobileFeature testMblFeature = new MobileFeature();
mobileFeature.setCode(MBL_FEATURE_UPDATED_CODE);
mobileFeature.setDescription(MBL_FEATURE_DESCRIPTION);
mobileFeature.setName(MBL_FEATURE_NAME);
mobileFeature.setId(mblFeatureId);
boolean updated = mblFeatureDAO.updateFeature(mobileFeature);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query =
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE CODE = ?";
stmt = conn.prepareStatement(query);
stmt.setString(1, MBL_FEATURE_UPDATED_CODE);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
testMblFeature.setId(resultSet.getInt(1));
testMblFeature.setCode(resultSet.getString(2));
testMblFeature.setName(resultSet.getString(3));
testMblFeature.setDescription(resultSet.getString(4));
}
} catch (SQLException e) {
String msg = "Error in updating Mobile Feature data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, stmt, null);
}
Assert.assertTrue(updated, "MobileFeature has updated");
Assert.assertEquals(MBL_FEATURE_UPDATED_CODE, testMblFeature.getCode(),
"MobileFeature data has updated ");
}
@Test(dependsOnMethods = { "addMobileFeatureTest", "getMobileFeatureByCodeTest",
"getMobileFeatureByIdTest", "getAllMobileFeaturesTest",
"updateMobileFeatureTest" })
public void deleteMobileFeatureByIdTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
boolean status = mblFeatureDAO.deleteFeatureById(mblFeatureId);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query = "SELECT FEATURE_ID, CODE FROM AD_FEATURE WHERE FEATURE_ID = ?";
stmt = conn.prepareStatement(query);
stmt.setInt(1, mblFeatureId);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
status = false;
}
} catch (SQLException e) {
String msg = "Error in deleting Mobile Feature data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, stmt, null);
}
Assert.assertTrue(status, "MobileFeature has deleted ");
}
@Test(dependsOnMethods = { "addMobileFeatureTest", "getMobileFeatureByCodeTest",
"getMobileFeatureByIdTest", "getAllMobileFeaturesTest",
"updateMobileFeatureTest", "deleteMobileFeatureByIdTest" })
public void deleteMobileFeatureByCodeTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
MobileFeature mobileFeature = new MobileFeature();
mobileFeature.setCode(MBL_FEATURE_CODE);
mobileFeature.setDescription(MBL_FEATURE_DESCRIPTION);
mobileFeature.setName(MBL_FEATURE_NAME);
mobileFeature.setDeviceType(MBL_FEATURE_DEVICE_TYPE);
mblFeatureDAO.addFeature(mobileFeature);
boolean status = mblFeatureDAO.deleteFeatureByCode(MBL_FEATURE_CODE);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query = "SELECT FEATURE_ID, CODE FROM AD_FEATURE WHERE CODE = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, MBL_FEATURE_CODE);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
status = false;
}
} catch (SQLException e) {
String msg = "Error in deleting Mobile Feature data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status, "MobileFeature has deleted ");
}
}

@ -1,241 +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.MobileFeatureDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dao.impl.MobileFeaturePropertyDAOImpl;
import org.wso2.carbon.device.mgt.mobile.dto.MobileFeature;
import org.wso2.carbon.device.mgt.mobile.dto.MobileFeatureProperty;
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 MobileFeaturePropertyDAO class.
*
*/
public class MobileFeaturePropertyDAOTestSuite {
private static final Log log = LogFactory.getLog(MobileFeaturePropertyDAOTestSuite.class);
public static final String MBL_FEATURE_NAME = "WIFI";
private static final String MBL_FEATURE_CODE = "500A";
public static final String MBL_FEATURE_DESCRIPTION = "Wifi config";
public static final String MBL_FEATURE_DEVICE_TYPE = "Android";
public static final String MBL_FEATURE_PROP_1 = "SSID";
public static final String MBL_FEATURE_PROP_2 = "PASSWORD";
private TestDBConfiguration testDBConfiguration;
private MobileFeatureDAOImpl mblFeatureDAO;
private MobileFeaturePropertyDAOImpl mobileFeaturePropertyDAO;
private int mblFeatureId;
@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);
mblFeatureDAO = new MobileFeatureDAOImpl(testDataSource);
mobileFeaturePropertyDAO = new MobileFeaturePropertyDAOImpl(testDataSource);
default:
}
}
@Test
public void addMobileFeaturePropertyTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
List<MobileFeatureProperty> propertyList = new ArrayList<MobileFeatureProperty>();
//Add a new MobileFeature to the database
MobileFeature mobileFeature = new MobileFeature();
mobileFeature.setCode(MBL_FEATURE_CODE);
mobileFeature.setDescription(MBL_FEATURE_DESCRIPTION);
mobileFeature.setName(MBL_FEATURE_NAME);
mobileFeature.setDeviceType(MBL_FEATURE_DEVICE_TYPE);
mblFeatureDAO.addFeature(mobileFeature);
MobileFeature persistMblFeature = mblFeatureDAO.getFeatureByCode(MBL_FEATURE_CODE);
mblFeatureId = persistMblFeature.getId();
//Add 1st property to the feature
MobileFeatureProperty mobileFeatureProperty = new MobileFeatureProperty();
mobileFeatureProperty.setFeatureID(mblFeatureId);
mobileFeatureProperty.setProperty(MBL_FEATURE_PROP_1);
boolean status1 = mobileFeaturePropertyDAO.addMobileFeatureProperty(mobileFeatureProperty);
//Add 2nd property to the feature
mobileFeatureProperty.setProperty(MBL_FEATURE_PROP_2);
boolean status2 = mobileFeaturePropertyDAO.addMobileFeatureProperty(mobileFeatureProperty);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query =
"SELECT FEATURE_ID, PROPERTY FROM AD_FEATURE_PROPERTY WHERE FEATURE_ID = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setInt(1, mblFeatureId);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
mobileFeatureProperty = new MobileFeatureProperty();
mobileFeatureProperty.setFeatureID(resultSet.getInt(1));
mobileFeatureProperty.setProperty(resultSet.getString(2));
propertyList.add(mobileFeatureProperty);
}
} catch (SQLException e) {
String msg = "Error in retrieving Mobile Feature data ";
log.error(msg, e);
throw new MobileDeviceManagementDAOException(msg, e);
} finally {
MobileDatabaseUtils.cleanupResources(conn, preparedStatement, null);
}
Assert.assertTrue(status1, "MobileFeatureProperty1 has added ");
Assert.assertTrue(status2, "MobileFeatureProperty2 has added ");
Assert.assertTrue(propertyList.size() == 2, "MobileFeatureProperties have retrieved ");
for (MobileFeatureProperty mblFeatureProperty : propertyList) {
Assert.assertNotNull(mblFeatureProperty.getProperty(),
"MobileFeatureProperty property has persisted ");
Assert.assertNotNull(mblFeatureProperty.getFeatureID(),
"MobileFeatureProperty feature-id has persisted ");
}
}
@Test(dependsOnMethods = { "addMobileFeaturePropertyTest" })
public void getMobileFeaturePropertyTest()
throws MobileDeviceManagementDAOException {
MobileFeatureProperty mobileFeatureProperty =
mobileFeaturePropertyDAO.getMobileFeatureProperty(MBL_FEATURE_PROP_1);
Assert.assertNotNull(mobileFeatureProperty, "MobileFeatureProperty has retrieved ");
Assert.assertEquals(MBL_FEATURE_PROP_1, mobileFeatureProperty.getProperty(),
"MobileFeatureProperty property has retrieved ");
Assert.assertTrue(mblFeatureId == mobileFeatureProperty.getFeatureID(),
"MobileFeatureProperty featureId has retrieved ");
}
@Test(dependsOnMethods = { "addMobileFeaturePropertyTest" })
public void getFeaturePropertyOfFeatureTest()
throws MobileDeviceManagementDAOException {
List<MobileFeatureProperty> mobileFeatureProperties =
mobileFeaturePropertyDAO.getFeaturePropertiesOfFeature(mblFeatureId);
Assert.assertNotNull(mobileFeatureProperties, "MobileFeatureProperty list has retrieved ");
Assert.assertTrue(mobileFeatureProperties.size() == 2,
"MobileFeatureProperties have fetched ");
for (MobileFeatureProperty mblFeatureProperty : mobileFeatureProperties) {
Assert.assertNotNull(mblFeatureProperty.getProperty(),
"MobileFeatureProperty property has fetched ");
Assert.assertNotNull(mblFeatureProperty.getFeatureID(),
"MobileFeatureProperty feature-id has fetched ");
}
}
@Test(dependsOnMethods = { "addMobileFeaturePropertyTest", "getMobileFeaturePropertyTest",
"getFeaturePropertyOfFeatureTest" }, expectedExceptions = MobileDeviceManagementDAOException.class)
public void updateMobileFeaturePropertyTest() throws MobileDeviceManagementDAOException {
//Update 1st property to a non-exist feature
MobileFeatureProperty mobileFeatureProperty = new MobileFeatureProperty();
mobileFeatureProperty.setFeatureID(2);
mobileFeatureProperty.setProperty(MBL_FEATURE_PROP_1);
mobileFeaturePropertyDAO.updateMobileFeatureProperty(mobileFeatureProperty);
}
@Test(dependsOnMethods = { "addMobileFeaturePropertyTest", "getMobileFeaturePropertyTest",
"getFeaturePropertyOfFeatureTest" })
public void deleteMobileFeaturePropertyTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
boolean status =
mobileFeaturePropertyDAO.deleteMobileFeatureProperty(MBL_FEATURE_PROP_2);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query =
"SELECT PROPERTY, FEATURE_ID FROM AD_FEATURE_PROPERTY WHERE PROPERTY = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, MBL_FEATURE_PROP_2);
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, "MobileFeatureProperty has deleted ");
}
@Test(dependsOnMethods = { "addMobileFeaturePropertyTest", "getMobileFeaturePropertyTest",
"getFeaturePropertyOfFeatureTest", "updateMobileFeaturePropertyTest",
"deleteMobileFeaturePropertyTest" })
public void deleteMobileFeaturePropertiesOfFeatureTest()
throws MobileDeviceManagementDAOException {
Connection conn = null;
PreparedStatement preparedStatement = null;
boolean status =
mobileFeaturePropertyDAO.deleteMobileFeaturePropertiesOfFeature(mblFeatureId);
try {
conn = DriverManager.getConnection(testDBConfiguration.getConnectionURL());
String query =
"SELECT PROPERTY, FEATURE_ID FROM AD_FEATURE_PROPERTY WHERE FEATURE_ID = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setInt(1, mblFeatureId);
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, "MobileFeatureProperties has deleted ");
}
}

@ -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 ");
}
}

@ -3,7 +3,7 @@
-- Table `AD_DEVICE` -- Table `AD_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE` ( CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL , `DEVICE_ID` VARCHAR(45) NOT NULL ,
`PUSH_TOKEN` VARCHAR(45) NULL DEFAULT NULL , `PUSH_TOKEN` VARCHAR(45) NULL DEFAULT NULL ,
`IMEI` VARCHAR(45) NULL DEFAULT NULL , `IMEI` VARCHAR(45) NULL DEFAULT NULL ,
`IMSI` VARCHAR(45) NULL DEFAULT NULL , `IMSI` VARCHAR(45) NULL DEFAULT NULL ,
@ -16,19 +16,19 @@ CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`TOKEN` VARCHAR(500) NULL DEFAULT NULL, `TOKEN` VARCHAR(500) NULL DEFAULT NULL,
`UNLOCK_TOKEN` VARCHAR(500) NULL DEFAULT NULL, `UNLOCK_TOKEN` VARCHAR(500) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL, `SERIAL` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`MOBILE_DEVICE_ID`) ); PRIMARY KEY (`DEVICE_ID`) );
-- ----------------------------------------------------- -- -----------------------------------------------------
-- 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` (`MOBILE_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);

@ -24,16 +24,4 @@
<class name="org.wso2.carbon.device.mgt.mobile.impl.MobileDeviceManagementConfigTests"/> <class name="org.wso2.carbon.device.mgt.mobile.impl.MobileDeviceManagementConfigTests"/>
</classes> </classes>
</test> </test>
<test name="DAO Unit Tests" preserve-order="true">
<parameter name="dbType" value="H2"/>
<classes>
<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.MobileDeviceOperationMappingDAOTestSuite"/>
</classes>
</test>
</suite> </suite>

@ -19,53 +19,17 @@
<MobileDeviceMgtConfiguration> <MobileDeviceMgtConfiguration>
<ManagementRepository> <ManagementRepository>
<DataSourceConfigurations> <DataSourceConfigurations>
<DataSourceConfiguration type="android"> <DataSourceConfiguration type="android">
<JndiLookupDefinition> <JndiLookupDefinition>
<Name>jdbc/MobileAndroidDM_DS</Name> <Name>jdbc/MobileAndroidDM_DS</Name>
</JndiLookupDefinition> </JndiLookupDefinition>
</DataSourceConfiguration> </DataSourceConfiguration>
<DataSourceConfiguration type="windows"> <DataSourceConfiguration type="windows">
<JndiLookupDefinition> <JndiLookupDefinition>
<Name>jdbc/MobileWindowsDM_DS</Name> <Name>jdbc/MobileWindowsDM_DS</Name>
</JndiLookupDefinition> </JndiLookupDefinition>
</DataSourceConfiguration> </DataSourceConfiguration>
</DataSourceConfigurations> </DataSourceConfigurations>
</ManagementRepository> </ManagementRepository>
<APIPublisher>
<APIs>
<API>
<Name>appmanager</Name>
<Owner>admin</Owner>
<Context>/devices</Context>
<Version>1.0.0</Version>
<Endpoint>http://localhost:9763/test/app</Endpoint>
<Transports>http,https</Transports>
</API>
<API>
<Name>enrol</Name>
<Owner>admin</Owner>
<Context>/enroll</Context>
<Version>1.0.0</Version>
<Endpoint>http://localhost:9763/mdm-android-agent/enrollment</Endpoint>
<Transports>http,https</Transports>
</API>
<API>
<Name>license</Name>
<Owner>admin</Owner>
<Context>/license</Context>
<Version>1.0.0</Version>
<Endpoint>http://localhost:9763/mdm-android-agent/devices/license</Endpoint>
<Transports>http,https</Transports>
</API>
<API>
<Name>operation</Name>
<Owner>admin</Owner>
<Context>/operation</Context>
<Version>1.0.0</Version>
<Endpoint>http://localhost:9763/mdm-android-agent/operations</Endpoint>
<Transports>http,https</Transports>
</API>
</APIs>
</APIPublisher>
</MobileDeviceMgtConfiguration> </MobileDeviceMgtConfiguration>

@ -1,10 +1,11 @@
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `MBL_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,
`DEVICE_INFO` VARCHAR(500) NULL DEFAULT NULL,
`GCM_TOKEN` VARCHAR(45) NULL DEFAULT NULL, `GCM_TOKEN` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL, `IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL, `IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL, `OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
@ -15,18 +16,15 @@ 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`));
ENGINE = InnoDB;
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `MBL_FEATURE` -- Table `AD_FEATURE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_FEATURE` ( CREATE TABLE IF NOT EXISTS `AD_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,
PRIMARY KEY (`ID`)) PRIMARY KEY (`ID`));
ENGINE = InnoDB;

@ -0,0 +1,29 @@
-- -----------------------------------------------------
-- Table `AD_DEVICE`
-- -----------------------------------------------------
CREATE TABLE AD_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL,
GCM_TOKEN VARCHAR(45) NULL DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL,
IMSI VARCHAR(45) NULL DEFAULT NULL,
OS_VERSION VARCHAR(45) NULL DEFAULT NULL,
DEVICE_MODEL VARCHAR(45) NULL DEFAULT NULL,
VENDOR VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
SERIAL VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (DEVICE_ID));
-- -----------------------------------------------------
-- Table `AD_FEATURE`
-- -----------------------------------------------------
CREATE TABLE AD_FEATURE (
ID INT NOT NULL IDENTITY,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);

@ -0,0 +1,31 @@
-- -----------------------------------------------------
-- Table `AD_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL,
`GCM_TOKEN` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_MODEL` VARCHAR(45) NULL DEFAULT NULL,
`VENDOR` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`DEVICE_ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `AD_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_FEATURE` (
`ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`ID`)
) ENGINE = InnoDB;

@ -0,0 +1,49 @@
-- -----------------------------------------------------
-- Table `AD_DEVICE`
-- -----------------------------------------------------
CREATE TABLE AD_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL ,
DEVICE_INFO VARCHAR(500) DEFAULT NULL,
GCM_TOKEN VARCHAR(45) DEFAULT NULL,
IMEI VARCHAR(45) DEFAULT NULL,
IMSI VARCHAR(45) DEFAULT NULL,
OS_VERSION VARCHAR(45) DEFAULT NULL,
DEVICE_MODEL VARCHAR(45) DEFAULT NULL,
VENDOR VARCHAR(45) DEFAULT NULL,
LATITUDE VARCHAR(45) DEFAULT NULL,
LONGITUDE VARCHAR(45) DEFAULT NULL,
SERIAL VARCHAR(45) DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) DEFAULT NULL,
DEVICE_NAME VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (DEVICE_ID)
);
/
-- -----------------------------------------------------
-- Table `AD_FEATURE`
-- -----------------------------------------------------
CREATE TABLE AD_FEATURE (
ID INT NOT NULL,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NOT NULL,
DESCRIPTION VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (ID)
);
/
-- -----------------------------------------------------
-- Sequence `AD_FEATURE_ID_INC_SEQ`
-- -----------------------------------------------------
CREATE SEQUENCE AD_FEATURE_ID_INC_SEQ START WITH 1 INCREMENT BY 1 NOCACHE;
/
-- -----------------------------------------------------
-- Trigger `AD_FEATURE_ID_INC_TRIG`
-- -----------------------------------------------------
CREATE OR REPLACE TRIGGER AD_FEATURE_ID_INC_TRIG
BEFORE INSERT ON AD_FEATURE
FOR EACH ROW
BEGIN
SELECT AD_FEATURE_ID_INC_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/

@ -0,0 +1,30 @@
-- -----------------------------------------------------
-- Table AD_DEVICE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS AD_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL ,
DEVICE_INFO VARCHAR(500) NULL DEFAULT NULL,
GCM_TOKEN VARCHAR(45) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL,
IMSI VARCHAR(45) NULL DEFAULT NULL,
OS_VERSION VARCHAR(45) NULL DEFAULT NULL,
DEVICE_MODEL VARCHAR(45) NULL DEFAULT NULL,
VENDOR VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
SERIAL VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (DEVICE_ID)
);
-- -----------------------------------------------------
-- Table AD_FEATURE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS AD_FEATURE (
ID INT NOT NULL AUTO_INCREMENT,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);

@ -1,56 +0,0 @@
-- -----------------------------------------------------
-- Table `AD_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`ANDROID_DEVICE_ID` VARCHAR(45) NOT NULL,
`GCM_TOKEN` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_MODEL` VARCHAR(45) NULL DEFAULT NULL,
`VENDOR` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`ANDROID_DEVICE_ID`));
-- -----------------------------------------------------
-- Table `AD_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_FEATURE` (
`ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`ID`));
-- -----------------------------------------------------
-- TODO remove this later
-- -----------------------------------------------------
INSERT INTO AD_FEATURE (CODE, NAME, DESCRIPTION)
VALUES
('DEVICE_LOCK', 'Device Lock', 'Lock the device'),
('DEVICE_LOCATION', 'Location', 'Request coordinates of device location'),
('WIFI', 'Wifi', 'Setting up wifi configuration'),
('CAMERA', 'Camera', 'Enable or disable camera'),
('EMAIL', 'Email', 'Configure email settings'),
('DEVICE_MUTE', 'Mute', 'Enable mute in the device'),
('DEVICE_INFO', 'Device Info', 'Request device information'),
('ENTERPRISE_WIPE', 'Enterprise Wipe', 'Remove enterprise applications'),
('CLEAR_PASSWORD', 'Clear Password', 'Clear current password'),
('WIPE_DATA', 'Wipe Data', 'Factory reset the device'),
('APPLICATION_LIST', 'Application List', 'Request list of current installed applications'),
('CHANGE_LOCK_CODE', 'Change Lock-code', 'Change current lock code'),
('INSTALL_APPLICATION', 'Install App', 'Install Enterprise or Market application'),
('UNINSTALL_APPLICATION', 'Uninstall App', 'Uninstall application'),
('BLACKLIST_APPLICATIONS', 'Blacklist app', 'Blacklist applications'),
('ENCRYPT_STORAGE', 'Encrypt storage', 'Encrypt storage'),
('DEVICE_RING', 'Ring', 'Ring the device'),
('PASSCODE_POLICY', 'Password Policy', 'Set passcode policy'),
('NOTIFICATION', 'Message', 'Send message');

@ -1,69 +0,0 @@
-- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`) );
-- -----------------------------------------------------
-- Table `IOS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
`MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`APNS_PUSH_TOKEN` VARCHAR(100) DEFAULT NULL,
`MAGIC_TOKEN` VARCHAR(100) DEFAULT NULL,
`MDM_TOKEN` VARCHAR(100) DEFAULT NULL,
`UNLOCK_TOKEN` VARCHAR(2000) DEFAULT NULL,
`CHALLENGE_TOKEN` VARCHAR(45) DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) DEFAULT NULL,
`SERIAL` VARCHAR(45) DEFAULT NULL,
`PRODUCT` VARCHAR(45) DEFAULT NULL,
`IMEI` VARCHAR(45) DEFAULT NULL,
`VERSION` VARCHAR(45) DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) DEFAULT NULL,
`ICCID` VARCHAR(45) DEFAULT NULL,
`LATITUDE` VARCHAR(45) DEFAULT NULL,
`LONGITUDE` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`MOBILE_DEVICE_ID`) );
-- -----------------------------------------------------
-- TODO remove this later
-- -----------------------------------------------------
INSERT INTO IOS_FEATURE (CODE, NAME, DESCRIPTION)
VALUES
('INSTALL_ENTERPRISE_APPLICATION', 'Install Enterprise App', 'Install Enterprise App'),
('INSTALL_STORE_APPLICATION', 'Install Public App', 'Install Public App'),
('REMOVE_APPLICATION', 'Uninstall App', 'Uninstall App'),
('DEVICE_LOCK', 'Device Lock', 'Device Lock'),
('CELLULAR', 'Cellular', 'Cellular'),
('APN', 'APN', 'APN'),
('RESTRICTION', 'Restrictions', 'Restrictions operation'),
('WIFI', 'Wifi', 'Wifi'),
('DEVICE_INFO', 'Device Info', 'Device info operation'),
('AIR_PLAY', 'Air Play', 'AirPlay operation'),
('LOCATION', 'Location', 'Fetch location'),
('ALARM', 'Alarm', 'Alarm device'),
('APPLICATION_LIST', 'Application list', 'Application list'),
('PROFILE_LIST', 'Profile List', 'Profile list'),
('REMOVE_PROFILE', 'Remove Profile', 'Remove profile'),
('CLEAR_PASSCODE', 'Clear Passcode', 'Clear passcode'),
('CALDAV', 'CalDev', 'Setup CalDav'),
('CALENDAR_SUBSCRIPTION', 'Calendar Subscriptions', 'Calendar subscription'),
('PASSCODE_POLICY', 'Passcode Policy', 'Passcode policy'),
('EMAIL', 'Email', 'Email operation'),
('LDAP', 'LDAP', 'LDAP operation'),
('WEB_CLIP', 'Web Clip', 'Web clip operation'),
('VPN', 'VPN', 'VPN operation'),
('PER_APP_VPN', 'Per App VPN', 'Per app VPN operation'),
('APP_TO_PER_APP_VPN_MAPPING', 'VPN App mapping', 'App to per app VPN mapping operation'),
('ENTERPRISE_WIPE', 'Enterprise Wipe', 'Enterprise wipe operation'),
('APP_LOCK', 'App lock', 'App lock operation'),
('GET_RESTRICTIONS', 'Get restrictions', 'Get restrictions operation');

@ -1,65 +0,0 @@
-- -----------------------------------------------------
-- Table `WINDOWS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WINDOWS_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`));
-- -----------------------------------------------------
-- Table `WINDOWS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WINDOWS_DEVICE` (
`MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`CHANNEL_URI` VARCHAR(100) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_MODEL` VARCHAR(45) NULL DEFAULT NULL,
`VENDOR` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`MOBILE_DEVICE_ID`) );
-- -----------------------------------------------------
-- TODO remove this later
-- -----------------------------------------------------
INSERT INTO WINDOWS_FEATURE (CODE, NAME, DESCRIPTION)
VALUES
('INSTALL_ENTERPRISE_APPLICATION', 'Install Enterprise App', 'Install Enterprise App'),
('INSTALL_STORE_APPLICATION', 'Install Public App', 'Install Public App'),
('REMOVE_APPLICATION', 'Uninstall App', 'Uninstall App'),
('DEVICE_LOCK', 'Device Lock', 'Device Lock'),
('CELLULAR', 'Cellular', 'Cellular'),
('APN', 'APN', 'APN'),
('RESTRICTION', 'Restrictions', 'Restrictions operation'),
('WIFI', 'Wifi', 'Wifi'),
('DEVICE_INFO', 'Device Info', 'Device info operation'),
('AIR_PLAY', 'Air Play', 'AirPlay operation'),
('LOCATION', 'Location', 'Fetch location'),
('ALARM', 'Alarm', 'Alarm device'),
('APPLICATION_LIST', 'Application list', 'Application list'),
('PROFILE_LIST', 'Profile List', 'Profile list'),
('REMOVE_PROFILE', 'Remove Profile', 'Remove profile'),
('CLEAR_PASSCODE', 'Clear Passcode', 'Clear passcode'),
('CALDAV', 'CalDev', 'Setup CalDav'),
('CALENDAR_SUBSCRIPTION', 'Calendar Subscriptions', 'Calendar subscription'),
('PASSCODE_POLICY', 'Passcode Policy', 'Passcode policy'),
('EMAIL', 'Email', 'Email operation'),
('LDAP', 'LDAP', 'LDAP operation'),
('WEB_CLIP', 'Web Clip', 'Web clip operation'),
('VPN', 'VPN', 'VPN operation'),
('PER_APP_VPN', 'Per App VPN', 'Per app VPN operation'),
('APP_TO_PER_APP_VPN_MAPPING', 'VPN App mapping', 'App to per app VPN mapping operation'),
('ENTERPRISE_WIPE', 'Enterprise Wipe', 'Enterprise wipe operation'),
('APP_LOCK', 'App lock', 'App lock operation');

@ -0,0 +1,33 @@
-- -----------------------------------------------------
-- Table `IOS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
`MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`APNS_PUSH_TOKEN` VARCHAR(100) DEFAULT NULL,
`MAGIC_TOKEN` VARCHAR(100) DEFAULT NULL,
`MDM_TOKEN` VARCHAR(100) DEFAULT NULL,
`UNLOCK_TOKEN` VARCHAR(2000) DEFAULT NULL,
`CHALLENGE_TOKEN` VARCHAR(45) DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) DEFAULT NULL,
`SERIAL` VARCHAR(45) DEFAULT NULL,
`PRODUCT` VARCHAR(45) DEFAULT NULL,
`IMEI` VARCHAR(45) DEFAULT NULL,
`VERSION` VARCHAR(45) DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) DEFAULT NULL,
`ICCID` VARCHAR(45) DEFAULT NULL,
`LATITUDE` VARCHAR(45) DEFAULT NULL,
`LONGITUDE` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`MOBILE_DEVICE_ID`)
);
-- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`)
);

@ -0,0 +1,33 @@
-- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IOS_FEATURE (
ID INT NOT NULL IDENTITY,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);
-- -----------------------------------------------------
-- Table `IOS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IOS_DEVICE (
MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
APNS_PUSH_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MAGIC_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MDM_TOKEN VARCHAR(100) NULL DEFAULT NULL,
UNLOCK_TOKEN VARCHAR(2000) NULL DEFAULT NULL,
CHALLENGE_TOKEN VARCHAR(45) NULL DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
SERIAL VARCHAR(45) NULL DEFAULT NULL,
PRODUCT VARCHAR(45) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL,
VERSION VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
ICCID VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (MOBILE_DEVICE_ID)
);

@ -1,20 +1,7 @@
-- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`) )
ENGINE = InnoDB;
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `IOS_DEVICE` -- Table `IOS_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
`MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL, `MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`APNS_PUSH_TOKEN` VARCHAR(100) NULL DEFAULT NULL, `APNS_PUSH_TOKEN` VARCHAR(100) NULL DEFAULT NULL,
`MAGIC_TOKEN` VARCHAR(100) NULL DEFAULT NULL, `MAGIC_TOKEN` VARCHAR(100) NULL DEFAULT NULL,
@ -31,8 +18,16 @@ CREATE TABLE IF NOT EXISTS `IOS_FEATURE` (
`ICCID` VARCHAR(45) NULL DEFAULT NULL, `ICCID` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL, `LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL, `LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`MOBILE_DEVICE_ID`) ) PRIMARY KEY (`MOBILE_DEVICE_ID`)
ENGINE = InnoDB; ) ENGINE = InnoDB;
long -- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`)
) ENGINE = InnoDB;

@ -0,0 +1,51 @@
-- -----------------------------------------------------
-- Table `IOS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IOS_DEVICE (
MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
APNS_PUSH_TOKEN VARCHAR(100) DEFAULT NULL,
MAGIC_TOKEN VARCHAR(100) DEFAULT NULL,
MDM_TOKEN VARCHAR(100) DEFAULT NULL,
UNLOCK_TOKEN VARCHAR(2000) DEFAULT NULL,
CHALLENGE_TOKEN VARCHAR(45) DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) DEFAULT NULL,
SERIAL VARCHAR(45) DEFAULT NULL,
PRODUCT VARCHAR(45) DEFAULT NULL,
IMEI VARCHAR(45) DEFAULT NULL,
VERSION VARCHAR(45) DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) DEFAULT NULL,
DEVICE_NAME VARCHAR(100) DEFAULT NULL,
ICCID VARCHAR(45) DEFAULT NULL,
LATITUDE VARCHAR(45) DEFAULT NULL,
LONGITUDE VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (MOBILE_DEVICE_ID)
);
/
-- -----------------------------------------------------
-- Table `IOS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IOS_FEATURE (
ID INT NOT NULL,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NOT NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);
/
-- Sequence `IOS_FEATURE_ID_INC_SEQ`
-- -----------------------------------------------------
CREATE SEQUENCE IOS_FEATURE_ID_INC_SEQ START WITH 1 INCREMENT BY 1 NOCACHE;
/
-- -----------------------------------------------------
-- Trigger `IOS_FEATURE_ID_INC_TRIG`
-- -----------------------------------------------------
CREATE OR REPLACE TRIGGER IOS_FEATURE_ID_INC_TRIG
BEFORE INSERT ON IOS_FEATURE
FOR EACH ROW
BEGIN
SELECT IOS_FEATURE_ID_INC_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/

@ -0,0 +1,33 @@
-- -----------------------------------------------------
-- Table IOS_FEATURE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS IOS_FEATURE (
ID SERIAL NOT NULL,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);
-- -----------------------------------------------------
-- Table IOS_DEVICE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS IOS_DEVICE (
MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
APNS_PUSH_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MAGIC_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MDM_TOKEN VARCHAR(100) NULL DEFAULT NULL,
UNLOCK_TOKEN VARCHAR(2000) NULL DEFAULT NULL,
CHALLENGE_TOKEN VARCHAR(45) NULL DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
SERIAL VARCHAR(45) NULL DEFAULT NULL,
PRODUCT VARCHAR(45) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL,
VERSION VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
ICCID VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (MOBILE_DEVICE_ID)
);

@ -1,52 +0,0 @@
-- -----------------------------------------------------
-- Table `MBL_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `MBL_DEVICE` (
`MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`PUSH_TOKEN` VARCHAR(45) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_MODEL` VARCHAR(45) NULL DEFAULT NULL,
`VENDOR` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
`CHALLENGE` VARCHAR(45) NULL DEFAULT NULL,
`TOKEN` VARCHAR(50) NULL DEFAULT NULL,
`UNLOCK_TOKEN` VARCHAR(2000) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`MOBILE_DEVICE_ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `MBL_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `MBL_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`DEVICE_TYPE` VARCHAR(45) NOT NULL,
`CODE` VARCHAR(45) NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `MBL_FEATURE_PROPERTY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `MBL_FEATURE_PROPERTY` (
`PROPERTY` VARCHAR(45) NOT NULL ,
`FEATURE_ID` INT NOT NULL ,
PRIMARY KEY (`PROPERTY`),
CONSTRAINT `fk_MBL_FEATURE_PROPERTY_MBL_FEATURE1`
FOREIGN KEY (`FEATURE_ID`)
REFERENCES `MBL_FEATURE` (`FEATURE_ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Inserts
-- -----------------------------------------------------
INSERT INTO MBL_FEATURE (DEVICE_TYPE,NAME,CODE, DESCRIPTION) VALUES ('android','DEVICE_LOCK','503A','Device Lock'),('android','WIPE','504A','Device Wipe'),('android','CLEARPASSCODE','505A','Clear Passcode'),('android','APPLIST','502A','Get All Applications'),('android','LOCATION','501A','Location'),('android','INFO','500A','Device Information'),('android','NOTIFICATION','506A','Message'),('android','WIFI','507A','Setup Wifi'),('android','CAMERA','508A','Camera Control'),('android','MUTE','513A','Mute Device'),('android','INSTALLAPP','509A','Install Application'),('android','UNINSTALLAPP','510A','Uninstall Application'),('android','ENCRYPT','511A','Encrypt Storage'),('android','APN','512A','APN'),('android','WEBCLIP','518A','Create Webclips'),('android','PASSWORDPOLICY','519A','Passcode Policy'),('android','EMAIL','520A','Email Configuration'),('android','GOOGLECALENDAR','521A','Calender Subscription'),('android','VPN','523A','VPN'),('android','LDAP','524A','LDAP'),('android','CHANGEPASSWORD','526A','Set Passcode'),('android','ENTERPRISEWIPE','527A','Enterprise Wipe'),('android','POLICY','500P','Policy Enforcement'),('android','MONITORING','501P','Policy Monitoring '),('android','BLACKLISTAPPS','528B','Blacklist Apps'),('android','REVOKEPOLICY','502P','Revoke Policy');

@ -0,0 +1,30 @@
-- -----------------------------------------------------
-- Table `WIN_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WIN_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL,
`CHANNEL_URI` VARCHAR(100) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_MODEL` VARCHAR(45) NULL DEFAULT NULL,
`VENDOR` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL,
`MAC_ADDRESS` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`DEVICE_ID`)
);
-- -----------------------------------------------------
-- Table `WIN_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WIN_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`CODE` VARCHAR(45) NOT NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`)
);

@ -0,0 +1,30 @@
-- -----------------------------------------------------
-- Table `WINDOWS_FEATURE`
-- -----------------------------------------------------
CREATE TABLE WIN_FEATURE (
ID INT NOT NULL IDENTITY,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);
-- -----------------------------------------------------
-- Table `WINDOWS_DEVICE`
-- -----------------------------------------------------
CREATE TABLE WIN_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL,
CHANNEL_URI VARCHAR(100) NULL DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL,
IMSI VARCHAR(45) NULL DEFAULT NULL,
OS_VERSION VARCHAR(45) NULL DEFAULT NULL,
DEVICE_MODEL VARCHAR(45) NULL DEFAULT NULL,
VENDOR VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
SERIAL VARCHAR(45) NULL DEFAULT NULL,
MAC_ADDRESS VARCHAR(45) NULL DEFAULT NULL,
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (DEVICE_ID)
);

@ -0,0 +1,35 @@
-- -----------------------------------------------------
-- Table `WIN_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WIN_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL,
`PUSH_TOKEN` VARCHAR(45) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL,
`OS_VERSION` VARCHAR(45) NULL DEFAULT NULL,
`DEVICE_MODEL` VARCHAR(45) NULL DEFAULT NULL,
`VENDOR` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
`CHALLENGE` VARCHAR(45) NULL DEFAULT NULL,
`TOKEN` VARCHAR(50) NULL DEFAULT NULL,
`UNLOCK_TOKEN` VARCHAR(2000) NULL DEFAULT NULL,
`SERIAL` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`DEVICE_ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `WIN_FEATURE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WIN_FEATURE` (
`FEATURE_ID` INT NOT NULL AUTO_INCREMENT,
`DEVICE_TYPE` VARCHAR(45) NOT NULL,
`CODE` VARCHAR(45) NULL,
`NAME` VARCHAR(100) NULL,
`DESCRIPTION` VARCHAR(200) NULL,
PRIMARY KEY (`FEATURE_ID`))
ENGINE = InnoDB;

@ -0,0 +1,50 @@
-- -----------------------------------------------------
-- Table `WIN_DEVICE`
-- -----------------------------------------------------
CREATE TABLE WIN_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL,
PUSH_TOKEN VARCHAR(45) DEFAULT NULL,
IMEI VARCHAR(45) DEFAULT NULL,
IMSI VARCHAR(45) DEFAULT NULL,
OS_VERSION VARCHAR(45) DEFAULT NULL,
DEVICE_MODEL VARCHAR(45) DEFAULT NULL,
VENDOR VARCHAR(45) DEFAULT NULL,
LATITUDE VARCHAR(45) DEFAULT NULL,
LONGITUDE VARCHAR(45) DEFAULT NULL,
CHALLENGE VARCHAR(45) DEFAULT NULL,
TOKEN VARCHAR(50) DEFAULT NULL,
UNLOCK_TOKEN VARCHAR(2000) DEFAULT NULL,
SERIAL VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (DEVICE_ID)
);
/
-- -----------------------------------------------------
-- Table `WIN_FEATURE`
-- -----------------------------------------------------
CREATE TABLE WIN_FEATURE (
ID INT NOT NULL,
DEVICE_TYPE VARCHAR(45) NOT NULL,
CODE VARCHAR(45) NOT NULL,
NAME VARCHAR(100) NOT NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);
/
-- -----------------------------------------------------
-- Sequence `WIN_FEATURE_ID_INC_SEQ`
-- -----------------------------------------------------
CREATE SEQUENCE WIN_FEATURE_ID_INC_SEQ START WITH 1 INCREMENT BY 1 NOCACHE;
/
-- -----------------------------------------------------
-- Trigger `WIN_FEATURE_ID_INC_TRIG`
-- -----------------------------------------------------
CREATE OR REPLACE TRIGGER WIN_FEATURE_ID_INC_TRIG
BEFORE INSERT ON WIN_FEATURE
FOR EACH ROW
BEGIN
SELECT WIN_FEATURE_ID_INC_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/

@ -0,0 +1,32 @@
-- -----------------------------------------------------
-- Table WIN_DEVICE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS WIN_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL,
PUSH_TOKEN VARCHAR(45) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL,
IMSI VARCHAR(45) NULL DEFAULT NULL,
OS_VERSION VARCHAR(45) NULL DEFAULT NULL,
DEVICE_MODEL VARCHAR(45) NULL DEFAULT NULL,
VENDOR VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
CHALLENGE VARCHAR(45) NULL DEFAULT NULL,
TOKEN VARCHAR(50) NULL DEFAULT NULL,
UNLOCK_TOKEN VARCHAR(2000) NULL DEFAULT NULL,
SERIAL VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (DEVICE_ID)
);
-- -----------------------------------------------------
-- Table WIN_FEATURE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS WIN_FEATURE (
ID SERIAL NOT NULL,
DEVICE_TYPE VARCHAR(45) NOT NULL,
CODE VARCHAR(45) NULL,
NAME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(200) NULL,
PRIMARY KEY (ID)
);
Loading…
Cancel
Save