forked from community/device-mgt-core
parent
8c613539cc
commit
f103b73367
@ -0,0 +1,51 @@
|
|||||||
|
package org.wso2.carbon.device.mgt.mobile.dao;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.dto.Feature;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents the key operations associated with persisting feature related
|
||||||
|
* information.
|
||||||
|
*/
|
||||||
|
public interface FeatureDAO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new feature to plugin feature table.
|
||||||
|
* @param feature Feature object that holds data related to the feature to be inserted.
|
||||||
|
* @return The status of the operation. If the insert was successful or not.
|
||||||
|
* @throws MobileDeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
boolean addFeature(Feature feature) throws MobileDeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a feature in the feature table.
|
||||||
|
* @param feature Feature object that holds data has to be updated.
|
||||||
|
* @return The status of the operation. If the update was successful or not.
|
||||||
|
* @throws MobileDeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
boolean updateFeature(Feature feature) throws MobileDeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a given feature from plugin database.
|
||||||
|
* @param featureCode Feature code of the feature to be deleted.
|
||||||
|
* @return The status of the operation. If the delete was successful or not.
|
||||||
|
* @throws MobileDeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
boolean deleteDevice(String featureCode) throws MobileDeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a given feature from plugin database.
|
||||||
|
* @param featureCode Feature code of the feature to be retrieved.
|
||||||
|
* @return Feature object that holds data of the feature represented by featureCode.
|
||||||
|
* @throws MobileDeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
Feature getFeature(String featureCode) throws MobileDeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve all the features from plugin database.
|
||||||
|
* @return Feature object list.
|
||||||
|
* @throws MobileDeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
List<Feature> getAllFeatures() throws MobileDeviceManagementDAOException;
|
||||||
|
}
|
@ -0,0 +1,187 @@
|
|||||||
|
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.FeatureDAO;
|
||||||
|
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.Feature;
|
||||||
|
|
||||||
|
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 FeatureDAO
|
||||||
|
*/
|
||||||
|
public class FeatureDAOImpl implements FeatureDAO {
|
||||||
|
|
||||||
|
private DataSource dataSource;
|
||||||
|
private static final Log log = LogFactory.getLog(FeatureDAOImpl.class);
|
||||||
|
|
||||||
|
public FeatureDAOImpl(DataSource dataSource) {
|
||||||
|
this.dataSource = dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addFeature(Feature feature) throws MobileDeviceManagementDAOException {
|
||||||
|
boolean status = false;
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String createDBQuery =
|
||||||
|
"INSERT INTO MBL_FEATURES(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)";
|
||||||
|
|
||||||
|
stmt = conn.prepareStatement(createDBQuery);
|
||||||
|
stmt.setString(1, feature.getCode());
|
||||||
|
stmt.setString(2, feature.getName());
|
||||||
|
stmt.setString(3, feature.getDescription());
|
||||||
|
int rows = stmt.executeUpdate();
|
||||||
|
if (rows > 0) {
|
||||||
|
status = true;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while adding feature code - '" +
|
||||||
|
feature.getCode() + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new MobileDeviceManagementDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateFeature(Feature feature)
|
||||||
|
throws MobileDeviceManagementDAOException {
|
||||||
|
boolean status = false;
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String updateDBQuery =
|
||||||
|
"UPDATE MBL_FEATURES SET CODE = ?, NAME = ?, DESCRIPTION = ? WHERE FEATURE_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(updateDBQuery);
|
||||||
|
stmt.setString(1, feature.getCode());
|
||||||
|
stmt.setString(2, feature.getName());
|
||||||
|
stmt.setString(3, feature.getDescription());
|
||||||
|
stmt.setInt(4, feature.getId());
|
||||||
|
int rows = stmt.executeUpdate();
|
||||||
|
if (rows > 0) {
|
||||||
|
status = true;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while updating the feature with feature code - '" +
|
||||||
|
feature.getId() + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new MobileDeviceManagementDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteDevice(String featureCode)
|
||||||
|
throws MobileDeviceManagementDAOException {
|
||||||
|
boolean status = false;
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String deleteDBQuery =
|
||||||
|
"DELETE FROM MBL_FEATURES WHERE FEATURE_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(deleteDBQuery);
|
||||||
|
stmt.setString(1, featureCode);
|
||||||
|
int rows = stmt.executeUpdate();
|
||||||
|
if(rows>0){
|
||||||
|
status = true;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while deleting feature with code - " + featureCode;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new MobileDeviceManagementDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Feature getFeature(String featureCode)
|
||||||
|
throws MobileDeviceManagementDAOException {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
Feature feature = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String selectDBQuery =
|
||||||
|
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM MBL_FEATURE WHERE FEATURE_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(selectDBQuery);
|
||||||
|
stmt.setString(1, featureCode);
|
||||||
|
ResultSet resultSet = stmt.executeQuery();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
feature = new Feature();
|
||||||
|
feature.setId(resultSet.getInt(1));
|
||||||
|
feature.setCode(resultSet.getString(2));
|
||||||
|
feature.setName(resultSet.getString(3));
|
||||||
|
feature.setDescription(resultSet.getString(4));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while fetching feature code - '" +
|
||||||
|
featureCode + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new MobileDeviceManagementDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||||
|
}
|
||||||
|
return feature;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Feature> getAllFeatures() throws MobileDeviceManagementDAOException {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
Feature feature;
|
||||||
|
List<Feature> features=new ArrayList<Feature>();
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String selectDBQuery =
|
||||||
|
"SELECT FEATURE_ID, CODE, NAME, DESCRIPTION FROM MBL_FEATURE";
|
||||||
|
stmt = conn.prepareStatement(selectDBQuery);
|
||||||
|
ResultSet resultSet = stmt.executeQuery();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
feature = new Feature();
|
||||||
|
feature.setId(resultSet.getInt(1));
|
||||||
|
feature.setCode(resultSet.getString(2));
|
||||||
|
feature.setName(resultSet.getString(3));
|
||||||
|
feature.setDescription(resultSet.getString(4));
|
||||||
|
features.add(feature);
|
||||||
|
}
|
||||||
|
return features;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while fetching all features.'";
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package org.wso2.carbon.device.mgt.mobile.dto;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DTO of features.
|
||||||
|
*/
|
||||||
|
public class Feature implements Serializable {
|
||||||
|
int id;
|
||||||
|
String code;
|
||||||
|
String name;
|
||||||
|
String description;
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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.impl.common;
|
||||||
|
|
||||||
|
|
||||||
|
public enum DBTypes {
|
||||||
|
Oracle("Oracle"),H2("H2"),MySql("MySql");
|
||||||
|
|
||||||
|
String dbName ;
|
||||||
|
DBTypes(String dbStrName) {
|
||||||
|
dbName = dbStrName;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
* 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.impl.common;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAttribute;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
@XmlRootElement(name = "DBType")
|
||||||
|
public class TestDBConfiguration {
|
||||||
|
|
||||||
|
private String connectionUrl;
|
||||||
|
private String driverClass;
|
||||||
|
private String userName;
|
||||||
|
private String pwd;
|
||||||
|
|
||||||
|
@Override public String toString() {
|
||||||
|
return "TestDBConfiguration{" +
|
||||||
|
"connectionUrl='" + connectionUrl + '\'' +
|
||||||
|
", driverClass='" + driverClass + '\'' +
|
||||||
|
", userName='" + userName + '\'' +
|
||||||
|
", pwd='" + pwd + '\'' +
|
||||||
|
", dbType='" + dbType + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
private String dbType;
|
||||||
|
|
||||||
|
@XmlElement(name = "connectionurl", nillable = false)
|
||||||
|
public String getConnectionUrl() {
|
||||||
|
return connectionUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConnectionUrl(String connectionUrl) {
|
||||||
|
this.connectionUrl = connectionUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "driverclass", nillable = false)
|
||||||
|
public String getDriverClass() {
|
||||||
|
return driverClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDriverClass(String driverClass) {
|
||||||
|
this.driverClass = driverClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "userName", nillable = false)
|
||||||
|
public String getUserName() {
|
||||||
|
return userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserName(String userName) {
|
||||||
|
this.userName = userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "pwd", nillable = false)
|
||||||
|
public String getPwd() {
|
||||||
|
return pwd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPwd(String pwd) {
|
||||||
|
this.pwd = pwd;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlAttribute(name = "typeName")
|
||||||
|
public String getDbType() {
|
||||||
|
return dbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDbType(String dbType) {
|
||||||
|
this.dbType = dbType;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* 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.impl.common;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@XmlRootElement(name = "DeviceMgtTestDBConfigurations")
|
||||||
|
public class TestDBConfigurations {
|
||||||
|
|
||||||
|
private List<TestDBConfiguration> dbTypesList;
|
||||||
|
|
||||||
|
@XmlElement(name = "DBType")
|
||||||
|
public List<TestDBConfiguration> getDbTypesList() {
|
||||||
|
return dbTypesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDbTypesList(List<TestDBConfiguration> dbTypesList) {
|
||||||
|
this.dbTypesList = dbTypesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
* 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.impl.dao;
|
||||||
|
|
||||||
|
|
||||||
|
import org.apache.commons.dbcp.BasicDataSource;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.Parameters;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.common.DBTypes;
|
||||||
|
import org.wso2.carbon.device.mgt.core.common.TestDBConfiguration;
|
||||||
|
import org.wso2.carbon.device.mgt.core.common.TestDBConfigurations;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.OwnerShip;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.Status;
|
||||||
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.dao.FeatureDAO;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.dao.MobileDeviceManagementDAOException;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.dao.impl.FeatureDAOImpl;
|
||||||
|
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.common.TestDBConfigurations;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.dto.*;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBContext;
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
import javax.xml.bind.Unmarshaller;
|
||||||
|
import java.io.File;
|
||||||
|
import java.sql.*;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
public class FeatureDAOTestSuite {
|
||||||
|
|
||||||
|
private TestDBConfiguration testDBConfiguration;
|
||||||
|
private Connection conn = null;
|
||||||
|
private Statement stmt = null;
|
||||||
|
private FeatureDAOImpl featureDAO;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
@Parameters("dbType")
|
||||||
|
public void setUpDB(String dbTypeStr) throws Exception {
|
||||||
|
|
||||||
|
DBTypes dbType = DBTypes.valueOf(dbTypeStr);
|
||||||
|
testDBConfiguration = getTestDBConfiguration(dbType);
|
||||||
|
|
||||||
|
switch (dbType) {
|
||||||
|
case H2:
|
||||||
|
createH2DB(testDBConfiguration);
|
||||||
|
BasicDataSource testDataSource = new BasicDataSource();
|
||||||
|
testDataSource.setDriverClassName(testDBConfiguration.getDriverClass());
|
||||||
|
testDataSource.setUrl(testDBConfiguration.getConnectionUrl());
|
||||||
|
testDataSource.setUsername(testDBConfiguration.getUserName());
|
||||||
|
testDataSource.setPassword(testDBConfiguration.getPwd());
|
||||||
|
featureDAO = new FeatureDAOImpl(testDataSource);
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private TestDBConfiguration getTestDBConfiguration(DBTypes dbType) throws
|
||||||
|
MobileDeviceManagementDAOException,
|
||||||
|
DeviceManagementException {
|
||||||
|
|
||||||
|
File deviceMgtConfig = new File("src/test/resources/testdbconfig.xml");
|
||||||
|
Document doc = null;
|
||||||
|
testDBConfiguration = null;
|
||||||
|
TestDBConfigurations testDBConfigurations = null;
|
||||||
|
|
||||||
|
doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig);
|
||||||
|
JAXBContext testDBContext = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
testDBContext = JAXBContext.newInstance(TestDBConfigurations.class);
|
||||||
|
Unmarshaller unmarshaller = testDBContext.createUnmarshaller();
|
||||||
|
testDBConfigurations = (TestDBConfigurations) unmarshaller.unmarshal(doc);
|
||||||
|
} catch (JAXBException e) {
|
||||||
|
throw new MobileDeviceManagementDAOException("Error parsing test db configurations", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
Iterator<TestDBConfiguration> itrDBConfigs = testDBConfigurations.getDbTypesList().iterator();
|
||||||
|
while (itrDBConfigs.hasNext()) {
|
||||||
|
testDBConfiguration = itrDBConfigs.next();
|
||||||
|
if (testDBConfiguration.getDbType().equals(dbType.toString())) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return testDBConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createH2DB(TestDBConfiguration testDBConf) throws Exception {
|
||||||
|
|
||||||
|
Class.forName(testDBConf.getDriverClass());
|
||||||
|
conn = DriverManager.getConnection(testDBConf.getConnectionUrl());
|
||||||
|
stmt = conn.createStatement();
|
||||||
|
stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/sql/CreateH2TestDB.sql'");
|
||||||
|
stmt.close();
|
||||||
|
conn.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addFeature() throws MobileDeviceManagementDAOException, DeviceManagementException {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Feature feature = new Feature();
|
||||||
|
feature.setCode("Camera");
|
||||||
|
feature.setDescription("Camera enable or disable");
|
||||||
|
feature.setName("Camera");
|
||||||
|
boolean added = featureDAO.addFeature(feature);
|
||||||
|
// Long deviceId = null;
|
||||||
|
// try {
|
||||||
|
// conn = DeviceManagementDAOFactory.getDataSource().getConnection();
|
||||||
|
// stmt = conn.createStatement();
|
||||||
|
// ResultSet resultSet = stmt
|
||||||
|
// .executeQuery("SELECT ID from DM_DEVICE DEVICE where DEVICE.DEVICE_IDENTIFICATION='111'");
|
||||||
|
//
|
||||||
|
// while (resultSet.next()) {
|
||||||
|
// deviceId = resultSet.getLong(1);
|
||||||
|
// }
|
||||||
|
// conn.close();
|
||||||
|
// } catch (SQLException sqlEx) {
|
||||||
|
// throw new DeviceManagementDAOException("error in fetch device by device identification id", sqlEx);
|
||||||
|
// }
|
||||||
|
|
||||||
|
Assert.assertTrue(added, "Device Id is null");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE
|
||||||
|
(
|
||||||
|
ID INT auto_increment NOT NULL,
|
||||||
|
NAME VARCHAR(300) NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_DEVICE
|
||||||
|
(
|
||||||
|
ID INT auto_increment NOT NULL,
|
||||||
|
DESCRIPTION TEXT NULL DEFAULT NULL,
|
||||||
|
NAME VARCHAR(100) NULL DEFAULT NULL,
|
||||||
|
DATE_OF_ENROLLMENT BIGINT NULL DEFAULT NULL,
|
||||||
|
DATE_OF_LAST_UPDATE BIGINT NULL DEFAULT NULL,
|
||||||
|
OWNERSHIP VARCHAR(45) NULL DEFAULT NULL,
|
||||||
|
STATUS VARCHAR(15) NULL DEFAULT NULL,
|
||||||
|
DEVICE_TYPE_ID INT(11) NULL DEFAULT NULL,
|
||||||
|
DEVICE_IDENTIFICATION VARCHAR(300) NULL DEFAULT NULL,
|
||||||
|
OWNER VARCHAR(45) NULL DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID )
|
||||||
|
REFERENCES DM_DEVICE_TYPE (ID ) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<DeviceMgtTestDBConfigurations>
|
||||||
|
<DBType typeName="H2">
|
||||||
|
<connectionurl>jdbc:h2:mem:cdm-test-db;DB_CLOSE_DELAY=-1</connectionurl>
|
||||||
|
<driverclass>org.h2.Driver</driverclass>
|
||||||
|
<userName></userName>
|
||||||
|
<pwd></pwd>
|
||||||
|
</DBType>
|
||||||
|
</DeviceMgtTestDBConfigurations>
|
@ -0,0 +1,28 @@
|
|||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
|
||||||
|
|
||||||
|
<suite name="EMM-core-initializer">
|
||||||
|
<parameter name="useDefaultListeners" value="false"/>
|
||||||
|
|
||||||
|
<test name="DAO Unit Tests" preserve-order="true">
|
||||||
|
<parameter name="dbType" value="H2"/>
|
||||||
|
<classes>
|
||||||
|
|
||||||
|
<class name="org.wso2.carbon.device.mgt.core.dao.DeviceMgtDAOTestSuite"/>
|
||||||
|
</classes>
|
||||||
|
</test>
|
||||||
|
</suite>
|
Loading…
Reference in new issue