diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileFeaturePropertyDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileFeaturePropertyDAO.java deleted file mode 100644 index 51a6cef28..000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/MobileFeaturePropertyDAO.java +++ /dev/null @@ -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 getFeaturePropertiesOfFeature(Integer mblFeatureId) - throws MobileDeviceManagementDAOException; - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/impl/MobileFeaturePropertyDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/impl/MobileFeaturePropertyDAOImpl.java deleted file mode 100644 index e3edfc324..000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/dao/impl/MobileFeaturePropertyDAOImpl.java +++ /dev/null @@ -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 getFeaturePropertiesOfFeature(Integer mblFeatureId) - throws MobileDeviceManagementDAOException { - Connection conn = null; - PreparedStatement stmt = null; - MobileFeatureProperty mobileFeatureProperty; - List FeatureProperties = new ArrayList(); - 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); - } - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/dao/AndroidDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/dao/AndroidDAOFactory.java index 1eaa717af..c96bbf437 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/dao/AndroidDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/dao/AndroidDAOFactory.java @@ -48,10 +48,6 @@ public class AndroidDAOFactory extends AbstractMobileDeviceManagementDAOFactory return new AndroidFeatureDAOImpl(); } - public MobileFeaturePropertyDAO getFeaturePropertyDAO() { - return null; - } - public static void beginTransaction() throws MobileDeviceManagementDAOException { try { Connection conn = dataSource.getConnection(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManager.java index 18e9d6360..106b1def7 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManager.java @@ -57,11 +57,16 @@ public class WindowsDeviceManager implements DeviceManager { public WindowsDeviceManager() { this.daoFactory = new WindowsDAOFactory(); this.licenseManager = new RegistryBasedLicenseManager(); + License defaultLicense = WindowsPluginUtils.getDefaultLicense(); + try { licenseManager.addLicense(WindowsDeviceManagementService.DEVICE_TYPE_WINDOWS, defaultLicense); + featureManager.addSupportedFeaturesToDB(); } catch (LicenseManagementException 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); } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsFeatureManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsFeatureManager.java index 889d40f26..0dca8b5d6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsFeatureManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsFeatureManager.java @@ -1,29 +1,26 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, - * 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 + * 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. - * + * 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; -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.Feature; 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.MobileDeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.mobile.dao.MobileFeatureDAO; @@ -37,7 +34,6 @@ import java.util.List; public class WindowsFeatureManager implements FeatureManager { private MobileFeatureDAO featureDAO; - private static final Log log = LogFactory.getLog(WindowsFeatureManager.class); public WindowsFeatureManager() { MobileDeviceManagementDAOFactory daoFactory = new WindowsDAOFactory(); @@ -47,30 +43,49 @@ public class WindowsFeatureManager implements FeatureManager { @Override public boolean addFeature(Feature feature) throws DeviceManagementException { try { - WindowsDAOFactory.beginTransaction(); + WindowsDAOFactory.beginTransaction(); MobileFeature mobileFeature = MobileDeviceManagementUtil.convertToMobileFeature(feature); featureDAO.addFeature(mobileFeature); - WindowsDAOFactory.commitTransaction(); + WindowsDAOFactory.commitTransaction(); return true; } catch (MobileDeviceManagementDAOException e) { - WindowsDAOFactory.rollbackTransaction(); + WindowsDAOFactory.rollbackTransaction(); throw new DeviceManagementException("Error occurred while adding the feature", e); + } finally { + WindowsDAOFactory.closeConnection(); } } @Override - public boolean addFeatures(List list) throws DeviceManagementException { - return false; + public boolean addFeatures(List features) throws DeviceManagementException { + List mobileFeatures = new ArrayList(); + 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 public Feature getFeature(String name) throws DeviceManagementException { try { + WindowsDAOFactory.openConnection(); MobileFeature mobileFeature = featureDAO.getFeatureByCode(name); - Feature feature = MobileDeviceManagementUtil.convertToFeature(mobileFeature); + Feature feature = MobileDeviceManagementUtil.convertToFeature(mobileFeature); return feature; } catch (MobileDeviceManagementDAOException e) { throw new DeviceManagementException("Error occurred while retrieving the feature", e); + } finally { + WindowsDAOFactory.closeConnection(); } } @@ -79,6 +94,7 @@ public class WindowsFeatureManager implements FeatureManager { List featureList = new ArrayList(); try { + WindowsDAOFactory.openConnection(); List mobileFeatures = featureDAO.getAllFeatures(); for (MobileFeature mobileFeature : mobileFeatures) { featureList.add(MobileDeviceManagementUtil.convertToFeature(mobileFeature)); @@ -86,7 +102,9 @@ public class WindowsFeatureManager implements FeatureManager { return featureList; } catch (MobileDeviceManagementDAOException e) { throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + - "Android platform", e); + "Windows platform", e); + } finally { + WindowsDAOFactory.closeConnection(); } } @@ -94,20 +112,85 @@ public class WindowsFeatureManager implements FeatureManager { public boolean removeFeature(String code) throws DeviceManagementException { boolean status; try { - WindowsDAOFactory.beginTransaction(); + WindowsDAOFactory.beginTransaction(); featureDAO.deleteFeatureByCode(code); - WindowsDAOFactory.commitTransaction(); + WindowsDAOFactory.commitTransaction(); status = true; } catch (MobileDeviceManagementDAOException e) { - WindowsDAOFactory.rollbackTransaction(); + WindowsDAOFactory.rollbackTransaction(); throw new DeviceManagementException("Error occurred while removing the feature", e); + } finally { + WindowsDAOFactory.closeConnection(); } return status; } @Override public boolean addSupportedFeaturesToDB() throws DeviceManagementException { - return false; + synchronized (this) { + List supportedFeatures = getSupportedFeatures(); + List existingFeatures = this.getFeatures(); + List missingFeatures = MobileDeviceManagementUtil. + getMissingFeatures(supportedFeatures, existingFeatures); + if (missingFeatures.size() > 0) { + return this.addFeatures(missingFeatures); + } + return true; + } } -} \ No newline at end of file + /** + * Get supported Windows features. + * + * @return Supported features. + */ + public static List getSupportedFeatures() { + List supportedFeatures = new ArrayList(); + 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; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsDAOFactory.java index ad2af0445..40f8cc46e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsDAOFactory.java @@ -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.LogFactory; 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.WindowsFeatureDAOImpl; import javax.sql.DataSource; import java.sql.Connection; @@ -45,7 +49,7 @@ public class WindowsDAOFactory extends AbstractMobileDeviceManagementDAOFactory @Override public MobileFeatureDAO getMobileFeatureDAO() { - return null; + return new WindowsFeatureDAOImpl(); } 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); } } - } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsFeatureManagementDAOException.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsFeatureManagementDAOException.java new file mode 100644 index 000000000..5444fd223 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/WindowsFeatureManagementDAOException.java @@ -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; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/impl/WindowsFeatureDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/impl/WindowsFeatureDAOImpl.java new file mode 100644 index 000000000..da1bdfa47 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/dao/impl/WindowsFeatureDAOImpl.java @@ -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 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 getFeatureByDeviceType(String deviceType) throws MobileDeviceManagementDAOException { + return this.getAllFeatures(); + } + + @Override + public List getAllFeatures() throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn; + List 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); + } + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/util/WindowsPluginConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/util/WindowsPluginConstants.java index 853e5d435..e13b4642d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/util/WindowsPluginConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/util/WindowsPluginConstants.java @@ -38,4 +38,11 @@ public class WindowsPluginConstants { public static final String MAC_ADDRESS = "MAC_ADDRESS"; 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"; + + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileFeatureDAOTestSuite.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileFeatureDAOTestSuite.java deleted file mode 100644 index 02f66bf04..000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileFeatureDAOTestSuite.java +++ /dev/null @@ -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 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 "); - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileFeaturePropertyDAOTestSuite.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileFeaturePropertyDAOTestSuite.java deleted file mode 100644 index 5c0c296a3..000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileFeaturePropertyDAOTestSuite.java +++ /dev/null @@ -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 propertyList = new ArrayList(); - //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 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 "); - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/resources/testng.xml index 68f54744a..f73ab880b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/resources/testng.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/test/resources/testng.xml @@ -24,13 +24,4 @@ - - - - - - - - - \ No newline at end of file diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mssql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mssql.sql index c905c89a4..4bcd1e3db 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mssql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mssql.sql @@ -1,7 +1,7 @@ -- ----------------------------------------------------- -- Table `WINDOWS_FEATURE` -- ----------------------------------------------------- -CREATE TABLE WINDOWS_FEATURE ( +CREATE TABLE WIN_FEATURE ( ID INT NOT NULL IDENTITY, CODE VARCHAR(45) NOT NULL, NAME VARCHAR(100) NULL, @@ -12,7 +12,7 @@ CREATE TABLE WINDOWS_FEATURE ( -- ----------------------------------------------------- -- Table `WINDOWS_DEVICE` -- ----------------------------------------------------- - CREATE TABLE WINDOWS_DEVICE ( + CREATE TABLE WIN_DEVICE ( DEVICE_ID VARCHAR(45) NOT NULL, CHANNEL_URI VARCHAR(100) NULL DEFAULT NULL, DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL, diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mysql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mysql.sql index ecdacf5b9..347f1ad2e 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mysql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/mysql.sql @@ -31,18 +31,5 @@ CREATE TABLE IF NOT EXISTS `WIN_FEATURE` ( PRIMARY KEY (`FEATURE_ID`)) 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; diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/oracle.sql b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/oracle.sql index 952b4d817..8a96b7947 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/oracle.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/oracle.sql @@ -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` -- ----------------------------------------------------- diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/postgresql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/postgresql.sql index 45754d06f..865f30682 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/postgresql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/dbscripts/plugins/windows/postgresql.sql @@ -30,16 +30,3 @@ CREATE TABLE IF NOT EXISTS WIN_FEATURE ( 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 -);