mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Merge branch 'hasuniea-master'
This commit is contained in:
commit
bc22647a04
@ -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,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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -48,10 +48,6 @@ public class AndroidDAOFactory extends AbstractMobileDeviceManagementDAOFactory
|
|||||||
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();
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,16 +14,13 @@
|
|||||||
* 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;
|
||||||
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,7 +34,6 @@ 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);
|
|
||||||
|
|
||||||
public WindowsFeatureManager() {
|
public WindowsFeatureManager() {
|
||||||
MobileDeviceManagementDAOFactory daoFactory = new WindowsDAOFactory();
|
MobileDeviceManagementDAOFactory daoFactory = new WindowsDAOFactory();
|
||||||
@ -55,22 +51,41 @@ public class WindowsFeatureManager implements FeatureManager {
|
|||||||
} 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
|
@Override
|
||||||
public boolean addFeatures(List<Feature> list) throws DeviceManagementException {
|
public boolean addFeatures(List<Feature> features) throws DeviceManagementException {
|
||||||
return false;
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,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));
|
||||||
@ -86,7 +102,9 @@ 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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,13 +119,78 @@ public class WindowsFeatureManager implements FeatureManager {
|
|||||||
} 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
|
@Override
|
||||||
public boolean addSupportedFeaturesToDB() throws DeviceManagementException {
|
public boolean addSupportedFeaturesToDB() throws DeviceManagementException {
|
||||||
return false;
|
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,8 +21,12 @@ 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;
|
||||||
@ -45,7 +49,7 @@ public class WindowsDAOFactory extends AbstractMobileDeviceManagementDAOFactory
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MobileFeatureDAO getMobileFeatureDAO() {
|
public MobileFeatureDAO getMobileFeatureDAO() {
|
||||||
return null;
|
return new WindowsFeatureDAOImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void beginTransaction() throws MobileDeviceManagementDAOException {
|
public static void beginTransaction() throws MobileDeviceManagementDAOException {
|
||||||
@ -124,5 +128,4 @@ public class WindowsDAOFactory extends AbstractMobileDeviceManagementDAOFactory
|
|||||||
log.warn("Error occurred while roll-backing the transaction", e);
|
log.warn("Error occurred while roll-backing the transaction", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 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 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 ID, CODE FROM AD_FEATURE WHERE 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 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 ");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -24,13 +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.MobileFeaturePropertyDAOTestSuite"/>
|
|
||||||
</classes>
|
|
||||||
</test>
|
|
||||||
|
|
||||||
</suite>
|
</suite>
|
||||||
@ -1,7 +1,7 @@
|
|||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
-- Table `WINDOWS_FEATURE`
|
-- Table `WINDOWS_FEATURE`
|
||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
CREATE TABLE WINDOWS_FEATURE (
|
CREATE TABLE WIN_FEATURE (
|
||||||
ID INT NOT NULL IDENTITY,
|
ID INT NOT NULL IDENTITY,
|
||||||
CODE VARCHAR(45) NOT NULL,
|
CODE VARCHAR(45) NOT NULL,
|
||||||
NAME VARCHAR(100) NULL,
|
NAME VARCHAR(100) NULL,
|
||||||
@ -12,7 +12,7 @@ CREATE TABLE WINDOWS_FEATURE (
|
|||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
-- Table `WINDOWS_DEVICE`
|
-- Table `WINDOWS_DEVICE`
|
||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
CREATE TABLE WINDOWS_DEVICE (
|
CREATE TABLE WIN_DEVICE (
|
||||||
DEVICE_ID VARCHAR(45) NOT NULL,
|
DEVICE_ID VARCHAR(45) NOT NULL,
|
||||||
CHANNEL_URI VARCHAR(100) NULL DEFAULT NULL,
|
CHANNEL_URI VARCHAR(100) NULL DEFAULT NULL,
|
||||||
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
|
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
|
||||||
|
|||||||
@ -31,18 +31,5 @@ CREATE TABLE IF NOT EXISTS `WIN_FEATURE` (
|
|||||||
PRIMARY KEY (`FEATURE_ID`))
|
PRIMARY KEY (`FEATURE_ID`))
|
||||||
ENGINE = InnoDB;
|
ENGINE = InnoDB;
|
||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `WIN_FEATURE_PROPERTY`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS `WIN_FEATURE_PROPERTY` (
|
|
||||||
`PROPERTY` VARCHAR(45) NOT NULL ,
|
|
||||||
`FEATURE_ID` INT NOT NULL ,
|
|
||||||
PRIMARY KEY (`PROPERTY`),
|
|
||||||
CONSTRAINT `fk_WIN_FEATURE_PROPERTY_WIN_FEATURE1`
|
|
||||||
FOREIGN KEY (`FEATURE_ID`)
|
|
||||||
REFERENCES `WIN_FEATURE` (`FEATURE_ID`)
|
|
||||||
ON DELETE NO ACTION
|
|
||||||
ON UPDATE NO ACTION)
|
|
||||||
ENGINE = InnoDB;
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -32,20 +32,6 @@ CREATE TABLE WIN_FEATURE (
|
|||||||
);
|
);
|
||||||
/
|
/
|
||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `WIN_FEATURE_PROPERTY`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE WIN_FEATURE_PROPERTY (
|
|
||||||
PROPERTY VARCHAR(45) NOT NULL,
|
|
||||||
FEATURE_ID INT NOT NULL,
|
|
||||||
PRIMARY KEY (PROPERTY),
|
|
||||||
CONSTRAINT fk_WIN_FEATURE_PROPERTY_WIN_FEATURE1
|
|
||||||
FOREIGN KEY (FEATURE_ID)
|
|
||||||
REFERENCES WIN_FEATURE (ID)
|
|
||||||
ON DELETE NO ACTION
|
|
||||||
ON UPDATE NO ACTION);
|
|
||||||
/
|
|
||||||
|
|
||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
-- Sequence `WIN_FEATURE_ID_INC_SEQ`
|
-- Sequence `WIN_FEATURE_ID_INC_SEQ`
|
||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
|
|||||||
@ -30,16 +30,3 @@ CREATE TABLE IF NOT EXISTS WIN_FEATURE (
|
|||||||
PRIMARY KEY (ID)
|
PRIMARY KEY (ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `WIN_FEATURE_PROPERTY`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS WIN_FEATURE_PROPERTY (
|
|
||||||
PROPERTY VARCHAR(45) NOT NULL ,
|
|
||||||
FEATURE_ID INT NOT NULL ,
|
|
||||||
PRIMARY KEY (PROPERTY),
|
|
||||||
CONSTRAINT fk_WIN_FEATURE_PROPERTY_WIN_FEATURE1
|
|
||||||
FOREIGN KEY (FEATURE_ID)
|
|
||||||
REFERENCES WIN_FEATURE (ID)
|
|
||||||
ON DELETE NO ACTION
|
|
||||||
ON UPDATE NO ACTION
|
|
||||||
);
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user