Resolved merge conflicts

revert-dabc3590
Dileesha Rajapakse 9 years ago
commit 10ea80ef43

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

@ -2,7 +2,7 @@
-- Table `IOS_DEVICE` -- Table `IOS_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_DEVICE` ( CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL, `MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`APNS_PUSH_TOKEN` VARCHAR(100) DEFAULT NULL, `APNS_PUSH_TOKEN` VARCHAR(100) DEFAULT NULL,
`MAGIC_TOKEN` VARCHAR(100) DEFAULT NULL, `MAGIC_TOKEN` VARCHAR(100) DEFAULT NULL,
`MDM_TOKEN` VARCHAR(100) DEFAULT NULL, `MDM_TOKEN` VARCHAR(100) DEFAULT NULL,
@ -18,7 +18,7 @@
`ICCID` VARCHAR(45) DEFAULT NULL, `ICCID` VARCHAR(45) DEFAULT NULL,
`LATITUDE` VARCHAR(45) DEFAULT NULL, `LATITUDE` VARCHAR(45) DEFAULT NULL,
`LONGITUDE` VARCHAR(45) DEFAULT NULL, `LONGITUDE` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`DEVICE_ID`) PRIMARY KEY (`MOBILE_DEVICE_ID`)
); );
-- ----------------------------------------------------- -- -----------------------------------------------------

@ -13,7 +13,7 @@ CREATE TABLE IOS_FEATURE (
-- Table `IOS_DEVICE` -- Table `IOS_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IOS_DEVICE ( CREATE TABLE IOS_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL, MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
APNS_PUSH_TOKEN VARCHAR(100) NULL DEFAULT NULL, APNS_PUSH_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MAGIC_TOKEN VARCHAR(100) NULL DEFAULT NULL, MAGIC_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MDM_TOKEN VARCHAR(100) NULL DEFAULT NULL, MDM_TOKEN VARCHAR(100) NULL DEFAULT NULL,
@ -29,5 +29,5 @@ CREATE TABLE IOS_FEATURE (
ICCID VARCHAR(45) NULL DEFAULT NULL, ICCID VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL, LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL, LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (DEVICE_ID) PRIMARY KEY (MOBILE_DEVICE_ID)
); );

@ -2,7 +2,7 @@
-- Table `IOS_DEVICE` -- Table `IOS_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IOS_DEVICE` ( CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL, `MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL,
`APNS_PUSH_TOKEN` VARCHAR(100) NULL DEFAULT NULL, `APNS_PUSH_TOKEN` VARCHAR(100) NULL DEFAULT NULL,
`MAGIC_TOKEN` VARCHAR(100) NULL DEFAULT NULL, `MAGIC_TOKEN` VARCHAR(100) NULL DEFAULT NULL,
`MDM_TOKEN` VARCHAR(100) NULL DEFAULT NULL, `MDM_TOKEN` VARCHAR(100) NULL DEFAULT NULL,
@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS `IOS_DEVICE` (
`ICCID` VARCHAR(45) NULL DEFAULT NULL, `ICCID` VARCHAR(45) NULL DEFAULT NULL,
`LATITUDE` VARCHAR(45) NULL DEFAULT NULL, `LATITUDE` VARCHAR(45) NULL DEFAULT NULL,
`LONGITUDE` VARCHAR(45) NULL DEFAULT NULL, `LONGITUDE` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`DEVICE_ID`) PRIMARY KEY (`MOBILE_DEVICE_ID`)
) ENGINE = InnoDB; ) ENGINE = InnoDB;
-- ----------------------------------------------------- -- -----------------------------------------------------

@ -2,7 +2,7 @@
-- Table `IOS_DEVICE` -- Table `IOS_DEVICE`
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IOS_DEVICE ( CREATE TABLE IOS_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL, MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
APNS_PUSH_TOKEN VARCHAR(100) DEFAULT NULL, APNS_PUSH_TOKEN VARCHAR(100) DEFAULT NULL,
MAGIC_TOKEN VARCHAR(100) DEFAULT NULL, MAGIC_TOKEN VARCHAR(100) DEFAULT NULL,
MDM_TOKEN VARCHAR(100) DEFAULT NULL, MDM_TOKEN VARCHAR(100) DEFAULT NULL,
@ -18,7 +18,7 @@
ICCID VARCHAR(45) DEFAULT NULL, ICCID VARCHAR(45) DEFAULT NULL,
LATITUDE VARCHAR(45) DEFAULT NULL, LATITUDE VARCHAR(45) DEFAULT NULL,
LONGITUDE VARCHAR(45) DEFAULT NULL, LONGITUDE VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (DEVICE_ID) PRIMARY KEY (MOBILE_DEVICE_ID)
); );
/ /

@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS IOS_FEATURE (
-- Table IOS_DEVICE -- Table IOS_DEVICE
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS IOS_DEVICE ( CREATE TABLE IF NOT EXISTS IOS_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL, MOBILE_DEVICE_ID VARCHAR(45) NOT NULL,
APNS_PUSH_TOKEN VARCHAR(100) NULL DEFAULT NULL, APNS_PUSH_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MAGIC_TOKEN VARCHAR(100) NULL DEFAULT NULL, MAGIC_TOKEN VARCHAR(100) NULL DEFAULT NULL,
MDM_TOKEN VARCHAR(100) NULL DEFAULT NULL, MDM_TOKEN VARCHAR(100) NULL DEFAULT NULL,
@ -29,5 +29,5 @@ CREATE TABLE IF NOT EXISTS IOS_DEVICE (
ICCID VARCHAR(45) NULL DEFAULT NULL, ICCID VARCHAR(45) NULL DEFAULT NULL,
LATITUDE VARCHAR(45) NULL DEFAULT NULL, LATITUDE VARCHAR(45) NULL DEFAULT NULL,
LONGITUDE VARCHAR(45) NULL DEFAULT NULL, LONGITUDE VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (DEVICE_ID) PRIMARY KEY (MOBILE_DEVICE_ID)
); );

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

@ -1,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…
Cancel
Save