diff --git a/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/org.wso2.orbit.org.geotools.gt-geojson/pom.xml b/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/org.wso2.orbit.org.geotools.gt-geojson/pom.xml index 2fa31c7b51..dc71eafada 100644 --- a/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/org.wso2.orbit.org.geotools.gt-geojson/pom.xml +++ b/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/org.wso2.orbit.org.geotools.gt-geojson/pom.xml @@ -57,7 +57,6 @@ org.apache.felix maven-bundle-plugin - 2.3.7 true diff --git a/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/pom.xml b/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/pom.xml index 46ce208cb9..707f05a5e4 100644 --- a/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/pom.xml +++ b/components/extensions/siddhi-extensions/org.wso2.gpl.siddhi.extension.geo.script/src/main/resources/scripts/gpl-siddhi-geo-extention/pom.xml @@ -203,7 +203,6 @@ org.apache.felix maven-bundle-plugin - 2.3.7 true diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/operation-bar.hbs b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/operation-bar.hbs index 9bf60dd44b..df84b7e508 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/operation-bar.hbs +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/operation-bar.hbs @@ -101,9 +101,9 @@ {{#equal this.type "select"}}
{{/equal}} diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/js/operation-bar.js b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/js/operation-bar.js index de213aebb5..3482f2da5f 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/js/operation-bar.js +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/js/operation-bar.js @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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. + */ + /* * On operation click function. * @param selection: Selected operation @@ -115,41 +133,41 @@ function submitForm(formId) { $('#' + formId + " .lbl-execution").removeClass("hidden"); var form = $("#" + formId); var uri = form.attr("action"); - var deviceId = form.data("device-id"); + var deviceIdList = form.data("device-id"); var contentType = form.data("content-type"); var operationCode = form.data("operation-code"); - var uriencodedQueryStr = ""; - var uriencodedFormStr = ""; + var uriEncodedQueryStr = ""; + var uriEncodedFormStr = ""; var payload = {}; form.find("input").each(function () { var input = $(this); - if (input.data("param-type") == "path") { + var prefix; + if (input.data("param-type") === "path") { uri = uri.replace("{" + input.attr("id") + "}", input.val()); - } else if (input.data("param-type") == "query") { - var prefix = (uriencodedQueryStr == "") ? "?" : "&"; - uriencodedQueryStr += prefix + input.attr("id") + "=" + input.val(); - } else if (input.data("param-type") == "form") { - var prefix = (uriencodedFormStr == "") ? "" : "&"; - uriencodedFormStr += prefix + input.attr("id") + "=" + input.val(); - if (input.attr("type") == "text" || input.attr("type") == "password") { + } else if (input.data("param-type") === "query") { + prefix = !uriEncodedQueryStr ? "?" : "&"; + uriEncodedQueryStr += prefix + input.attr("id") + "=" + input.val(); + } else if (input.data("param-type") === "form") { + prefix = !uriEncodedFormStr ? "" : "&"; + uriEncodedFormStr += prefix + input.attr("id") + "=" + input.val(); + if (input.attr("type") === "text" || input.attr("type") === "password") { payload[input.attr("id")] = input.val(); - } else if (input.attr("type") == "checkbox") { + } else if (input.attr("type") === "checkbox") { payload[input.attr("id")] = input.is(":checked"); - } else if (input.attr("type") == "radio") { + } else if (input.attr("type") === "radio") { payload[input.attr("id")] = input.is(":checked"); } } }); - uri += uriencodedQueryStr; + uri += uriEncodedQueryStr; var httpMethod = form.attr("method").toUpperCase(); - //var contentType = form.attr("enctype"); - var validaterString = validatePayload(operationCode, payload); + var validateString = validatePayload(operationCode, payload); - if (validaterString == "OK") { + if (validateString === "OK") { - if (contentType == undefined || contentType == "") { + if (!contentType) { contentType = "application/x-www-form-urlencoded"; - payload = uriencodedFormStr; + payload = uriEncodedFormStr; } //setting responses callbacks @@ -179,7 +197,7 @@ function submitForm(formId) { // console.log(response); title.html("An Error Occurred!"); statusIcon.attr("class", defaultStatusClasses + " fw-error"); - var reason = (response.responseText == "null") ? response.statusText : response.responseText; + var reason = (response.responseText === "null") ? response.statusText : response.responseText; try { reason = JSON.parse(reason).message; } catch (err) { @@ -191,15 +209,15 @@ function submitForm(formId) { $(modalPopupContent).html(content.html()); }; //executing http request - if (httpMethod == "GET") { + if (httpMethod === "GET") { invokerUtil.get(uri, successCallBack, errorCallBack, contentType); - } else if (httpMethod == "POST") { - var deviceList = [deviceId]; + } else if (httpMethod === "POST") { + var deviceList = deviceIdList.split(","); payload = generatePayload(operationCode, payload, deviceList); invokerUtil.post(uri, payload, successCallBack, errorCallBack, contentType); - } else if (httpMethod == "PUT") { + } else if (httpMethod === "PUT") { invokerUtil.put(uri, payload, successCallBack, errorCallBack, contentType); - } else if (httpMethod == "DELETE") { + } else if (httpMethod === "DELETE") { invokerUtil.delete(uri, successCallBack, errorCallBack, contentType); } else { title.html("An Error Occurred!"); @@ -210,7 +228,7 @@ function submitForm(formId) { } } else { resetLoader(formId); - $(".modal #operation-error-msg span").text(validaterString); + $(".modal #operation-error-msg span").text(validateString); $(".modal #operation-error-msg").removeClass("hidden"); } } @@ -476,7 +494,7 @@ var generatePayload = function (operationCode, operationData, deviceList) { break; case androidOperationConstants["SYSTEM_UPDATE_POLICY_CODE"]: operationType = operationTypeConstants["PROFILE"]; - if (operationData["cosuSystemUpdatePolicyType"] != "window") { + if (operationData["cosuSystemUpdatePolicyType"] !== "window") { payload = { "operation": { "type": operationData["cosuSystemUpdatePolicyType"] @@ -516,7 +534,7 @@ var generatePayload = function (operationCode, operationData, deviceList) { payload = deviceList; } - if (operationType == operationTypeConstants["PROFILE"] && deviceList) { + if (operationType === operationTypeConstants["PROFILE"] && deviceList) { payload["deviceIDs"] = deviceList; } return payload; diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/templates/operation-bar.hbs b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/templates/operation-bar.hbs new file mode 100644 index 0000000000..2fd7b7990c --- /dev/null +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-bar/public/templates/operation-bar.hbs @@ -0,0 +1,184 @@ +{{! + Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + + Entgra (Pvt) Ltd. 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. +}} +{{#if controlOperations}} +
+ + {{#each controlOperations}} + + {{#if iconFont}} + + {{else}} + {{#if icon}} + + {{else}} + + {{/if}} + {{/if}} + {{name}} + + +
+
+ +
+
+

+ + + + + {{name}} +
+

+

+ {{description}} +
+

+ + + + + +
+
+ {{#each params.0.pathParams}} + +
+ {{/each}} + {{#each params.0.formParams}} + +
+ {{/each}} + {{#each params.0.queryParams}} + +
+ {{/each}} + {{#each uiParams}} + {{#equal this.type "select"}} +
+ +
+ {{/equal}} + {{#equal this.type "radio"}} + + {{this.value}} + {{/equal}} + {{#equal this.type "checkbox"}} + + {{this.label}} +
+ {{/equal}} + {{#equal this.type "password"}} + +
+ {{/equal}} + {{#equal this.type "text"}} + +
+ {{/equal}} + {{#equal this.type "info"}} +
+ + {{this.value}} + +
+ {{/equal}} + {{/each}} + + + + +
+
+
+
+
+
+ {{/each}} +
+{{/if}} + + diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml index 6cbb373d04..20c5949e81 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml @@ -46,7 +46,6 @@ org.apache.felix maven-bundle-plugin - 1.4.0 true diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidFeatureManager.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidFeatureManager.java index 6af4e16ab6..f2f17fba88 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidFeatureManager.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidFeatureManager.java @@ -16,8 +16,28 @@ * under the License. * */ + +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.android.impl; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.DeviceManagementException; @@ -32,6 +52,7 @@ import org.wso2.carbon.device.mgt.mobile.android.impl.util.MobileDeviceManagemen import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class AndroidFeatureManager implements FeatureManager { @@ -97,14 +118,43 @@ public class AndroidFeatureManager implements FeatureManager { public List getFeatures() throws DeviceManagementException { try { List mobileFeatures = featureDAO.getAllFeatures(); - List featureList = new ArrayList(mobileFeatures.size()); - for (MobileFeature mobileFeature : mobileFeatures) { - featureList.add(MobileDeviceManagementUtil.convertToFeature(mobileFeature)); + return mobileFeatures.stream().map(MobileDeviceManagementUtil::convertToFeature).collect( + Collectors.toList()); + } catch (MobileDeviceManagementDAOException e) { + throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + + "Android platform", e); + } + } + + @Override + public List getFeatures(String featureType) throws DeviceManagementException { + if (StringUtils.isEmpty(featureType)) { + return this.getFeatures(); + } + try { + List mobileFeatures = featureDAO.getFeaturesByFeatureType(featureType); + return mobileFeatures.stream().map(MobileDeviceManagementUtil::convertToFeature).collect( + Collectors.toList()); + } catch (MobileDeviceManagementDAOException e) { + throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + + "Android platform", e); + } + } + + @Override + public List getFeatures(String featureType, boolean isHidden) throws DeviceManagementException { + try { + List mobileFeatures; + if (StringUtils.isNotEmpty(featureType)) { + mobileFeatures = featureDAO.getFeaturesByFeatureType(featureType, isHidden); + } else { + mobileFeatures = featureDAO.getAllFeatures(isHidden); } - return featureList; + return mobileFeatures.stream().map(MobileDeviceManagementUtil::convertToFeature).collect( + Collectors.toList()); } catch (MobileDeviceManagementDAOException e) { throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + - "Android platform", e); + "Android platform", e); } } diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/MobileFeatureDAO.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/MobileFeatureDAO.java index b9a4d72af6..aba4c13b3b 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/MobileFeatureDAO.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/MobileFeatureDAO.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.android.impl.dao; import org.wso2.carbon.device.mgt.mobile.android.impl.dto.MobileFeature; @@ -107,4 +125,32 @@ public interface MobileFeatureDAO { * @throws MobileDeviceManagementDAOException */ List getAllFeatures() throws MobileDeviceManagementDAOException; + + /** + * Get all the MobileFeatures by a given ui visibility + * + * @param isHidden Whether the operation is hidden from UI or not. + * @return {@link MobileFeature} object list. + * @throws MobileDeviceManagementDAOException If an error occurred while retrieving the Feature list + */ + List getAllFeatures(boolean isHidden) throws MobileDeviceManagementDAOException; + + /** + * Retrieve all MobileFeatures of a given feature type + * + * @param featureType Feature type. + * @return {@link MobileFeature} object list. + * @throws MobileDeviceManagementDAOException If an error occurred while retrieving the Feature list + */ + List getFeaturesByFeatureType(String featureType) throws MobileDeviceManagementDAOException; + + /** + * Retrieve all MobileFeatures of a given feature type and ui visibility + * + * @param featureType Feature type. + * @param isHidden Whether the operation is hidden from UI or not. + * @return {@link MobileFeature} object list. + * @throws MobileDeviceManagementDAOException If an error occurred while retrieving the Feature list + */ + List getFeaturesByFeatureType(String featureType, boolean isHidden) throws MobileDeviceManagementDAOException; } diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/AndroidFeatureDAOImpl.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/AndroidFeatureDAOImpl.java index 7a6de77b5d..2d9fe21d05 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/AndroidFeatureDAOImpl.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/AndroidFeatureDAOImpl.java @@ -16,6 +16,25 @@ * under the License. * */ + +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.android.impl.dao.impl; import org.apache.commons.logging.Log; @@ -51,17 +70,19 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { Connection conn; try { conn = AndroidDAOFactory.getConnection(); - String sql = "INSERT INTO AD_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)"; + String sql = "INSERT INTO AD_FEATURE(CODE, NAME, TYPE, HIDDEN, DESCRIPTION) VALUES (?, ?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, mobileFeature.getCode()); stmt.setString(2, mobileFeature.getName()); - stmt.setString(3, mobileFeature.getDescription()); + stmt.setString(3, mobileFeature.getType()); + stmt.setBoolean(4, mobileFeature.isHidden()); + stmt.setString(5, mobileFeature.getDescription()); stmt.executeUpdate(); status = true; } catch (SQLException e) { throw new AndroidFeatureManagementDAOException( "Error occurred while adding android feature '" + - mobileFeature.getName() + "' into the metadata repository", e); + mobileFeature.getName() + "' into the metadata repository", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, null); } @@ -71,28 +92,27 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { @Override public boolean addFeatures(List mobileFeatures) throws MobileDeviceManagementDAOException { PreparedStatement stmt = null; - MobileFeature mobileFeature; - boolean status = false; Connection conn; try { conn = AndroidDAOFactory.getConnection(); - stmt = conn.prepareStatement("INSERT INTO AD_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)"); - for (int i = 0; i < mobileFeatures.size(); i++) { - mobileFeature = mobileFeatures.get(i); + stmt = conn.prepareStatement("INSERT INTO AD_FEATURE(CODE, NAME, TYPE, HIDDEN, DESCRIPTION) " + + "VALUES (?, ?, ?, ?, ?)"); + for (MobileFeature mobileFeature : mobileFeatures) { stmt.setString(1, mobileFeature.getCode()); stmt.setString(2, mobileFeature.getName()); - stmt.setString(3, mobileFeature.getDescription()); + stmt.setString(3, mobileFeature.getType()); + stmt.setBoolean(4, mobileFeature.isHidden()); + stmt.setString(5, mobileFeature.getDescription()); stmt.addBatch(); } stmt.executeBatch(); - status = true; + return true; } catch (SQLException e) { throw new AndroidFeatureManagementDAOException( "Error occurred while adding android features into the metadata repository", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, null); } - return status; } @Override @@ -103,25 +123,27 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { try { conn = AndroidDAOFactory.getConnection(); String updateDBQuery = - "UPDATE AD_FEATURE SET NAME = ?, DESCRIPTION = ?" + - "WHERE CODE = ?"; + "UPDATE AD_FEATURE SET NAME = ?, TYPE = ?, HIDDEN = ? ,DESCRIPTION = ?" + + "WHERE CODE = ?"; stmt = conn.prepareStatement(updateDBQuery); stmt.setString(1, mobileFeature.getName()); - stmt.setString(2, mobileFeature.getDescription()); - stmt.setString(3, mobileFeature.getCode()); + stmt.setString(2, mobileFeature.getType()); + stmt.setBoolean(3, mobileFeature.isHidden()); + stmt.setString(4, mobileFeature.getDescription()); + stmt.setString(5, mobileFeature.getCode()); int rows = stmt.executeUpdate(); if (rows > 0) { status = true; if (log.isDebugEnabled()) { log.debug("Android Feature " + mobileFeature.getCode() + " data has been " + - "modified."); + "modified."); } } } catch (SQLException e) { String msg = "Error occurred while updating the Android Feature '" + - mobileFeature.getCode() + "' to the Android db."; + mobileFeature.getCode() + "' to the Android db."; log.error(msg, e); throw new AndroidFeatureManagementDAOException(msg, e); } finally { @@ -146,7 +168,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { } catch (SQLException e) { throw new AndroidFeatureManagementDAOException( "Error occurred while deleting android feature '" + - mblFeatureId + "' from Android database.", e); + mblFeatureId + "' from Android database.", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, null); } @@ -156,7 +178,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { @Override public boolean deleteFeatureByCode(String mblFeatureCode) throws MobileDeviceManagementDAOException { PreparedStatement stmt = null; - boolean status = false; + boolean status; Connection conn; try { conn = AndroidDAOFactory.getConnection(); @@ -168,7 +190,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { } catch (SQLException e) { throw new AndroidFeatureManagementDAOException( "Error occurred while deleting android feature '" + - mblFeatureCode + "' from Android database.", e); + mblFeatureCode + "' from Android database.", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, null); } @@ -182,7 +204,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { Connection conn; try { conn = AndroidDAOFactory.getConnection(); - String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE ID = ?"; + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM AD_FEATURE WHERE ID = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, mblFeatureId); rs = stmt.executeQuery(); @@ -193,8 +215,10 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { mobileFeature.setId(rs.getInt(AndroidPluginConstants.ANDROID_FEATURE_ID)); mobileFeature.setCode(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_CODE)); mobileFeature.setName(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_NAME)); + mobileFeature.setType(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_TYPE)); + mobileFeature.setHidden(rs.getBoolean(AndroidPluginConstants.ANDROID_FEATURE_HIDDEN)); mobileFeature.setDescription(rs.getString(AndroidPluginConstants. - ANDROID_FEATURE_DESCRIPTION)); + ANDROID_FEATURE_DESCRIPTION)); mobileFeature.setDeviceType( DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); } @@ -202,7 +226,7 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { } catch (SQLException e) { throw new AndroidFeatureManagementDAOException( "Error occurred while retrieving android feature '" + - mblFeatureId + "' from the Android database.", e); + mblFeatureId + "' from the Android database.", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); AndroidDAOFactory.closeConnection(); @@ -217,27 +241,20 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { try { conn = AndroidDAOFactory.getConnection(); - String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE WHERE CODE = ?"; + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM AD_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(AndroidPluginConstants.ANDROID_FEATURE_ID)); - mobileFeature.setCode(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_CODE)); - mobileFeature.setName(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_NAME)); - mobileFeature.setDescription(rs.getString(AndroidPluginConstants. - ANDROID_FEATURE_DESCRIPTION)); - mobileFeature.setDeviceType( - DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); + mobileFeature = populateMobileFeature(rs); } return mobileFeature; } catch (SQLException e) { throw new AndroidFeatureManagementDAOException( "Error occurred while retrieving android feature '" + - mblFeatureCode + "' from the Android database.", e); + mblFeatureCode + "' from the Android database.", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); AndroidDAOFactory.closeConnection(); @@ -258,28 +275,123 @@ public class AndroidFeatureDAOImpl implements MobileFeatureDAO { List features = new ArrayList<>(); try { conn = AndroidDAOFactory.getConnection(); - String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM AD_FEATURE"; + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM AD_FEATURE"; stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); - MobileFeature mobileFeature = null; while (rs.next()) { - mobileFeature = new MobileFeature(); - mobileFeature.setId(rs.getInt(AndroidPluginConstants.ANDROID_FEATURE_ID)); - mobileFeature.setCode(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_CODE)); - mobileFeature.setName(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_NAME)); - mobileFeature.setDescription(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_DESCRIPTION)); - mobileFeature.setDeviceType( - DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); - features.add(mobileFeature); + features.add(populateMobileFeature(rs)); } return features; } catch (SQLException e) { - throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all " + - "android features from the android database.", e); + throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all android features " + + "from the android database.", e); } finally { MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); AndroidDAOFactory.closeConnection(); } } + + @Override + public List getAllFeatures(boolean isHidden) throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn = null; + List features = new ArrayList<>(); + try { + conn = AndroidDAOFactory.getConnection(); + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM AD_FEATURE WHERE HIDDEN = ?"; + stmt = conn.prepareStatement(sql); + stmt.setBoolean(1, isHidden); + rs = stmt.executeQuery(); + + while (rs.next()) { + features.add(populateMobileFeature(rs)); + } + return features; + } catch (SQLException e) { + throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all android features " + + "from the android database.", e); + } finally { + MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); + AndroidDAOFactory.closeConnection(); + } + } + + @Override + public List getFeaturesByFeatureType(String featureType) throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn; + List features = new ArrayList<>(); + try { + conn = AndroidDAOFactory.getConnection(); + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM AD_FEATURE WHERE TYPE = ?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, featureType); + rs = stmt.executeQuery(); + + while (rs.next()) { + features.add(populateMobileFeature(rs)); + } + return features; + } catch (SQLException e) { + throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all android features of " + + "type " + featureType + " from the android database.", e); + } finally { + MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); + AndroidDAOFactory.closeConnection(); + } + } + + @Override + public List getFeaturesByFeatureType(String featureType, boolean isHidden) throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn; + List features = new ArrayList<>(); + try { + conn = AndroidDAOFactory.getConnection(); + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION " + + "FROM AD_FEATURE " + + "WHERE TYPE = ? AND HIDDEN = ?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, featureType); + stmt.setBoolean(2, isHidden); + rs = stmt.executeQuery(); + + while (rs.next()) { + features.add(populateMobileFeature(rs)); + } + return features; + } catch (SQLException e) { + throw new AndroidFeatureManagementDAOException("Error occurred while retrieving all android features of " + + "[type: " + featureType + " & hidden: " + isHidden + "] from the android database.", e); + } finally { + MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); + AndroidDAOFactory.closeConnection(); + } + } + + /** + * Generate {@link MobileFeature} from the SQL {@link ResultSet} + * + * @param rs Result set + * @return populated {@link MobileFeature} + * @throws SQLException if unable to extract data from {@link ResultSet} + */ + private MobileFeature populateMobileFeature(ResultSet rs) throws SQLException { + MobileFeature mobileFeature = new MobileFeature(); + mobileFeature.setId(rs.getInt(AndroidPluginConstants.ANDROID_FEATURE_ID)); + mobileFeature.setCode(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_CODE)); + mobileFeature.setName(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_NAME)); + mobileFeature.setDescription(rs.getString(AndroidPluginConstants. + ANDROID_FEATURE_DESCRIPTION)); + mobileFeature.setType(rs.getString(AndroidPluginConstants.ANDROID_FEATURE_TYPE)); + mobileFeature.setHidden(rs.getBoolean(AndroidPluginConstants.ANDROID_FEATURE_HIDDEN)); + mobileFeature.setDeviceType( + DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); + + return mobileFeature; + } } \ No newline at end of file diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/MobileFeatureDAOImpl.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/MobileFeatureDAOImpl.java deleted file mode 100644 index eeade1e6a8..0000000000 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dao/impl/MobileFeatureDAOImpl.java +++ /dev/null @@ -1,336 +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.android.impl.dao.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.mobile.android.impl.dao.MobileDeviceManagementDAOException; -import org.wso2.carbon.device.mgt.mobile.android.impl.dao.MobileFeatureDAO; -import org.wso2.carbon.device.mgt.mobile.android.impl.dao.util.MobileDeviceManagementDAOUtil; -import org.wso2.carbon.device.mgt.mobile.android.impl.dto.MobileFeature; - -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 MobileFeatureDAO. - */ -public class MobileFeatureDAOImpl implements MobileFeatureDAO { - - private DataSource dataSource; - private static final Log log = LogFactory.getLog(MobileFeatureDAOImpl.class); - - public MobileFeatureDAOImpl(DataSource dataSource) { - this.dataSource = dataSource; - } - - @Override - public boolean addFeature(MobileFeature mobileFeature) - throws MobileDeviceManagementDAOException { - boolean status = false; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = this.getConnection(); - String createDBQuery = - "INSERT INTO AD_FEATURE(CODE, NAME, DESCRIPTION, DEVICE_TYPE) VALUES (?, ?, ?, ?)"; - - stmt = conn.prepareStatement(createDBQuery); - stmt.setString(1, mobileFeature.getCode()); - stmt.setString(2, mobileFeature.getName()); - stmt.setString(3, mobileFeature.getDescription()); - stmt.setString(4, mobileFeature.getDeviceType()); - int rows = stmt.executeUpdate(); - if (rows > 0) { - if (log.isDebugEnabled()) { - log.debug("Added a new MobileFeature " + mobileFeature.getCode() + " to the MDM database."); - } - status = true; - } - } catch (SQLException e) { - String msg = "Error occurred while adding feature code - '" + - mobileFeature.getCode() + "' to feature table"; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null); - } - return status; - } - - @Override - public boolean addFeatures(List mobileFeatures) throws MobileDeviceManagementDAOException { - return false; - } - - @Override - public boolean updateFeature(MobileFeature mobileFeature) - throws MobileDeviceManagementDAOException { - boolean status = false; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = this.getConnection(); - String updateDBQuery = - "UPDATE AD_FEATURE SET CODE = ?, NAME = ?, DESCRIPTION = ?, DEVICE_TYPE = ?" + - " WHERE ID = ?"; - stmt = conn.prepareStatement(updateDBQuery); - stmt.setString(1, mobileFeature.getCode()); - stmt.setString(2, mobileFeature.getName()); - stmt.setString(3, mobileFeature.getDescription()); - stmt.setString(4, mobileFeature.getDeviceType()); - stmt.setInt(5, mobileFeature.getId()); - int rows = stmt.executeUpdate(); - if (rows > 0) { - status = true; - if (log.isDebugEnabled()) { - log.debug("Updated MobileFeature " + mobileFeature.getCode()); - } - } - } catch (SQLException e) { - String msg = "Error occurred while updating the feature with feature code - '" + - mobileFeature.getId() + "'"; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null); - } - return status; - } - - @Override - public boolean deleteFeatureByCode(String mblFeatureCode) - throws MobileDeviceManagementDAOException { - boolean status = false; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = this.getConnection(); - String deleteDBQuery = - "DELETE FROM AD_FEATURE WHERE CODE = ?"; - stmt = conn.prepareStatement(deleteDBQuery); - stmt.setString(1, mblFeatureCode); - int rows = stmt.executeUpdate(); - if (rows > 0) { - status = true; - if (log.isDebugEnabled()) { - log.debug("Deleted MobileFeature code " + mblFeatureCode + " from the MDM database."); - } - } - } catch (SQLException e) { - String msg = "Error occurred while deleting feature with code - " + mblFeatureCode; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null); - } - return status; - } - - @Override - public boolean deleteFeatureById(int mblFeatureId) - throws MobileDeviceManagementDAOException { - boolean status = false; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = this.getConnection(); - String deleteDBQuery = - "DELETE FROM AD_FEATURE WHERE ID = ?"; - stmt = conn.prepareStatement(deleteDBQuery); - stmt.setInt(1, mblFeatureId); - int rows = stmt.executeUpdate(); - if (rows > 0) { - status = true; - if (log.isDebugEnabled()) { - log.debug("Deleted MobileFeature id " + mblFeatureId + " from the MDM database."); - } - } - } catch (SQLException e) { - String msg = "Error occurred while deleting feature with id - " + mblFeatureId; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, null); - } - return status; - } - - @Override - public MobileFeature getFeatureByCode(String mblFeatureCode) - throws MobileDeviceManagementDAOException { - Connection conn = null; - PreparedStatement stmt = null; - MobileFeature mobileFeature = null; - ResultSet resultSet = null; - try { - conn = this.getConnection(); - String selectDBQuery = - "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE " + - "WHERE CODE = ?"; - stmt = conn.prepareStatement(selectDBQuery); - stmt.setString(1, mblFeatureCode); - resultSet = stmt.executeQuery(); - if (resultSet.next()) { - mobileFeature = new MobileFeature(); - mobileFeature.setId(resultSet.getInt(1)); - mobileFeature.setCode(resultSet.getString(2)); - mobileFeature.setName(resultSet.getString(3)); - mobileFeature.setDescription(resultSet.getString(4)); - mobileFeature.setDeviceType(resultSet.getString(5)); - if (log.isDebugEnabled()) { - log.debug("Fetched MobileFeature " + mblFeatureCode + " from the MDM database."); - } - } - } catch (SQLException e) { - String msg = "Error occurred while fetching feature code - '" + mblFeatureCode + "'"; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, resultSet); - } - return mobileFeature; - } - - @Override - public MobileFeature getFeatureById(int mblFeatureId) - throws MobileDeviceManagementDAOException { - Connection conn = null; - PreparedStatement stmt = null; - MobileFeature mobileFeature = null; - ResultSet resultSet = null; - try { - conn = this.getConnection(); - String selectDBQuery = - "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE" + - " WHERE ID = ?"; - stmt = conn.prepareStatement(selectDBQuery); - stmt.setInt(1, mblFeatureId); - resultSet = stmt.executeQuery(); - if (resultSet.next()) { - mobileFeature = new MobileFeature(); - mobileFeature.setId(resultSet.getInt(1)); - mobileFeature.setCode(resultSet.getString(2)); - mobileFeature.setName(resultSet.getString(3)); - mobileFeature.setDescription(resultSet.getString(4)); - mobileFeature.setDeviceType(resultSet.getString(5)); - if (log.isDebugEnabled()) { - log.debug("Fetched MobileFeatureId" + mblFeatureId + " from the MDM database."); - } - } - } catch (SQLException e) { - String msg = "Error occurred while fetching feature id - '" + mblFeatureId + "'"; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, resultSet); - } - return mobileFeature; - } - - @Override - public List getAllFeatures() throws MobileDeviceManagementDAOException { - Connection conn = null; - PreparedStatement stmt = null; - MobileFeature mobileFeature; - List mobileFeatures = new ArrayList(); - ResultSet resultSet = null; - try { - conn = this.getConnection(); - String selectDBQuery = - "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE"; - stmt = conn.prepareStatement(selectDBQuery); - resultSet = stmt.executeQuery(); - while (resultSet.next()) { - mobileFeature = new MobileFeature(); - mobileFeature.setId(resultSet.getInt(1)); - mobileFeature.setCode(resultSet.getString(2)); - mobileFeature.setName(resultSet.getString(3)); - mobileFeature.setDescription(resultSet.getString(4)); - mobileFeature.setDeviceType(resultSet.getString(5)); - mobileFeatures.add(mobileFeature); - } - if (log.isDebugEnabled()) { - log.debug("Fetched all MobileFeatures from the MDM database."); - } - return mobileFeatures; - } catch (SQLException e) { - String msg = "Error occurred while fetching all features.'"; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, resultSet); - } - } - - @Override - public List getFeatureByDeviceType(String deviceType) throws MobileDeviceManagementDAOException { - Connection conn = null; - PreparedStatement stmt = null; - MobileFeature mobileFeature; - List mobileFeatures = new ArrayList<>(); - ResultSet resultSet = null; - try { - conn = this.getConnection(); - String selectDBQuery = - "SELECT ID, CODE, NAME, DESCRIPTION, DEVICE_TYPE FROM AD_FEATURE" + - " WHERE DEVICE_TYPE = ?"; - stmt = conn.prepareStatement(selectDBQuery); - stmt.setString(1, deviceType); - resultSet = stmt.executeQuery(); - while (resultSet.next()) { - mobileFeature = new MobileFeature(); - mobileFeature.setId(resultSet.getInt(1)); - mobileFeature.setCode(resultSet.getString(2)); - mobileFeature.setName(resultSet.getString(3)); - mobileFeature.setDescription(resultSet.getString(4)); - mobileFeature.setDeviceType(resultSet.getString(5)); - mobileFeatures.add(mobileFeature); - } - if (log.isDebugEnabled()) { - log.debug("Fetched all MobileFeatures of type " + deviceType + " from the MDM" + - " database."); - } - return mobileFeatures; - } catch (SQLException e) { - String msg = "Error occurred while fetching all features.'"; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } finally { - MobileDeviceManagementDAOUtil.cleanupResources(conn, stmt, resultSet); - } - } - - private Connection getConnection() throws MobileDeviceManagementDAOException { - try { - return dataSource.getConnection(); - } catch (SQLException e) { - String msg = "Error occurred while obtaining a connection from the mobile specific " + - "datasource."; - log.error(msg, e); - throw new MobileDeviceManagementDAOException(msg, e); - } - } - -} diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dto/MobileFeature.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dto/MobileFeature.java index 6568c9d5c9..1778f8560b 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dto/MobileFeature.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/dto/MobileFeature.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.android.impl.dto; import java.io.Serializable; @@ -29,6 +47,8 @@ public class MobileFeature implements Serializable { private String deviceType; private String code; private String name; + private String type; + private boolean hidden; private String description; public int getId() { @@ -55,6 +75,22 @@ public class MobileFeature implements Serializable { this.name = name; } + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean isHidden() { + return hidden; + } + + public void setHidden(boolean hidden) { + this.hidden = hidden; + } + public String getDescription() { return description; } diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/AndroidPluginConstants.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/AndroidPluginConstants.java index 09b278e2c3..a0c7a332da 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/AndroidPluginConstants.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/AndroidPluginConstants.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.android.impl.util; /** @@ -43,6 +61,8 @@ public final class AndroidPluginConstants { public static final String ANDROID_FEATURE_ID = "ID"; public static final String ANDROID_FEATURE_CODE = "CODE"; public static final String ANDROID_FEATURE_NAME = "NAME"; + public static final String ANDROID_FEATURE_TYPE = "TYPE"; + public static final String ANDROID_FEATURE_HIDDEN = "HIDDEN"; public static final String ANDROID_FEATURE_DESCRIPTION = "DESCRIPTION"; public static final class NotifierType { diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/MobileDeviceManagementUtil.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/MobileDeviceManagementUtil.java index 8ac7d95292..376bc0dfff 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/MobileDeviceManagementUtil.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/util/MobileDeviceManagementUtil.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.android.impl.util; import org.apache.commons.logging.Log; @@ -42,10 +60,13 @@ import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Properties; /** * Provides utility methods required by the mobile device management bundle. @@ -205,6 +226,8 @@ public class MobileDeviceManagementUtil { mobileFeature.setCode(feature.getCode()); mobileFeature.setDescription(feature.getDescription()); mobileFeature.setDeviceType(feature.getDeviceType()); + mobileFeature.setType(feature.getType()); + mobileFeature.setHidden(feature.isHidden()); return mobileFeature; } @@ -214,6 +237,8 @@ public class MobileDeviceManagementUtil { feature.setDeviceType(mobileFeature.getDeviceType()); feature.setCode(mobileFeature.getCode()); feature.setName(mobileFeature.getName()); + feature.setType(mobileFeature.getType()); + feature.setHidden(mobileFeature.isHidden()); return feature; } diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.device-view/device-view.hbs b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.device-view/device-view.hbs index b2adb105b0..f1951c4923 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.device-view/device-view.hbs +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.device-view/device-view.hbs @@ -46,7 +46,7 @@

Device Operations

- {{unit "cdmf.unit.device.type.windows.new.operation-bar" device=device + {{unit "cdmf.unit.device.type.windows.operation-bar" device=device backendApiUri=backendApiUri autoCompleteParams=autoCompleteParams}} {{/if}} diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.js b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.js deleted file mode 100644 index 30a8d397f5..0000000000 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2016, 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. - */ - -function onRequest(context) { - var log = new Log("operation.js"); - var operationModule = require("/app/modules/business-controllers/operation.js")["operationModule"]; - var device = context.unit.params.device; - var autoCompleteParams = context.unit.params.autoCompleteParams; - var encodedFeaturePayloads=context.unit.params.encodedFeaturePayloads; - var controlOperations = operationModule.getControlOperations(device); - var queryParams = []; - var formParams = []; - var pathParams = []; - for (var i = 0; i < controlOperations.length; i++) { - var currentParamList = controlOperations[i]["params"]; - var uiParamList = controlOperations[i]["uiParams"]; - for (var j = 0; j < currentParamList.length; j++) { - var currentParam = currentParamList[j]; - currentParamList[j]["formParams"] = processParams(currentParam["formParams"], autoCompleteParams); - currentParamList[j]["queryParams"] = processParams(currentParam["queryParams"], autoCompleteParams); - currentParamList[j]["pathParams"] = processParams(currentParam["pathParams"], autoCompleteParams); - } - controlOperations[i]["uiParams"] = uiParamList; - if (encodedFeaturePayloads) { - controlOperations[i]["payload"] = getPayload(encodedFeaturePayloads, controlOperations[i]["operation"]); - } - } - return {"control_operations": controlOperations, "device": device}; -} - -function processParams(paramsList, autoCompleteParams) { - for (var i = 0; i < paramsList.length; i++) { - var paramName = paramsList[i]; - var paramValue = ""; - var paramType = "text"; - for (var k = 0; k < autoCompleteParams.length; k++) { - if (paramName == autoCompleteParams[k].name) { - paramValue = autoCompleteParams[k].value; - paramType = "hidden"; - } - } - paramsList[i] = {"name": paramName, "value": paramValue, "type": paramType}; - } - return paramsList; -} - -function getPayload(featuresPayload, featureCode){ - var featuresJSONPayloads = JSON.parse(featuresPayload); - return featuresJSONPayloads[featureCode]; -} \ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.json b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.json deleted file mode 100644 index 688e939808..0000000000 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "1.0.0" -} \ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/public/js/operation-bar.js b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/public/js/operation-bar.js deleted file mode 100644 index aa3d69f688..0000000000 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/public/js/operation-bar.js +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2016, 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. - */ - -/* - * On operation click function. - * @param selection: Selected operation - */ -function operationSelect(selection) { - $(modalPopupContent).addClass("operation-data"); - $(modalPopupContent).html($(" .operation[data-operation-code=" + selection + "]").html()); - $(modalPopupContent).data("operation-code", selection); - showPopup(); -} - -function submitForm(formId) { - var form = $("#" + formId); - var uri = form.attr("action"); - var deviceId = form.data("device-id"); - var contentType = form.data("content-type"); - var operationCode = form.data("operation-code"); - var uriencodedQueryStr = ""; - var uriencodedFormStr = ""; - var payload = {}; - form.find("input").each(function () { - var input = $(this); - if (input.data("param-type") == "path") { - uri = uri.replace("{" + input.attr("id") + "}", input.val()); - } else if (input.data("param-type") == "query") { - var prefix = (uriencodedQueryStr == "") ? "?" : "&"; - uriencodedQueryStr += prefix + input.attr("id") + "=" + input.val(); - } else if (input.data("param-type") == "form") { - var prefix = (uriencodedFormStr == "") ? "" : "&"; - uriencodedFormStr += prefix + input.attr("id") + "=" + input.val(); - if(input.attr("type") == "text"){ - payload[input.attr("id")] = input.val(); - } else if(input.attr("type") == "checkbox"){ - payload[input.attr("id")] = input.is(":checked"); - } - } - }); - uri += uriencodedQueryStr; - var httpMethod = form.attr("method").toUpperCase(); - //var contentType = form.attr("enctype"); - - if (contentType == undefined || contentType == "") { - contentType = "application/x-www-form-urlencoded"; - payload = uriencodedFormStr; - } - - //setting responses callbacks - var defaultStatusClasses = "fw fw-stack-1x"; - var content = $("#operation-response-template").find(".content"); - var title = content.find("#title"); - var statusIcon = content.find("#status-icon"); - var description = content.find("#description"); - description.html(""); - var successCallBack = function (response) { - var res = response; - try { - res = JSON.parse(response).messageFromServer; - } catch (err) { - //do nothing - } - title.html("Operation Triggered!"); - statusIcon.attr("class", defaultStatusClasses + " fw-check"); - description.html(res); - console.log("success!"); - $(modalPopupContent).html(content.html()); - }; - var errorCallBack = function (response) { - console.log(response); - title.html("An Error Occurred!"); - statusIcon.attr("class", defaultStatusClasses + " fw-error"); - var reason = (response.responseText == "null")?response.statusText:response.responseText; - try { - reason = JSON.parse(reason).message; - } catch (err) { - //do nothing - } - description.html(reason); - console.log("Error!"); - $(modalPopupContent).html(content.html()); - }; - //executing http request - if (httpMethod == "GET") { - invokerUtil.get(uri, successCallBack, errorCallBack, contentType); - } else if (httpMethod == "POST") { - var deviceList = [deviceId]; - payload = generatePayload(operationCode, payload, deviceList); - invokerUtil.post(uri, payload, successCallBack, errorCallBack, contentType); - } else if (httpMethod == "PUT") { - invokerUtil.put(uri, payload, successCallBack, errorCallBack, contentType); - } else if (httpMethod == "DELETE") { - invokerUtil.delete(uri, successCallBack, errorCallBack, contentType); - } else { - title.html("An Error Occurred!"); - statusIcon.attr("class", defaultStatusClasses + " fw-error"); - description.html("This operation requires http method: " + httpMethod + " which is not supported yet!"); - $(modalPopupContent).html(content.html()); - } -} - -$(document).on('submit', 'form', function (e) { - cosole.log("darn!!"); - e.preventDefault(); - var postOperationRequest = $.ajax({ - url: $(this).attr("action") + '&' + $(this).serialize(), - method: "post" - }); - - var btnSubmit = $('#btnSend', this); - btnSubmit.addClass('hidden'); - - var lblSending = $('#lblSending', this); - lblSending.removeClass('hidden'); - - var lblSent = $('#lblSent', this); - postOperationRequest.done(function (data) { - lblSending.addClass('hidden'); - lblSent.removeClass('hidden'); - setTimeout(function () { - hidePopup(); - }, 3000); - }); - - postOperationRequest.fail(function (jqXHR, textStatus) { - lblSending.addClass('hidden'); - lblSent.addClass('hidden'); - }); -}); - -// Constants to define operation types available -var operationTypeConstants = { - "PROFILE": "profile", - "CONFIG": "config", - "COMMAND": "command" -}; - - -var generatePayload = function (operationCode, operationData, deviceList) { - var payload; - var operationType; - switch (operationCode) { - case windowsOperationConstants["CAMERA_OPERATION_CODE"]: - operationType = operationTypeConstants["PROFILE"]; - payload = { - "operation": { - "enabled": operationData["cameraEnabled"] - } - }; - break; - case windowsOperationConstants["CHANGE_LOCK_CODE_OPERATION_CODE"]: - operationType = operationTypeConstants["PROFILE"]; - payload = { - "operation": { - "lockCode": operationData["lockCode"] - } - }; - break; - case windowsOperationConstants["ENCRYPT_STORAGE_OPERATION_CODE"]: - operationType = operationTypeConstants["PROFILE"]; - payload = { - "operation": { - "encrypted": operationData["encryptStorageEnabled"] - } - }; - break; - case windowsOperationConstants["NOTIFICATION_OPERATION_CODE"]: - operationType = operationTypeConstants["PROFILE"]; - payload = { - "operation": { - "message": operationData["message"] - } - }; - break; - case windowsOperationConstants["PASSCODE_POLICY_OPERATION_CODE"]: - operationType = operationTypeConstants["PROFILE"]; - payload = { - "operation": { - "allowSimple": operationData["passcodePolicyAllowSimple"], - "requireAlphanumeric": operationData["passcodePolicyRequireAlphanumeric"], - "minLength": operationData["passcodePolicyMinLength"], - "minComplexChars": operationData["passcodePolicyMinComplexChars"], - "maxPINAgeInDays": operationData["passcodePolicyMaxPasscodeAgeInDays"], - "pinHistory": operationData["passcodePolicyPasscodeHistory"], - "maxFailedAttempts": operationData["passcodePolicyMaxFailedAttempts"] - } - }; - break; - default: - // If the operation is neither of above, it is a command operation - operationType = operationTypeConstants["COMMAND"]; - // Operation payload of a command operation is simply an array of device IDs - payload = deviceList; - } - - if (operationType == operationTypeConstants["PROFILE"] && deviceList) { - payload["deviceIDs"] = deviceList; - } - - return payload; -}; - - -// Constants to define Windows Operation Constants -var windowsOperationConstants = { - "PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY", - "CAMERA_OPERATION_CODE": "CAMERA", - "ENCRYPT_STORAGE_OPERATION_CODE": "ENCRYPT_STORAGE", - "NOTIFICATION_OPERATION_CODE": "NOTIFICATION", - "CHANGE_LOCK_CODE_OPERATION_CODE": "CHANGE_LOCK_CODE" -}; \ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.hbs b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.hbs index fa79c92702..9c836a5374 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.hbs +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.hbs @@ -15,18 +15,132 @@ specific language governing permissions and limitations under the License. }} +{{#if control_operations}} +
+ + {{#each control_operations}} + + {{#if iconFont}} + + {{else}} + {{#if icon}} + + {{else}} + + {{/if}} + {{/if}} + {{name}} + + +
+
+
+
+

+ + + + + {{name}} +
+

+

+ {{description}} +
+

+ +
+ {{#each params.0.pathParams}} + +
+ {{/each}} + {{#each params.0.formParams}} + +
+ {{/each}} + {{#each params.0.queryParams}} + +
+ {{/each}} + {{#each uiParams}} + {{#equal this.type "checkbox"}} + + {{this.label}} +
+ {{/equal}} + {{#equal this.type "text"}} + +
+ {{/equal}} + {{/each}} + + + +
+
+
+
+
+ {{/each}}
-{{/zone}} +{{else}} +
+

+ Operations Loading Failed!

+
+{{/if}} + + {{#zone "bottomJs"}} - - {{js "js/operation-bar.js"}} -{{/zone}} \ No newline at end of file +{{/zone}} diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.js b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.js index 242cb4874f..30a8d397f5 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.js +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/operation-bar.js @@ -17,90 +17,49 @@ */ function onRequest(context) { - var log = new Log("cdmf.unit.device.type.windows.operation-bar"); - var userModule = require("/app/modules/business-controllers/user.js")["userModule"]; - var viewModel = {}; - var permissions = {}; + var log = new Log("operation.js"); + var operationModule = require("/app/modules/business-controllers/operation.js")["operationModule"]; + var device = context.unit.params.device; + var autoCompleteParams = context.unit.params.autoCompleteParams; + var encodedFeaturePayloads=context.unit.params.encodedFeaturePayloads; + var controlOperations = operationModule.getControlOperations(device); + var queryParams = []; + var formParams = []; + var pathParams = []; + for (var i = 0; i < controlOperations.length; i++) { + var currentParamList = controlOperations[i]["params"]; + var uiParamList = controlOperations[i]["uiParams"]; + for (var j = 0; j < currentParamList.length; j++) { + var currentParam = currentParamList[j]; + currentParamList[j]["formParams"] = processParams(currentParam["formParams"], autoCompleteParams); + currentParamList[j]["queryParams"] = processParams(currentParam["queryParams"], autoCompleteParams); + currentParamList[j]["pathParams"] = processParams(currentParam["pathParams"], autoCompleteParams); + } + controlOperations[i]["uiParams"] = uiParamList; + if (encodedFeaturePayloads) { + controlOperations[i]["payload"] = getPayload(encodedFeaturePayloads, controlOperations[i]["operation"]); + } + } + return {"control_operations": controlOperations, "device": device}; +} - // adding android operations related permission checks - permissions["android"] = []; - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/ring")) { - permissions["android"].push("DEVICE_RING"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/lock")) { - permissions["android"].push("DEVICE_LOCK"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/unlock")) { - permissions["android"].push("DEVICE_UNLOCK"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/location")) { - permissions["android"].push("DEVICE_LOCATION"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/clear-password")) { - permissions["android"].push("CLEAR_PASSWORD"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/reboot")) { - permissions["android"].push("DEVICE_REBOOT"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/upgrade-firmware")) { - permissions["android"].push("UPGRADE_FIRMWARE"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/mute")) { - permissions["android"].push("DEVICE_MUTE"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/send-notification")) { - permissions["android"].push("NOTIFICATION"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/change-lock-code")) { - permissions["android"].push("CHANGE_LOCK_CODE"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/enterprise-wipe")) { - permissions["android"].push("ENTERPRISE_WIPE"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/wipe")) { - permissions["android"].push("WIPE_DATA"); - } - - // adding ios operations related permission checks - permissions["ios"] = []; - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/lock")) { - permissions["ios"].push("DEVICE_LOCK"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/location")) { - permissions["ios"].push("LOCATION"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/enterprise-wipe")) { - permissions["ios"].push("ENTERPRISE_WIPE"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/notification")) { - permissions["ios"].push("NOTIFICATION"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/ring")) { - permissions["ios"].push("RING"); - } - - // adding windows operations related permission checks - permissions["windows"] = []; - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock")) { - permissions["windows"].push("DEVICE_LOCK"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/disenroll/windows")) { - permissions["windows"].push("DISENROLL"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/wipe")) { - permissions["windows"].push("WIPE_DATA"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/ring")) { - permissions["windows"].push("DEVICE_RING"); - } - if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock-reset")) { - permissions["windows"].push("LOCK_RESET"); - } - - viewModel["permissions"] = stringify(permissions); - - viewModel["deviceType"] = context.unit.params.deviceType; - viewModel["ownership"] = context.unit.params.ownership; +function processParams(paramsList, autoCompleteParams) { + for (var i = 0; i < paramsList.length; i++) { + var paramName = paramsList[i]; + var paramValue = ""; + var paramType = "text"; + for (var k = 0; k < autoCompleteParams.length; k++) { + if (paramName == autoCompleteParams[k].name) { + paramValue = autoCompleteParams[k].value; + paramType = "hidden"; + } + } + paramsList[i] = {"name": paramName, "value": paramValue, "type": paramType}; + } + return paramsList; +} - return viewModel; +function getPayload(featuresPayload, featureCode){ + var featuresJSONPayloads = JSON.parse(featuresPayload); + return featuresJSONPayloads[featureCode]; } \ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/js/operation-bar.js b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/js/operation-bar.js index 90ce9ce4a2..64d7360765 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/js/operation-bar.js +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/js/operation-bar.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2016, 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 @@ -17,232 +17,227 @@ */ /* - * Setting-up global variables. - */ - -var operations = '.wr-operations', - modalPopup = '.modal', - modalPopupContent = modalPopup + ' .modal-content', - navHeight = $('#nav').height(), - headerHeight = $('header').height(), - offset = (headerHeight + navHeight), - deviceSelection = '.device-select', - platformTypeConstants = { - "ANDROID": "android", - "IOS": "ios", - "WINDOWS": "windows" - }, - ownershipTypeConstants = { - "BYOD": "BYOD", - "COPE": "COPE" - }, - operationBarModeConstants = { - "BULK": "BULK_OPERATION_MODE", - "SINGLE": "SINGLE_OPERATION_MODE" - }; - -/* - * Function to get selected devices ID's + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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. */ -function getSelectedDeviceIds() { - var deviceIdentifierList = []; - $(deviceSelection).each(function (index) { - var device = $(this); - var deviceId = device.data('deviceid'); - var deviceType = device.data('type'); - deviceIdentifierList.push({ - "id": deviceId, - "type": deviceType - }); - }); - if (deviceIdentifierList.length == 0) { - var thisTable = $(".DTTT_selected").closest('.dataTables_wrapper').find('.dataTable').dataTable(); - thisTable.api().rows().every(function () { - if ($(this.node()).hasClass('DTTT_selected')) { - var deviceId = $(thisTable.api().row(this).node()).data('deviceid'); - var deviceType = $(thisTable.api().row(this).node()).data('devicetype'); - deviceIdentifierList.push({ - "id": deviceId, - "type": deviceType - }); - } - }); - } - - return deviceIdentifierList; -} /* * On operation click function. * @param selection: Selected operation */ function operationSelect(selection) { - var deviceIdList = getSelectedDeviceIds(); - if (deviceIdList == 0) { - $(modalPopupContent).html($("#errorOperations").html()); - } else { - $(modalPopupContent).addClass("operation-data"); - $(modalPopupContent).html($(operations + " .operation[data-operation-code=" + selection + "]").html()); - $(modalPopupContent).data("operation-code", selection); - } + $(modalPopupContent).addClass("operation-data"); + $(modalPopupContent).html($(" .operation[data-operation-code=" + selection + "]").html()); + $(modalPopupContent).data("operation-code", selection); showPopup(); } -function getDevicesByTypes(deviceList) { - var deviceTypes = {}; - $.each(deviceList, function (index, item) { - if (!deviceTypes[item.type]) { - deviceTypes[item.type] = []; - } - if (item.type == platformTypeConstants.ANDROID || - item.type == platformTypeConstants.IOS || item.type == platformTypeConstants.WINDOWS) { - deviceTypes[item.type].push(item.id); +function submitForm(formId) { + var form = $("#" + formId); + var uri = form.attr("action"); + var deviceIdList = form.data("device-id"); + var contentType = form.data("content-type"); + var operationCode = form.data("operation-code"); + var uriEncodedQueryStr = ""; + var uriEncodedFormStr = ""; + var payload = {}; + form.find("input").each(function () { + var input = $(this); + var prefix; + if (input.data("param-type") === "path") { + uri = uri.replace("{" + input.attr("id") + "}", input.val()); + } else if (input.data("param-type") === "query") { + prefix = !uriEncodedQueryStr ? "?" : "&"; + uriEncodedQueryStr += prefix + input.attr("id") + "=" + input.val(); + } else if (input.data("param-type") === "form") { + prefix = !uriEncodedFormStr ? "" : "&"; + uriEncodedFormStr += prefix + input.attr("id") + "=" + input.val(); + if(input.attr("type") === "text"){ + payload[input.attr("id")] = input.val(); + } else if(input.attr("type") === "checkbox"){ + payload[input.attr("id")] = input.is(":checked"); + } } }); - return deviceTypes; -} - -//function unloadOperationBar() { -// $("#showOperationsBtn").addClass("hidden"); -// $(".wr-operations").html(""); -//} - -function loadOperationBar(deviceType, ownership, mode) { - var operationBar = $("#operations-bar"); - var operationBarSrc = operationBar.attr("src"); - - $.template("operations-bar", operationBarSrc, function (template) { - var serviceURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/*/features"; - invokerUtil.get( - serviceURL, - // success callback - function (data) { - var permittedOperations = []; - var i; - var permissionList = $("#operations-mod").data("permissions"); - var totalFeatures = JSON.parse(data); - for (i = 0; i < permissionList[deviceType].length; i++) { - var j; - for (j = 0; j < totalFeatures.length; j++) { - if (permissionList[deviceType][i] == totalFeatures[j]["code"]) { - if (deviceType == platformTypeConstants.ANDROID) { - if (totalFeatures[j]["code"] == "DEVICE_UNLOCK") { - if (ownership == ownershipTypeConstants.COPE) { - permittedOperations.push(totalFeatures[j]); - } - } else if (totalFeatures[j]["code"] == "WIPE_DATA") { - if (mode == operationBarModeConstants.BULK) { - if (ownership == ownershipTypeConstants.COPE) { - permittedOperations.push(totalFeatures[j]); - } - } else { - permittedOperations.push(totalFeatures[j]); - } - } else { - permittedOperations.push(totalFeatures[j]); - } - } else { - permittedOperations.push(totalFeatures[j]); - } - } - } - } + uri += uriEncodedQueryStr; + var httpMethod = form.attr("method").toUpperCase(); - var viewModel = {}; - permittedOperations = permittedOperations.filter(function (current) { - var iconName; - switch (deviceType) { - case platformTypeConstants.ANDROID: - iconName = operationModule.getAndroidIconForFeature(current.code); - break; - case platformTypeConstants.WINDOWS: - iconName = operationModule.getWindowsIconForFeature(current.code); - break; - case platformTypeConstants.IOS: - iconName = operationModule.getIOSIconForFeature(current.code); - break; - } - - /* adding ownership in addition to device-type - as it's vital in cases where UI for the same feature should change - according to ownership - */ - if (ownership) { - current.ownership = ownership; - } - - if (iconName) { - current.icon = iconName; - } - - return current; - }); - - viewModel.features = permittedOperations; - var content = template(viewModel); - $(".wr-operations").html(content); - }, - // error callback - function (message) { - $(".wr-operations").html(message); - }); - }); -} - -function runOperation(operationName) { - var deviceIdList = getSelectedDeviceIds(); - var list = getDevicesByTypes(deviceIdList); + if (!contentType) { + contentType = "application/x-www-form-urlencoded"; + payload = uriEncodedFormStr; + } - var successCallback = function (data) { - if (operationName == "NOTIFICATION") { - $(modalPopupContent).html($("#messageSuccess").html()); - } else { - $(modalPopupContent).html($("#operationSuccess").html()); + //setting responses callbacks + var defaultStatusClasses = "fw fw-stack-1x"; + var content = $("#operation-response-template").find(".content"); + var title = content.find("#title"); + var statusIcon = content.find("#status-icon"); + var description = content.find("#description"); + description.html(""); + var successCallBack = function (response) { + var res = response; + try { + res = JSON.parse(response).messageFromServer; + } catch (err) { + //do nothing } - showPopup(); + title.html("Operation Triggered!"); + statusIcon.attr("class", defaultStatusClasses + " fw-check"); + description.html(res); + console.log("success!"); + $(modalPopupContent).html(content.html()); }; - var errorCallback = function (data) { - $(modalPopupContent).html($("#errorOperationUnexpected").html()); - showPopup(); - }; - - var payload, serviceEndPoint; - if (list[platformTypeConstants.IOS]) { - payload = - operationModule.generatePayload(platformTypeConstants.IOS, operationName, list[platformTypeConstants.IOS]); - serviceEndPoint = operationModule.getIOSServiceEndpoint(operationName); - } else if (list[platformTypeConstants.ANDROID]) { - payload = operationModule - .generatePayload(platformTypeConstants.ANDROID, operationName, list[platformTypeConstants.ANDROID]); - serviceEndPoint = operationModule.getAndroidServiceEndpoint(operationName); - } else if (list[platformTypeConstants.WINDOWS]) { - payload = operationModule.generatePayload(platformTypeConstants.WINDOWS, operationName, - list[platformTypeConstants.WINDOWS]); - serviceEndPoint = operationModule.getWindowsServiceEndpoint(operationName); - } - if (operationName == "NOTIFICATION") { - var errorMsgWrapper = "#notification-error-msg"; - var errorMsg = "#notification-error-msg span"; - var messageTitle = $("#messageTitle").val(); - var messageText = $("#messageText").val(); - if (!(messageTitle && messageText)) { - $(errorMsg).text("Enter a message. It cannot be empty."); - $(errorMsgWrapper).removeClass("hidden"); - } else { - invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback); - $(modalPopupContent).removeData(); - hidePopup(); + var errorCallBack = function (response) { + console.log(response); + title.html("An Error Occurred!"); + statusIcon.attr("class", defaultStatusClasses + " fw-error"); + var reason = (response.responseText === "null")?response.statusText:response.responseText; + try { + reason = JSON.parse(reason).message; + } catch (err) { + //do nothing } + description.html(reason); + console.log("Error!"); + $(modalPopupContent).html(content.html()); + }; + //executing http request + if (httpMethod === "GET") { + invokerUtil.get(uri, successCallBack, errorCallBack, contentType); + } else if (httpMethod === "POST") { + var deviceList = deviceIdList.split(","); + payload = generatePayload(operationCode, payload, deviceList); + invokerUtil.post(uri, payload, successCallBack, errorCallBack, contentType); + } else if (httpMethod === "PUT") { + invokerUtil.put(uri, payload, successCallBack, errorCallBack, contentType); + } else if (httpMethod === "DELETE") { + invokerUtil.delete(uri, successCallBack, errorCallBack, contentType); } else { - invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback); - $(modalPopupContent).removeData(); - hidePopup(); + title.html("An Error Occurred!"); + statusIcon.attr("class", defaultStatusClasses + " fw-error"); + description.html("This operation requires http method: " + httpMethod + " which is not supported yet!"); + $(modalPopupContent).html(content.html()); } } -/* - * DOM ready functions. - */ -$(document).ready(function () { - $(operations).show(); +$(document).on('submit', 'form', function (e) { + e.preventDefault(); + var postOperationRequest = $.ajax({ + url: $(this).attr("action") + '&' + $(this).serialize(), + method: "post" + }); + + var btnSubmit = $('#btnSend', this); + btnSubmit.addClass('hidden'); + + var lblSending = $('#lblSending', this); + lblSending.removeClass('hidden'); + + var lblSent = $('#lblSent', this); + postOperationRequest.done(function (data) { + lblSending.addClass('hidden'); + lblSent.removeClass('hidden'); + setTimeout(function () { + hidePopup(); + }, 3000); + }); + + postOperationRequest.fail(function (jqXHR, textStatus) { + lblSending.addClass('hidden'); + lblSent.addClass('hidden'); + }); }); + +// Constants to define operation types available +var operationTypeConstants = { + "PROFILE": "profile", + "CONFIG": "config", + "COMMAND": "command" +}; + + +var generatePayload = function (operationCode, operationData, deviceList) { + var payload; + var operationType; + switch (operationCode) { + case windowsOperationConstants["CAMERA_OPERATION_CODE"]: + operationType = operationTypeConstants["PROFILE"]; + payload = { + "operation": { + "enabled": operationData["cameraEnabled"] + } + }; + break; + case windowsOperationConstants["CHANGE_LOCK_CODE_OPERATION_CODE"]: + operationType = operationTypeConstants["PROFILE"]; + payload = { + "operation": { + "lockCode": operationData["lockCode"] + } + }; + break; + case windowsOperationConstants["ENCRYPT_STORAGE_OPERATION_CODE"]: + operationType = operationTypeConstants["PROFILE"]; + payload = { + "operation": { + "encrypted": operationData["encryptStorageEnabled"] + } + }; + break; + case windowsOperationConstants["NOTIFICATION_OPERATION_CODE"]: + operationType = operationTypeConstants["PROFILE"]; + payload = { + "operation": { + "message": operationData["message"] + } + }; + break; + case windowsOperationConstants["PASSCODE_POLICY_OPERATION_CODE"]: + operationType = operationTypeConstants["PROFILE"]; + payload = { + "operation": { + "allowSimple": operationData["passcodePolicyAllowSimple"], + "requireAlphanumeric": operationData["passcodePolicyRequireAlphanumeric"], + "minLength": operationData["passcodePolicyMinLength"], + "minComplexChars": operationData["passcodePolicyMinComplexChars"], + "maxPINAgeInDays": operationData["passcodePolicyMaxPasscodeAgeInDays"], + "pinHistory": operationData["passcodePolicyPasscodeHistory"], + "maxFailedAttempts": operationData["passcodePolicyMaxFailedAttempts"] + } + }; + break; + default: + // If the operation is neither of above, it is a command operation + operationType = operationTypeConstants["COMMAND"]; + // Operation payload of a command operation is simply an array of device IDs + payload = deviceList; + } + + if (operationType === operationTypeConstants["PROFILE"] && deviceList) { + payload["deviceIDs"] = deviceList; + } + return payload; +}; + + +// Constants to define Windows Operation Constants +var windowsOperationConstants = { + "PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY", + "CAMERA_OPERATION_CODE": "CAMERA", + "ENCRYPT_STORAGE_OPERATION_CODE": "ENCRYPT_STORAGE", + "NOTIFICATION_OPERATION_CODE": "NOTIFICATION", + "CHANGE_LOCK_CODE_OPERATION_CODE": "CHANGE_LOCK_CODE" +}; \ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/hidden-operations-android.hbs b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/hidden-operations-android.hbs deleted file mode 100644 index 5bf6fcb99d..0000000000 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/hidden-operations-android.hbs +++ /dev/null @@ -1,286 +0,0 @@ -
- -
- - -
-
- -
-
- -
- Configure -
-
-
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
- -
- -
- -
- - Configure -
-
-
- - - -
-
- - -
- -
- - - -
- -
- Configure -
- -
- - -
-
- -
- - -
- -
-
- -
- - -
- -
- Install -
-
-
- -
- - -
- -
- - -
- -
- Install -
-
-
- -
- - -
- -
- Uninstall -
-
-
- - - -
-
- -
-
- -
- Configure -
-
-
- -
-
\ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/hidden-operations-ios.hbs b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/hidden-operations-ios.hbs deleted file mode 100644 index c16672f99a..0000000000 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/hidden-operations-ios.hbs +++ /dev/null @@ -1,366 +0,0 @@ -
- -
- - -
-
- -
- -
- -
- -
- -
- - -
- -
-
- - -
-
- - -
- Install -
- -
-
- -
- -
- -
- -
- -
- - -
- -
-
- - -
-
- - -
- Install -
-
-
- -
- -
- -
- Uninstall -
-
-
- - - -
- - -
- -
- -
- - -
- -
- - -
- - - -
- -
- - - -
- -
- - - -
- -
- - - -
- -
- Configure -
- - - -
- - -
- -
- - - -
-
- -
-
- Path Prefix -
-
-
- - - -
- -
- - - -
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - - -
-
- -
-
- : -
-
-
- - - -
- -
- - - -
- -
- - - -
- -
- -
- - -
-
- - - -
-
- -
-
- -
-
- -
-
- -
-
- -
- Configure -
- - -
- -
- -
- -
- -
AirPlay password -
- -
- Configure -
- -
-
\ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.hbs b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/operation-bar.hbs similarity index 95% rename from components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.hbs rename to components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/operation-bar.hbs index 9c836a5374..f15d531de4 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.new.operation-bar/operation-bar.hbs +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/operation-bar.hbs @@ -1,7 +1,7 @@ {{! - Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. - WSO2 Inc. licenses this file to you under the Apache License, + Entgra (Pvt) Ltd. 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 @@ -69,7 +69,7 @@
{{#each params.0.pathParams}} @@ -140,7 +140,3 @@ - -{{#zone "bottomJs"}} - {{js "js/operation-bar.js"}} -{{/zone}} diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/operations.hbs b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/operations.hbs deleted file mode 100644 index 2a96b1503e..0000000000 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.windows.operation-bar/public/templates/operations.hbs +++ /dev/null @@ -1,249 +0,0 @@ -
- - - -
-
- - - -
-
- - - -
- -
- - - -
-{{#each features}} - - - {{name}} - -
- - - -
-{{/each}} -
\ No newline at end of file diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml index 09dad03cf0..a16a273033 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml @@ -42,7 +42,6 @@ org.apache.felix maven-bundle-plugin - 1.4.0 true diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsFeatureManager.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsFeatureManager.java index e033cd0599..a9777ebcbd 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsFeatureManager.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsFeatureManager.java @@ -16,8 +16,27 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.windows.impl; +import org.apache.commons.lang.StringUtils; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.Feature; import org.wso2.carbon.device.mgt.common.FeatureManager; @@ -30,6 +49,7 @@ import org.wso2.carbon.device.mgt.mobile.windows.impl.util.MobileDeviceManagemen import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class WindowsFeatureManager implements FeatureManager { @@ -95,11 +115,8 @@ public class WindowsFeatureManager implements FeatureManager { try { WindowsDAOFactory.openConnection(); List mobileFeatures = featureDAO.getAllFeatures(); - List featureList = new ArrayList(mobileFeatures.size()); - for (MobileFeature mobileFeature : mobileFeatures) { - featureList.add(MobileDeviceManagementUtil.convertToFeature(mobileFeature)); - } - return featureList; + return mobileFeatures.stream().map(MobileDeviceManagementUtil::convertToFeature).collect( + Collectors.toList()); } catch (MobileDeviceManagementDAOException e) { throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + "Windows platform", e); @@ -108,6 +125,44 @@ public class WindowsFeatureManager implements FeatureManager { } } + @Override + public List getFeatures(String featureType) throws DeviceManagementException { + if (StringUtils.isEmpty(featureType)) { + return this.getFeatures(); + } + try { + WindowsDAOFactory.openConnection(); + List mobileFeatures = featureDAO.getFeaturesByFeatureType(featureType); + return mobileFeatures.stream().map(MobileDeviceManagementUtil::convertToFeature).collect( + Collectors.toList()); + } catch (MobileDeviceManagementDAOException e) { + throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + + "Android platform", e); + } finally { + WindowsDAOFactory.closeConnection(); + } + } + + @Override + public List getFeatures(String featureType, boolean isHidden) throws DeviceManagementException { + try { + WindowsDAOFactory.openConnection(); + List mobileFeatures; + if (StringUtils.isNotEmpty(featureType)) { + mobileFeatures = featureDAO.getFeaturesByFeatureType(featureType, isHidden); + } else { + mobileFeatures = featureDAO.getAllFeatures(isHidden); + } + return mobileFeatures.stream().map(MobileDeviceManagementUtil::convertToFeature).collect( + Collectors.toList()); + } catch (MobileDeviceManagementDAOException e) { + throw new DeviceManagementException("Error occurred while retrieving the list of features registered for " + + "Android platform", e); + } finally { + WindowsDAOFactory.closeConnection(); + } + } + @Override public boolean removeFeature(String code) throws DeviceManagementException { boolean status; diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/MobileFeatureDAO.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/MobileFeatureDAO.java index 9d50a02088..eec43f0e5e 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/MobileFeatureDAO.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/MobileFeatureDAO.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.windows.impl.dao; import org.wso2.carbon.device.mgt.mobile.windows.impl.dto.MobileFeature; @@ -107,4 +125,32 @@ public interface MobileFeatureDAO { * @throws MobileDeviceManagementDAOException */ List getAllFeatures() throws MobileDeviceManagementDAOException; + + /** + * Get all the MobileFeatures by a given ui visibility + * + * @param isHidden Whether the operation is hidden from UI or not. + * @return {@link MobileFeature} object list. + * @throws MobileDeviceManagementDAOException If an error occurred while retrieving the Feature list + */ + List getAllFeatures(boolean isHidden) throws MobileDeviceManagementDAOException; + + /** + * Retrieve all MobileFeatures of a given feature type + * + * @param featureType Feature type. + * @return {@link MobileFeature} object list. + * @throws MobileDeviceManagementDAOException If an error occurred while retrieving the Feature list + */ + List getFeaturesByFeatureType(String featureType) throws MobileDeviceManagementDAOException; + + /** + * Retrieve all MobileFeatures of a given feature type and ui visibility + * + * @param featureType Feature type. + * @param isHidden Whether the operation is hidden from UI or not. + * @return {@link MobileFeature} object list. + * @throws MobileDeviceManagementDAOException If an error occurred while retrieving the Feature list + */ + List getFeaturesByFeatureType(String featureType, boolean isHidden) throws MobileDeviceManagementDAOException; } diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/impl/WindowsFeatureDAOImpl.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/impl/WindowsFeatureDAOImpl.java index a65a6266c7..a440845c6f 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/impl/WindowsFeatureDAOImpl.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dao/impl/WindowsFeatureDAOImpl.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.windows.impl.dao.impl; import org.apache.commons.logging.Log; @@ -54,11 +72,13 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { Connection conn; try { conn = WindowsDAOFactory.getConnection(); - String sql = "INSERT INTO WIN_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)"; + String sql = "INSERT INTO WIN_FEATURE(CODE, NAME, TYPE, HIDDEN, DESCRIPTION) VALUES (?, ?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); - stmt.setString(1, mobileFeature.getCode()); - stmt.setString(2, mobileFeature.getName()); - stmt.setString(3, mobileFeature.getDescription()); + stmt.setString(1, mobileFeature.getName()); + stmt.setString(2, mobileFeature.getType()); + stmt.setBoolean(3, mobileFeature.isHidden()); + stmt.setString(4, mobileFeature.getDescription()); + stmt.setString(5, mobileFeature.getCode()); stmt.executeUpdate(); status = true; } catch (SQLException e) { @@ -78,11 +98,14 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { Connection conn; try { conn = WindowsDAOFactory.getConnection(); - stmt = conn.prepareStatement("INSERT INTO WIN_FEATURE(CODE, NAME, DESCRIPTION) VALUES (?, ?, ?)"); + stmt = conn.prepareStatement("INSERT INTO WIN_FEATURE(CODE, NAME, TYPE, HIDDEN, DESCRIPTION) " + + "VALUES (?, ?, ?, ?, ?)"); for (MobileFeature mobileFeature : mobileFeatures) { - stmt.setString(1, mobileFeature.getCode()); - stmt.setString(2, mobileFeature.getName()); - stmt.setString(3, mobileFeature.getDescription()); + stmt.setString(1, mobileFeature.getName()); + stmt.setString(2, mobileFeature.getType()); + stmt.setBoolean(3, mobileFeature.isHidden()); + stmt.setString(4, mobileFeature.getDescription()); + stmt.setString(5, mobileFeature.getCode()); stmt.addBatch(); } stmt.executeBatch(); @@ -104,12 +127,14 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { try { conn = WindowsDAOFactory.getConnection(); String updateDBQuery = - "UPDATE WIN_FEATURE SET NAME = ?, DESCRIPTION = ?" + + "UPDATE WIN_FEATURE SET NAME = ?, TYPE = ?, HIDDEN = ?, DESCRIPTION = ?" + "WHERE CODE = ?"; stmt = conn.prepareStatement(updateDBQuery); stmt.setString(1, mobileFeature.getName()); - stmt.setString(2, mobileFeature.getDescription()); - stmt.setString(3, mobileFeature.getCode()); + stmt.setString(2, mobileFeature.getType()); + stmt.setBoolean(3, mobileFeature.isHidden()); + stmt.setString(4, mobileFeature.getDescription()); + stmt.setString(5, mobileFeature.getCode()); int rows = stmt.executeUpdate(); if (rows > 0) { status = true; @@ -178,19 +203,13 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { Connection conn; try { conn = WindowsDAOFactory.getConnection(); - String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM WIN_FEATURE WHERE ID = ?"; + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, 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); + mobileFeature = populateMobileFeature(rs); } return mobileFeature; } catch (SQLException e) { @@ -209,19 +228,13 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { Connection conn; try { conn = WindowsDAOFactory.getConnection(); - String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM WIN_FEATURE WHERE CODE = ?"; + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, 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); + mobileFeature = populateMobileFeature(rs); } return mobileFeature; } catch (SQLException e) { @@ -246,19 +259,11 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { List features = new ArrayList<>(); try { conn = WindowsDAOFactory.getConnection(); - String sql = "SELECT ID, CODE, NAME, DESCRIPTION FROM WIN_FEATURE"; + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, 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); + features.add(populateMobileFeature(rs)); } return features; } catch (SQLException e) { @@ -268,4 +273,107 @@ public class WindowsFeatureDAOImpl implements MobileFeatureDAO { MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); } } + + @Override + public List getAllFeatures(boolean isHidden) throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn = null; + List features = new ArrayList<>(); + try { + conn = WindowsDAOFactory.getConnection(); + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM WIN_FEATURE WHERE HIDDEN = ?"; + stmt = conn.prepareStatement(sql); + stmt.setBoolean(1, isHidden); + rs = stmt.executeQuery(); + + while (rs.next()) { + features.add(populateMobileFeature(rs)); + } + return features; + } catch (SQLException e) { + throw new WindowsFeatureManagementDAOException("Error occurred while retrieving all windows features " + + "from the android database.", e); + } finally { + MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); + WindowsDAOFactory.closeConnection(); + } + } + + @Override + public List getFeaturesByFeatureType(String featureType) throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn; + List features = new ArrayList<>(); + try { + conn = WindowsDAOFactory.getConnection(); + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION FROM WIN_FEATURE WHERE TYPE = ?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, featureType); + rs = stmt.executeQuery(); + + while (rs.next()) { + features.add(populateMobileFeature(rs)); + } + return features; + } catch (SQLException e) { + throw new WindowsFeatureManagementDAOException("Error occurred while retrieving all windows features of " + + "type " + featureType + " from the android database.", e); + } finally { + MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); + WindowsDAOFactory.closeConnection(); + } + } + + @Override + public List getFeaturesByFeatureType(String featureType, boolean isHidden) + throws MobileDeviceManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + Connection conn; + List features = new ArrayList<>(); + try { + conn = WindowsDAOFactory.getConnection(); + String sql = "SELECT ID, CODE, NAME, TYPE, HIDDEN, DESCRIPTION " + + "FROM WIN_FEATURE " + + "WHERE TYPE = ? AND HIDDEN = ?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, featureType); + stmt.setBoolean(2, isHidden); + rs = stmt.executeQuery(); + + while (rs.next()) { + features.add(populateMobileFeature(rs)); + } + return features; + } catch (SQLException e) { + throw new WindowsFeatureManagementDAOException("Error occurred while retrieving all android features of " + + "[type: " + featureType + " & hidden: " + isHidden + "] from the windows database.", e); + } finally { + MobileDeviceManagementDAOUtil.cleanupResources(stmt, rs); + WindowsDAOFactory.closeConnection(); + } + } + + /** + * Generate {@link MobileFeature} from the SQL {@link ResultSet} + * + * @param rs Result set + * @return populated {@link MobileFeature} + * @throws SQLException if unable to extract data from {@link ResultSet} + */ + private MobileFeature populateMobileFeature(ResultSet rs) throws SQLException { + MobileFeature 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.setType(rs.getString(WindowsPluginConstants.WINDOWS_FEATURE_TYPE)); + mobileFeature.setHidden(rs.getBoolean(WindowsPluginConstants.WINDOWS_FEATURE_HIDDEN)); + mobileFeature.setDeviceType( + DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID); + + return mobileFeature; + } } diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dto/MobileFeature.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dto/MobileFeature.java index 9702746c1d..267039f45e 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dto/MobileFeature.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/dto/MobileFeature.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.windows.impl.dto; import java.io.Serializable; @@ -29,6 +47,8 @@ public class MobileFeature implements Serializable { private String deviceType; private String code; private String name; + private String type; + private boolean hidden; private String description; public int getId() { @@ -70,4 +90,20 @@ public class MobileFeature implements Serializable { public void setDeviceType(String deviceType) { this.deviceType = deviceType; } + + public boolean isHidden() { + return hidden; + } + + public void setHidden(boolean hidden) { + this.hidden = hidden; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } } diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/MobileDeviceManagementUtil.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/MobileDeviceManagementUtil.java index bb5a7578b9..b60cdf2500 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/MobileDeviceManagementUtil.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/MobileDeviceManagementUtil.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.windows.impl.util; import org.apache.commons.logging.Log; @@ -42,10 +60,13 @@ import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Properties; /** * Provides utility methods required by the mobile device management bundle. @@ -203,6 +224,8 @@ public class MobileDeviceManagementUtil { MobileFeature mobileFeature = new MobileFeature(); mobileFeature.setName(feature.getName()); mobileFeature.setCode(feature.getCode()); + mobileFeature.setType(feature.getType()); + mobileFeature.setHidden(feature.isHidden()); mobileFeature.setDescription(feature.getDescription()); mobileFeature.setDeviceType(feature.getDeviceType()); return mobileFeature; @@ -212,6 +235,8 @@ public class MobileDeviceManagementUtil { Feature feature = new Feature(); feature.setDescription(mobileFeature.getDescription()); feature.setDeviceType(mobileFeature.getDeviceType()); + feature.setType(mobileFeature.getType()); + feature.setHidden(mobileFeature.isHidden()); feature.setCode(mobileFeature.getCode()); feature.setName(mobileFeature.getName()); return feature; diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/WindowsPluginConstants.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/WindowsPluginConstants.java index a243cc9c48..b65d6438a9 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/WindowsPluginConstants.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/util/WindowsPluginConstants.java @@ -16,6 +16,24 @@ * under the License. */ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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.windows.impl.util; /** @@ -43,6 +61,8 @@ public class WindowsPluginConstants { public static final String WINDOWS_FEATURE_CODE = "CODE"; public static final String WINDOWS_FEATURE_NAME = "NAME"; public static final String WINDOWS_FEATURE_DESCRIPTION = "DESCRIPTION"; + public static final String WINDOWS_FEATURE_TYPE = "TYPE"; + public static final String WINDOWS_FEATURE_HIDDEN = "HIDDEN"; public static final String MOBILE_DB_SCRIPTS_FOLDER = "cdm"; public static final String MOBILE_CONFIG_REGISTRY_ROOT = "/_system/config"; diff --git a/features/device-types-feature/androidsense-plugin-feature/org.wso2.carbon.device.mgt.iot.androidsense.backend.feature/src/main/resources/devicetypes/android_sense.xml b/features/device-types-feature/androidsense-plugin-feature/org.wso2.carbon.device.mgt.iot.androidsense.backend.feature/src/main/resources/devicetypes/android_sense.xml index e7c5c97fcd..c3e90d6ed2 100644 --- a/features/device-types-feature/androidsense-plugin-feature/org.wso2.carbon.device.mgt.iot.androidsense.backend.feature/src/main/resources/devicetypes/android_sense.xml +++ b/features/device-types-feature/androidsense-plugin-feature/org.wso2.carbon.device.mgt.iot.androidsense.backend.feature/src/main/resources/devicetypes/android_sense.xml @@ -17,9 +17,27 @@ ~ specific language governing permissions and limitations ~ under the License. --> + + - + Add Keywords Send keywords to the device @@ -28,7 +46,7 @@ - + Add Threshold Send Threshold to the device @@ -37,7 +55,7 @@ - + Remove words Remove Threshold from the device diff --git a/features/device-types-feature/arduino-plugin-feature/org.wso2.carbon.device.mgt.iot.arduino.backend.feature/src/main/resources/devicetypes/arduino.xml b/features/device-types-feature/arduino-plugin-feature/org.wso2.carbon.device.mgt.iot.arduino.backend.feature/src/main/resources/devicetypes/arduino.xml index c651c04e7f..7ed7bafb95 100644 --- a/features/device-types-feature/arduino-plugin-feature/org.wso2.carbon.device.mgt.iot.arduino.backend.feature/src/main/resources/devicetypes/arduino.xml +++ b/features/device-types-feature/arduino-plugin-feature/org.wso2.carbon.device.mgt.iot.arduino.backend.feature/src/main/resources/devicetypes/arduino.xml @@ -17,15 +17,39 @@ ~ specific language governing permissions and limitations ~ under the License. --> + + - + Control Bulb Control Bulb on Arduino Uno - - - state - + diff --git a/features/device-types-feature/raspberrypi-plugin-feature/org.wso2.carbon.device.mgt.iot.raspberrypi.backend.feature/src/main/resources/devicetypes/raspberrypi.xml b/features/device-types-feature/raspberrypi-plugin-feature/org.wso2.carbon.device.mgt.iot.raspberrypi.backend.feature/src/main/resources/devicetypes/raspberrypi.xml index 70de5d4f87..a252771354 100644 --- a/features/device-types-feature/raspberrypi-plugin-feature/org.wso2.carbon.device.mgt.iot.raspberrypi.backend.feature/src/main/resources/devicetypes/raspberrypi.xml +++ b/features/device-types-feature/raspberrypi-plugin-feature/org.wso2.carbon.device.mgt.iot.raspberrypi.backend.feature/src/main/resources/devicetypes/raspberrypi.xml @@ -17,15 +17,39 @@ ~ specific language governing permissions and limitations ~ under the License. --> + + - + Control Bulb Control Bulb on Raspberrypi - - - state - + diff --git a/features/device-types-feature/virtual-fire-alarm-plugin-feature/org.wso2.carbon.device.mgt.iot.virtualfirealarm.backend.feature/src/main/resources/devicetypes/virtual_firealarm.xml b/features/device-types-feature/virtual-fire-alarm-plugin-feature/org.wso2.carbon.device.mgt.iot.virtualfirealarm.backend.feature/src/main/resources/devicetypes/virtual_firealarm.xml index 55196f13f5..381295b578 100644 --- a/features/device-types-feature/virtual-fire-alarm-plugin-feature/org.wso2.carbon.device.mgt.iot.virtualfirealarm.backend.feature/src/main/resources/devicetypes/virtual_firealarm.xml +++ b/features/device-types-feature/virtual-fire-alarm-plugin-feature/org.wso2.carbon.device.mgt.iot.virtualfirealarm.backend.feature/src/main/resources/devicetypes/virtual_firealarm.xml @@ -17,12 +17,35 @@ ~ specific language governing permissions and limitations ~ under the License. --> + + - + Control buzzer Control buzzer on Virtual Firealarm - + diff --git a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/h2.sql b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/h2.sql index 9eed9b2d5e..845dbe88ee 100644 --- a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/h2.sql +++ b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/h2.sql @@ -26,6 +26,8 @@ CREATE TABLE IF NOT EXISTS `AD_FEATURE` ( `ID` INT NOT NULL AUTO_INCREMENT, `CODE` VARCHAR(45) NOT NULL, `NAME` VARCHAR(100) NULL, + `TYPE` VARCHAR(20) NULL, + `HIDDEN` BOOLEAN DEFAULT FALSE, `DESCRIPTION` VARCHAR(200) NULL, PRIMARY KEY (`ID`)); diff --git a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mssql.sql b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mssql.sql index 2c22d4729b..ed7976347e 100644 --- a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mssql.sql +++ b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mssql.sql @@ -27,6 +27,8 @@ CREATE TABLE AD_FEATURE ( ID INT NOT NULL IDENTITY, CODE VARCHAR(45) NOT NULL, NAME VARCHAR(100) NULL, + TYPE VARCHAR(20) NULL, + HIDDEN BIT DEFAULT 0, DESCRIPTION VARCHAR(200) NULL, PRIMARY KEY (ID) ); diff --git a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mysql.sql b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mysql.sql index b7dcbe73ca..655af9948b 100644 --- a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mysql.sql +++ b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/mysql.sql @@ -26,7 +26,8 @@ CREATE TABLE IF NOT EXISTS `AD_FEATURE` ( `ID` INT NOT NULL AUTO_INCREMENT, `CODE` VARCHAR(45) NOT NULL, `NAME` VARCHAR(100) NULL, + `TYPE` VARCHAR(20) NULL, + `HIDDEN` BIT DEFAULT 0, `DESCRIPTION` VARCHAR(200) NULL, PRIMARY KEY (`ID`) - ) ENGINE = InnoDB; - +) ENGINE = InnoDB; diff --git a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/oracle.sql b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/oracle.sql index 703757e903..6ad72c41c3 100644 --- a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/oracle.sql +++ b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/oracle.sql @@ -27,6 +27,8 @@ CREATE TABLE AD_FEATURE ( ID INT NOT NULL, CODE VARCHAR(45) NOT NULL, NAME VARCHAR(100) NOT NULL, + TYPE VARCHAR(20) NULL, + HIDDEN BIT DEFAULT 0, DESCRIPTION VARCHAR(200) DEFAULT NULL, CONSTRAINT AD_FEATURE PRIMARY KEY (ID) ) diff --git a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/postgresql.sql b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/postgresql.sql index 20a014b866..908d1c21f5 100644 --- a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/postgresql.sql +++ b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/dbscripts/plugins/postgresql.sql @@ -26,5 +26,7 @@ CREATE TABLE IF NOT EXISTS AD_FEATURE ( ID BIGSERIAL NOT NULL PRIMARY KEY, CODE VARCHAR(45) NOT NULL, NAME VARCHAR(100) NULL, + TYPE VARCHAR(20) NULL, + HIDDEN BOOLEAN DEFAULT FALSE, DESCRIPTION VARCHAR(200) NULL ); diff --git a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/devicetypes/android.xml b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/devicetypes/android.xml index 6fccf219f7..7e753eaeeb 100644 --- a/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/devicetypes/android.xml +++ b/features/mobile-plugins-feature/android-plugin-feature/org.wso2.carbon.device.mgt.mobile.android.feature/src/main/resources/devicetypes/android.xml @@ -17,6 +17,24 @@ ~ specific language governing permissions and limitations ~ under the License. --> + + @@ -87,304 +105,533 @@ - + Ring Ring the device - + - + Device Lock Lock the device - + - + Location Request coordinates of device location - + - + Clear Password Clear current password (This functionality is only working with profile owners from Android 7.0 API 24 onwards.) - + - + Reboot Reboot the device - + - + Upgrade Firmware Upgrade Firmware - + - + Mute Enable mute in the device - + - + Message Send message - + - + Change Lock-code Change current lock code (This functionality is only working with profile owners from Android 7.0 API 24 onwards.) - + - + File Transfer Transfer file to the device - + - + Enterprise Wipe Remove enterprise applications - + - + Wipe Data Factory reset the device - + - + Wifi Setting up wifi configuration - + Global Proxy Setting up a network-independent global HTTP proxy on a device. - + Camera Enable or disable camera - + Email Configure email settings - + Device info Request device information - + Application List Request list of current installed applications - + Install App Install App - + Uninstall App Uninstall App - + Blacklist app Blacklist applications - + Encrypt Storage Encrypt storage - + Password Policy Set passcode policy - + Configure VPN Configure VPN settings - + Disallow user to change volume Allow or disallow user to change volume" - + Disallow bluetooth configuration Allow or disallow bluetooth configuration - + Disallow user to change cell broadcast configurations Allow or disallow user to change cell broadcast configurations - + Disallow user to change user credentials Allow or disallow user to change user credentials - + Disallow user to change mobile networks configurations Allow or disallow user to change mobile networks configurations - + Disallow user to change tethering configurations Allow or disallow user to change tethering configurations - + Disallow user to change VPN configurations Allow or disallow user to change VPN configurations - + Disallow user to change WIFI configurations Allow or disallow user to change WIFI configurations - + Disallow user to change app control Allow or disallow user to change app control - + Disallow window creation Allow or disallow window creation - + Disallow user to change app control configurations Allow or disallow user to change app control configurations - + Disallow cross profile copy paste Allow or disallow cross profile copy paste - + Disallow debugging features Allow or disallow debugging features - + Disallow factory reset Allow or disallow factory reset - + Disallow add user Allow or disallow add user - + Disallow install apps Allow or disallow install apps - + Disallow install unknown sources Allow or disallow install unknown sources - + Disallow modify account Allow or disallow modify account - + Disallow mount physical media Allow or disallow mount physical media - + Disallow network reset Allow or disallow network reset - + Disallow outgoing beam Allow or disallow outgoing beam - + Disallow outgoing calls Allow or disallow outgoing calls - + Disallow remove users Allow or disallow remove users - + Disallow safe boot Allow or disallow safe boot - + Disallow share location Allow or disallow share location - + Disallow sms Allow or disallow sms - + Disallow uninstall app Allow or disallow uninstall app - + Disallow unmute mic Allow or disallow unmute mic - + Disallow usb file transfer Allow or disallow usb file transfer - + Disallow parent profile app linking Allow or disallow parent profile app linking - + Disallow ensure verify apps Allow or disallow ensure verify apps - + Disallow auto timing Allow or disallow auto timing - + Remove device owner Remove device owner - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - + Fetch device logcat Fetch device logcat - - + - - Send app restriction - Send remote configurations to app - + + Wipe Data + Factory reset the device + diff --git a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/h2.sql b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/h2.sql index 7841ec87c8..f03f82be8e 100644 --- a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/h2.sql +++ b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/h2.sql @@ -25,6 +25,8 @@ CREATE TABLE IF NOT EXISTS `WIN_FEATURE` ( `ID` INT NOT NULL AUTO_INCREMENT, `CODE` VARCHAR(45) NOT NULL, `NAME` VARCHAR(100) NULL, + `TYPE` VARCHAR(20) NULL, + `HIDDEN` BOOLEAN DEFAULT FALSE, `DESCRIPTION` VARCHAR(200) NULL, PRIMARY KEY (`ID`) ); diff --git a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mssql.sql b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mssql.sql index f6314b9925..d292b5309f 100644 --- a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mssql.sql +++ b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mssql.sql @@ -6,6 +6,8 @@ CREATE TABLE WIN_FEATURE ( ID INTEGER IDENTITY(1,1) NOT NULL, CODE VARCHAR(45) NOT NULL, NAME VARCHAR(100) NULL, + TYPE VARCHAR(20) NULL, + HIDDEN BIT DEFAULT 0, DESCRIPTION VARCHAR(200) NULL, PRIMARY KEY (ID) ); diff --git a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mysql.sql b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mysql.sql index 4d2e4d1599..2de862ccd8 100644 --- a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mysql.sql +++ b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/mysql.sql @@ -26,6 +26,8 @@ CREATE TABLE IF NOT EXISTS `WIN_FEATURE` ( `ID` INT NOT NULL AUTO_INCREMENT, `CODE` VARCHAR(45) NULL, `NAME` VARCHAR(100) NULL, + `TYPE` VARCHAR(20) NULL, + `HIDDEN` BIT DEFAULT 0, `DESCRIPTION` VARCHAR(200) NULL, PRIMARY KEY (`ID`)) ENGINE = InnoDB; diff --git a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/oracle.sql b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/oracle.sql index 615900ee35..0e58b1a1b4 100644 --- a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/oracle.sql +++ b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/oracle.sql @@ -26,6 +26,8 @@ CREATE TABLE WIN_FEATURE ( ID NUMBER(10) NOT NULL, CODE VARCHAR(45) NOT NULL, NAME VARCHAR(100) NOT NULL, + TYPE VARCHAR(20) NULL, + HIDDEN BIT DEFAULT 0, DESCRIPTION VARCHAR(200) NULL, PRIMARY KEY (ID) ) diff --git a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/postgresql.sql b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/postgresql.sql index 9286eb41cb..d1872ace1d 100644 --- a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/postgresql.sql +++ b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/dbscripts/plugins/postgresql.sql @@ -25,6 +25,8 @@ CREATE TABLE IF NOT EXISTS WIN_FEATURE ( ID SERIAL NOT NULL, CODE VARCHAR(45) NULL, NAME VARCHAR(100) NULL, + TYPE VARCHAR(20) NULL, + HIDDEN BOOLEAN DEFAULT FALSE, DESCRIPTION VARCHAR(200) NULL, PRIMARY KEY (ID) ); diff --git a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/devicetypes/windows.xml b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/devicetypes/windows.xml index 783d3305c9..16e8b10ef5 100644 --- a/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/devicetypes/windows.xml +++ b/features/mobile-plugins-feature/windows-plugin-feature/org.wso2.carbon.device.mgt.mobile.windows.feature/src/main/resources/devicetypes/windows.xml @@ -17,6 +17,24 @@ ~ specific language governing permissions and limitations ~ under the License. --> + + @@ -81,65 +99,107 @@ Disenroll Dis-enrol the device - + Wipe Data Wipe the device - + Ring Ring the device - + Device Lock Lock the device - + Device Lock Reset Lock Reset the device - + Location Request coordinates of device location - + Reboot Reboot the device - + - + Device info Request device information - + Password Policy Set passcode policy - + Camera Enable/Disable Enable/Disable camera - + Encrypt Storage Encrypt the device storage diff --git a/pom.xml b/pom.xml index 5e6e11e8d6..c568f99c36 100644 --- a/pom.xml +++ b/pom.xml @@ -1445,7 +1445,7 @@ org.apache.felix maven-bundle-plugin - 2.3.5 + 3.5.0 true NONE