From 3249079965916635942d46d3bec6b376c9b3405a Mon Sep 17 00:00:00 2001 From: madhawap Date: Thu, 1 Dec 2016 15:41:07 +0530 Subject: [PATCH 1/4] Seperate out task operations --- .../public/js/device-detail.js | 6 +- .../impl/AndroidDeviceManagementService.java | 20 ++++++ .../config/MobileDeviceManagementConfig.java | 12 ++++ .../impl/config/task/TaskConfiguration.java | 62 +++++++++++++++++++ .../impl/WindowsDeviceManagementService.java | 10 +-- .../main/resources/devicetypes/android.xml | 17 ++++- 6 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/config/task/TaskConfiguration.java 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.device-view/public/js/device-detail.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.device-view/public/js/device-detail.js index a90864968b..89fe38224a 100755 --- 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.device-view/public/js/device-detail.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.device-view/public/js/device-detail.js @@ -22,6 +22,7 @@ var InitiateViewOption = null; var deviceId = $(".device-id"); var deviceIdentifier = deviceId.data("deviceid"); var deviceType = deviceId.data("type"); + var ownership = deviceId.data("ownership"); var payload = [deviceIdentifier]; var operationTable; var serviceUrl; @@ -134,6 +135,7 @@ var InitiateViewOption = null; }); function loadOperationsLog(update) { + var owner = $("#device-owner").data("owner"); var operationsLogTable = "#operations-log-table"; if (update) { operationTable = $(operationsLogTable).DataTable(); @@ -148,8 +150,8 @@ var InitiateViewOption = null; pageLength : 10, order: [], ajax: { - url: "/emm/api/operation/paginate", - data: {deviceId : deviceIdentifier, deviceType: deviceType}, + url: "/devicemgt/api/operation/paginate", + data: {deviceId : deviceIdentifier, deviceType: deviceType, owner:owner}, dataSrc: function (json) { $("#operations-spinner").addClass("hidden"); $("#operations-log-container").empty(); 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/AndroidDeviceManagementService.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/AndroidDeviceManagementService.java index bed25a9806..7f9913b01d 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/AndroidDeviceManagementService.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/AndroidDeviceManagementService.java @@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManager; import org.wso2.carbon.device.mgt.common.ProvisioningConfig; +import org.wso2.carbon.device.mgt.common.TaskOperation; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; @@ -52,6 +53,25 @@ public class AndroidDeviceManagementService implements DeviceManagementService { return AndroidDeviceManagementService.DEVICE_TYPE_ANDROID; } +// This method is not in use + @Override + public List getTasksForPlatform() { +// List operationsForPlatform = new ArrayList<>(); +// TaskConfiguration taskConfiguration = +// MobileDeviceConfigurationManager.getInstance().getMobileDeviceManagementConfig() +// .getTaskConfiguration(); +// +// List ops = taskConfiguration.getOperations(); +// List taskOperations = new ArrayList<>(); +// for (TaskConfiguration.Operation op : ops) { +// TaskOperation taskOperation = new TaskOperation(); +// taskOperation.setTaskName(op.getOperationName()); +// taskOperation.setRecurrentTimes(op.getRecurrency()); +// taskOperations.add(taskOperation); +// } + return null; + } + @Override public void init() throws DeviceManagementException { this.deviceManager = new AndroidDeviceManager(); 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/config/MobileDeviceManagementConfig.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/config/MobileDeviceManagementConfig.java index 2c65375c7b..dd873b4443 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/config/MobileDeviceManagementConfig.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/config/MobileDeviceManagementConfig.java @@ -18,6 +18,8 @@ package org.wso2.carbon.device.mgt.mobile.android.impl.config; + + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -28,6 +30,7 @@ import javax.xml.bind.annotation.XmlRootElement; public final class MobileDeviceManagementConfig { private MobileDeviceManagementRepository mobileDeviceMgtRepository; +// private TaskConfiguration taskConfiguration; @XmlElement(name = "ManagementRepository", nillable = false) public MobileDeviceManagementRepository getMobileDeviceMgtRepository() { @@ -39,4 +42,13 @@ public final class MobileDeviceManagementConfig { this.mobileDeviceMgtRepository = mobileDeviceMgtRepository; } +// @XmlElement(name = "TaskConfiguration", required = true) +// public TaskConfiguration getTaskConfiguration() { +// return taskConfiguration; +// } +// +// public void setTaskConfiguration(TaskConfiguration taskConfiguration) { +// this.taskConfiguration = taskConfiguration; +// } + } 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/config/task/TaskConfiguration.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/config/task/TaskConfiguration.java new file mode 100644 index 0000000000..06eb839569 --- /dev/null +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/config/task/TaskConfiguration.java @@ -0,0 +1,62 @@ +package org.wso2.carbon.device.mgt.mobile.android.impl.config.task; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; + +/** + * + */ +@XmlRootElement(name = "TaskConfiguration") +public class TaskConfiguration { + + + private boolean enabled; + private List operations; + + @XmlElement(name = "Enable", required = true) + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + @XmlElementWrapper(name="Operations") + @XmlElement(name = "Operation", required = true) + public List getOperations() { + return operations; + } + + public void setOperations(List operations) { + this.operations = operations; + } + + @XmlRootElement(name = "Operation") + public static class Operation { + + private String operationName; + private int recurrency; + + @XmlElement(name = "Name", required = true) + public String getOperationName() { + return operationName; + } + + public void setOperationName(String operationName) { + this.operationName = operationName; + } + + @XmlElement(name = "RecurrentTimes", required = true) + public int getRecurrency() { + return recurrency; + } + + public void setRecurrency(int recurrency) { + this.recurrency = recurrency; + } + + } +} 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/WindowsDeviceManagementService.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/WindowsDeviceManagementService.java index 9658237078..5a21c05396 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/WindowsDeviceManagementService.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/WindowsDeviceManagementService.java @@ -18,14 +18,11 @@ package org.wso2.carbon.device.mgt.mobile.windows.impl; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManager; import org.wso2.carbon.device.mgt.common.ProvisioningConfig; -import org.wso2.carbon.device.mgt.common.app.mgt.Application; -import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; +import org.wso2.carbon.device.mgt.common.TaskOperation; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; -import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; @@ -45,6 +42,11 @@ public class WindowsDeviceManagementService implements DeviceManagementService { return WindowsDeviceManagementService.DEVICE_TYPE_WINDOWS; } + @Override + public List getTasksForPlatform() { + return null; + } + @Override public void init() throws DeviceManagementException { this.deviceManager = new WindowsDeviceManager(); 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 5ee31efff3..3da1f798bc 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 @@ -401,5 +401,20 @@ - + + + + DEVICE_INFO + 1 + + + APPLICATION_LIST + 5 + + + DEVICE_LOCATION + 1 + + + \ No newline at end of file From 429b52f037a6d43964260115f34a933570474031 Mon Sep 17 00:00:00 2001 From: madhawap Date: Thu, 1 Dec 2016 16:04:43 +0530 Subject: [PATCH 2/4] resolve conflicts --- .../build.xml | 7 +- .../org.wso2.carbon.iot.geo.dashboard/pom.xml | 77 + .../src/assembly/src.xml | 36 + .../carbonapps}/Dashboard_1.0.0/artifact.xml | 0 .../Dashboard_1.0.0/geo-dashboard.json | 0 .../GadgetGeoDashboard_1.0.0/artifact.xml | 0 ...Geo-ExecutionPlan-Proximity_alert.siddhiql | 0 .../Geo-ExecutionPlan-Speed_alert.siddhiql | 0 ...eo-ExecutionPlan-Stationery_alert.siddhiql | 0 .../Geo-ExecutionPlan-Traffic_alert.siddhiql | 0 .../Geo-ExecutionPlan-Within_alert.siddhiql | 0 .../geo-dashboard/conf/cep_info.json | 0 .../geo-dashboard/conf/database.json | 0 .../geo-dashboard/controllers/get_alerts.jag | 0 .../controllers/get_alerts_history.jag | 0 .../controllers/get_server_info.jag | 0 .../controllers/modals/proximity_alert.jag | 0 .../controllers/modals/speed_alert.jag | 0 .../controllers/modals/stationery_alert.jag | 0 .../controllers/modals/traffic_point.jag | 0 .../controllers/modals/within_alert.jag | 0 .../controllers/remove_alerts.jag | 0 .../geo-dashboard/controllers/set_alerts.jag | 0 .../controllers/tile_servers.jag | 0 .../controllers/wms_endpoints.jag | 0 .../geo-dashboard/css/L.Control.Locate.css | 0 .../geo-dashboard/css/L.Control.Locate.ie.css | 0 .../css/MarkerCluster.Default.css | 0 .../geo-dashboard/css/MarkerCluster.css | 0 .../geo-dashboard/css/app.css | 0 .../css/bootstrap-wizard-lib/LICENSE | 0 .../bootstrap-wizard-lib/bootstrap-wizard.css | 0 .../geo-dashboard/css/bootstrap.min.css | 0 .../geo-dashboard/css/css/animation.css | 0 .../geo-dashboard/css/css/locate-fa-codes.css | 0 .../css/css/locate-fa-embedded.css | 0 .../css/css/locate-fa-ie7-codes.css | 0 .../geo-dashboard/css/css/locate-fa-ie7.css | 0 .../geo-dashboard/css/css/locate-fa.css | 0 .../geo-dashboard/css/d3/c3.css | 0 .../geo-dashboard/css/font-awesome.min.css | 0 .../geo-dashboard/css/font/LICENSE.txt | 0 .../geo-dashboard/css/font/README.txt | 0 .../geo-dashboard/css/font/config.json | 0 .../geo-dashboard/css/font/locate-fa.eot | Bin .../geo-dashboard/css/font/locate-fa.svg | 0 .../geo-dashboard/css/font/locate-fa.ttf | Bin .../geo-dashboard/css/font/locate-fa.woff | Bin .../geo-dashboard/css/fonts/FontAwesome.otf | Bin .../css/fonts/fontawesome-webfont.eot | Bin .../css/fonts/fontawesome-webfont.svg | 0 .../css/fonts/fontawesome-webfont.ttf | Bin .../css/fonts/fontawesome-webfont.woff | Bin ...O.Move_this_images_to_assets_images_folder | 0 .../geo-dashboard/css/images/layers-2x.png | Bin .../geo-dashboard/css/images/layers.png | Bin .../css/images/marker-icon-2x.png | Bin .../geo-dashboard/css/images/marker-icon.png | Bin .../css/images/marker-shadow.png | Bin .../geo-dashboard/css/jquery-ui.min.css | 0 .../geo-dashboard/css/jquery-ui.theme.min.css | 0 .../geo-dashboard/css/leaflet.css | 0 .../geo-dashboard/css/leaflet/L.Grid.css | 0 .../css/leaflet/images/spritesheet-2x.png | Bin .../css/leaflet/images/spritesheet.png | Bin .../css/leaflet/leaflet.draw.css | 0 .../css/leaflet_fullscreen/fullscreen.png | Bin .../css/leaflet_fullscreen/fullscreen@2x.png | Bin .../leaflet_fullscreen/leaflet.fullscreen.css | 0 .../geo-dashboard/css/login.css | 0 .../geo-dashboard/css/main.css | 0 .../geo-dashboard/css/map.css | 0 .../geo-dashboard/css/style.css | 0 .../geo-dashboard/css/uikit/LICENSES | 0 .../css/uikit/addons/uikit.addons.css | 0 .../css/uikit/addons/uikit.addons.min.css | 0 .../uikit/addons/uikit.almost-flat.addons.css | 0 .../addons/uikit.almost-flat.addons.min.css | 0 .../uikit/addons/uikit.gradient.addons.css | 0 .../addons/uikit.gradient.addons.min.css | 0 .../geo-dashboard/css/uikit/uikit.min.css | 0 .../geo-dashboard/gadget.json | 0 .../geo-dashboard/img/fav/wso2_fav.png | Bin .../geo-dashboard/img/favicon-120.png | Bin .../geo-dashboard/img/favicon-152.png | Bin .../geo-dashboard/img/favicon-196.png | Bin .../geo-dashboard/img/favicon-76.png | Bin .../geo-dashboard/img/favicon.ico | Bin .../geo-dashboard/img/layers-2x.png | Bin .../geo-dashboard/img/layers.png | Bin .../geo-dashboard/img/marker-icon-2x.png | Bin .../geo-dashboard/img/marker-icon.png | Bin .../geo-dashboard/img/marker-shadow.png | Bin .../geo-dashboard/img/markers/STOP.png | Bin .../geo-dashboard/img/markers/VEHICLE.png | Bin .../img/markers/arrow_alerted.png | Bin .../img/markers/arrow_normal.png | Bin .../img/markers/arrow_offline.png | Bin .../img/markers/arrow_warning.png | Bin .../geo-dashboard/img/markers/danger.png | Bin .../img/markers/default_icons/greenMarker.png | Bin .../img/markers/default_icons/marker-icon.png | Bin .../markers/default_icons/marker-shadow.png | Bin .../img/markers/default_icons/pinkMarker.png | Bin .../img/markers/default_icons/redMarker.png | Bin .../geo-dashboard/img/markers/info.png | Bin .../img/markers/moving/device-alerted.png | Bin .../img/markers/moving/device-normal.png | Bin .../img/markers/moving/device-offline.png | Bin .../img/markers/moving/device-warning.png | Bin .../img/markers/non_moving/device-alerted.png | Bin .../img/markers/non_moving/device-normal.png | Bin .../img/markers/non_moving/device-offline.png | Bin .../img/markers/non_moving/device-warning.png | Bin .../markers/non_moving/stationary-alerted.png | Bin .../markers/non_moving/stationary-normal.png | Bin .../markers/non_moving/stationary-normal2.png | Bin .../markers/non_moving/stationary-offline.png | Bin .../markers/non_moving/stationary-warning.png | Bin .../object-types/default/moving/alerted.png | Bin .../object-types/default/moving/normal.png | Bin .../object-types/default/moving/offline.png | Bin .../object-types/default/moving/warning.png | Bin .../default/non-moving/alerted.png | Bin .../default/non-moving/normal.png | Bin .../default/non-moving/offline.png | Bin .../default/non-moving/warning.png | Bin .../stationary/non-moving/alerted.png | Bin .../stationary/non-moving/normal.png | Bin .../stationary/non-moving/normal2.png | Bin .../stationary/non-moving/offline.png | Bin .../stationary/non-moving/warning.png | Bin .../object-types/stop/non-moving/alerted.png | Bin .../object-types/stop/non-moving/normal.png | Bin .../object-types/stop/non-moving/normal2.png | Bin .../object-types/stop/non-moving/offline.png | Bin .../object-types/stop/non-moving/warning.png | Bin .../object-types/vehicle/moving/alerted.png | Bin .../object-types/vehicle/moving/normal.png | Bin .../object-types/vehicle/moving/offline.png | Bin .../object-types/vehicle/moving/warning.png | Bin .../vehicle/non-moving/alerted.png | Bin .../vehicle/non-moving/normal.png | Bin .../vehicle/non-moving/offline.png | Bin .../vehicle/non-moving/warning.png | Bin .../geo-dashboard/img/markers/offline.png | Bin .../geo-dashboard/img/markers/resize.png | Bin .../geo-dashboard/img/markers/resize_2.png | Bin .../geo-dashboard/img/markers/stopIcon.png | Bin .../geo-dashboard/img/markers/warn.png | Bin .../geo-dashboard/img/thumbnail.png | Bin .../geo-dashboard/img/wso2-logo.png | Bin .../geo-dashboard/include/commons.jag | 0 .../geo-dashboard/include/database.jag | 0 .../geo-dashboard/include/store_alerts.jag | 0 .../geo-dashboard/index.xml | 0 .../geo-dashboard/js/app.js | 0 .../geo-dashboard/js/application_options.js | 0 .../js/bootstrap-wizard-lib/LICENSE | 0 .../bootstrap-wizard-lib/bootstrap-wizard.js | 0 .../bootstrap-wizard.min.js | 0 .../js/bootstrap/BOOTSTRAP_LICENSE | 0 .../js/bootstrap/bootstrap.min.js | 0 .../geo-dashboard/js/d3/C3_LICENSE | 0 .../geo-dashboard/js/d3/D3_LICENSE | 0 .../geo-dashboard/js/d3/c3.min.js | 0 .../geo-dashboard/js/d3/d3.min.js | 0 .../geo-dashboard/js/geo_fencing.js | 0 .../geo-dashboard/js/geo_proximity.js | 0 .../geo-dashboard/js/geo_remote.js | 0 .../js/jquery/jquery-2.1.1.min.js | 0 .../geo-dashboard/js/jquery/jquery-ui.min.js | 0 .../js/leaflet/L.CircleEditor.js | 0 .../js/leaflet/L.Control.Locate.js | 0 .../geo-dashboard/js/leaflet/L.Grid.js | 0 .../js/leaflet/L.MeasuringTool.js | 0 .../js/leaflet/L.PolySideLabel.js | 0 .../js/leaflet/LICENSE_RaphaelLayer | 0 .../js/leaflet/Leaflet.fullscreen.min.js | 0 .../geo-dashboard/js/leaflet/MIT-LICENSE.txt | 0 .../geo-dashboard/js/leaflet/Marker.Rotate.js | 0 .../js/leaflet/images/marker-icon.png | Bin .../js/leaflet/images/marker-shadow.png | Bin .../geo-dashboard/js/leaflet/leaflet.draw.js | 0 .../js/leaflet/leaflet.groupedlayercontrol.js | 0 .../geo-dashboard/js/leaflet/leaflet.js | 0 .../js/leaflet/leaflet.markercluster.js | 0 .../geo-dashboard/js/leaflet/raphael-min.js | 0 .../geo-dashboard/js/leaflet/rlayer.js | 0 .../geo-dashboard/js/show_alert_in_map.js | 0 .../geo-dashboard/js/typeahead.bundle.min.js | 0 .../geo-dashboard/js/uikit/LICENSES | 0 .../js/uikit/addons/autocomplete.js | 0 .../js/uikit/addons/autocomplete.min.js | 0 .../js/uikit/addons/datepicker.js | 0 .../js/uikit/addons/datepicker.min.js | 0 .../js/uikit/addons/form-password.js | 0 .../js/uikit/addons/form-password.min.js | 0 .../js/uikit/addons/form-select.js | 0 .../js/uikit/addons/form-select.min.js | 0 .../js/uikit/addons/htmleditor.js | 0 .../js/uikit/addons/htmleditor.min.js | 0 .../geo-dashboard/js/uikit/addons/nestable.js | 0 .../js/uikit/addons/nestable.min.js | 0 .../geo-dashboard/js/uikit/addons/notify.js | 0 .../js/uikit/addons/notify.min.js | 0 .../js/uikit/addons/pagination.js | 0 .../js/uikit/addons/pagination.min.js | 0 .../geo-dashboard/js/uikit/addons/search.js | 0 .../js/uikit/addons/search.min.js | 0 .../geo-dashboard/js/uikit/addons/sortable.js | 0 .../js/uikit/addons/sortable.min.js | 0 .../geo-dashboard/js/uikit/addons/sticky.js | 0 .../js/uikit/addons/sticky.min.js | 0 .../js/uikit/addons/timepicker.js | 0 .../js/uikit/addons/timepicker.min.js | 0 .../geo-dashboard/js/uikit/addons/upload.js | 0 .../js/uikit/addons/upload.min.js | 0 .../geo-dashboard/js/uikit/uikit.min.js | 0 .../geo-dashboard/js/websocket.js | 0 .../Geo-Receiver-HTTP-LocationStream.xml | 0 .../artifact.xml | 0 ...FusionGenerateNotifications-1.0.0.siddhiql | 0 .../artifact.xml | 0 ...utionPlan-InputStandardizer-1.0.0.siddhiql | 0 .../artifact.xml | 0 ...-ExecutionPlan-Pass_through-1.0.0.siddhiql | 0 .../artifact.xml | 0 ...sher-RDBMS-GeoAlertNotifications-1.0.0.xml | 0 .../artifact.xml | 0 ...WebSocketLocal-FusedSpacialEvent-1.0.0.xml | 0 .../artifact.xml | 0 ...ocketLocal-GeoAlertNotifications-1.0.0.xml | 0 .../artifact.xml | 0 .../ThemeGeoDashboard_1.0.0/artifact.xml | 0 .../geo-dashboard/css/dashboard.css | 0 .../main/resources/carbonapps}/artifacts.xml | 0 .../artifact.xml | 0 ...rg.wso2.geo.AlertsNotifications-1.0.0.json | 0 .../artifact.xml | 0 .../org.wso2.geo.FusedSpatialEvent-1.0.0.json | 0 .../artifact.xml | 0 .../org.wso2.geo.LocationStream-1.0.0.json | 0 .../artifact.xml | 0 ...wso2.geo.ProcessedSpatialEvents-1.0.0.json | 0 .../artifact.xml | 0 ....wso2.geo.StandardSpatialEvents-1.0.0.json | 0 components/analytics/iot-analytics/pom.xml | 1 + .../app/build.gradle | 1 + .../app/src/main/AndroidManifest.xml | 18 +- .../data/publisher/DataPublisherService.java | 106 +- .../android/sense/data/publisher/Event.java | 212 ++- .../iot/android/sense/event/SenseService.java | 21 +- .../event/streams/SenseDataCollector.java | 6 +- .../event/streams/activity/ActivityData.java | 67 + .../streams/activity/ActivityReceiver.java | 54 + .../streams/application/ApplicationData.java | 61 + .../application/ApplicationDataReceiver.java | 45 + .../sense/event/streams/audio/AudioData.java | 58 + .../event/streams/audio/AudioDataReader.java | 50 + .../event/streams/battery/BatteryData.java | 18 + .../streams/battery/BatteryDataReceiver.java | 8 +- .../sense/event/streams/call/CallData.java | 70 + .../event/streams/call/CallDataReceiver.java | 87 + .../event/streams/screen/ScreenData.java | 55 + .../streams/screen/ScreenDataReceiver.java | 32 + .../sense/event/streams/sms/SmsData.java | 58 + .../event/streams/sms/SmsDataReceiver.java | 49 + .../sensorlisting/SupportedSensors.java | 3 + .../android/sense/util/SenseDataHolder.java | 111 +- .../sense/util/SenseDataReceiverManager.java | 175 ++ .../analytics-view.js | 26 +- .../analytics-view.js | 26 +- .../device-view.hbs | 120 +- .../policy-wizard.hbs | 2 +- .../analytics-view.js | 26 +- .../endpoint/HttpSessionConfigurator.java | 36 + .../SuperTenantSubscriptionEndpoint.java | 14 +- .../endpoint/TenantSubscriptionEndpoint.java | 21 +- .../endpoint/constants/Constants.java | 25 + .../authentication/Authenticator.java | 7 +- .../authentication/OAuthAuthenticator.java | 9 +- .../oauth/OAuthTokenValdiator.java | 48 +- .../device-view.hbs | 781 ++++----- .../device-view.js | 11 +- .../public/js/device-detail.js | 10 +- .../public/templates/operations-log.hbs | 24 - .../public/templates/policy-compliance.hbs | 3 +- .../operation-bar.hbs | 32 + .../operation-bar.js | 106 ++ .../operation-bar.json | 3 + .../public/js/operation-bar.js | 248 +++ .../templates/hidden-operations-android.hbs | 0 .../templates/hidden-operations-ios.hbs | 0 .../public/templates/operations.hbs | 0 .../operation-bar.hbs | 113 +- .../operation-bar.js | 129 +- .../public/js/operation-bar.js | 326 ++-- .../policy-edit.hbs | 19 +- .../public/js/android-policy-edit.js | 855 ++++++++++ .../public/templates/android-policy-edit.hbs | 1464 +++++++++++++++++ .../policy-wizard.hbs | 47 +- .../public/js/android-policy-operations.js | 842 ++++++++++ .../templates/android-policy-operations.hbs | 1464 +++++++++++++++++ .../private/config.json | 39 +- .../qr-modal.hbs | 64 + .../qr-modal.js | 23 + .../qr-modal.json | 3 + .../type-view.hbs | 88 +- .../pom.xml | 2 +- .../pom.xml | 37 +- .../main/resources/devicetypes/android.xml | 209 +-- 312 files changed, 7568 insertions(+), 1220 deletions(-) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard}/build.xml (84%) create mode 100644 components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/pom.xml create mode 100644 components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/assembly/src.xml rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Dashboard_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Dashboard_1.0.0/geo-dashboard.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Proximity_alert.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Speed_alert.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Stationery_alert.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Traffic_alert.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Within_alert.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/cep_info.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/database.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts_history.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_server_info.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/proximity_alert.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/speed_alert.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/stationery_alert.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/traffic_point.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/within_alert.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/remove_alerts.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/set_alerts.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/tile_servers.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/wms_endpoints.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.ie.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.Default.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/app.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/LICENSE (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/bootstrap-wizard.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/animation.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-codes.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-embedded.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7-codes.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/d3/c3.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font-awesome.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/LICENSE.txt (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/README.txt (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/config.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.eot (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.svg (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.ttf (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.woff (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/FontAwesome.otf (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.eot (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.svg (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.ttf (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.woff (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/TODO.Move_this_images_to_assets_images_folder (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers-2x.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon-2x.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-shadow.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.theme.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/L.Grid.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet-2x.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/leaflet.draw.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen@2x.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/leaflet.fullscreen.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/login.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/main.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/map.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/style.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/LICENSES (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/uikit.min.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/gadget.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/fav/wso2_fav.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-120.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-152.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-196.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-76.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon.ico (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers-2x.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon-2x.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-shadow.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/STOP.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/VEHICLE.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/danger.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/greenMarker.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-icon.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-shadow.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/pinkMarker.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/redMarker.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/info.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal2.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal2.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal2.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/alerted.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/normal.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/warning.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/offline.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize_2.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/stopIcon.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/warn.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/thumbnail.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/img/wso2-logo.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/include/commons.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/include/database.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/include/store_alerts.jag (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/index.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/app.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/application_options.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/LICENSE (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/BOOTSTRAP_LICENSE (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/bootstrap.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/C3_LICENSE (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/D3_LICENSE (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/c3.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/d3.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_fencing.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_proximity.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_remote.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-2.1.1.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-ui.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.CircleEditor.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Control.Locate.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Grid.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.MeasuringTool.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.PolySideLabel.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/LICENSE_RaphaelLayer (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Leaflet.fullscreen.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/MIT-LICENSE.txt (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Marker.Rotate.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-icon.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-shadow.png (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.draw.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.groupedlayercontrol.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.markercluster.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/raphael-min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/rlayer.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/show_alert_in_map.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/typeahead.bundle.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/LICENSES (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/uikit.min.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/GadgetGeoDashboard_1.0.0/geo-dashboard/js/websocket.js (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Dashboard-Http-Receiver_1.0.0/Geo-Receiver-HTTP-LocationStream.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Dashboard-Http-Receiver_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/Geo-ExecutionPlan-EventsFusionGenerateNotifications-1.0.0.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-ExecutionPlan-InputStandardizer_1.0.0/Geo-ExecutionPlan-InputStandardizer-1.0.0.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-ExecutionPlan-InputStandardizer_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-ExecutionPlan-Pass_through_1.0.0/Geo-ExecutionPlan-Pass_through-1.0.0.siddhiql (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-ExecutionPlan-Pass_through_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/Geo-Publisher-RDBMS-GeoAlertNotifications-1.0.0.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/Geo-Publisher-WebSocketLocal-FusedSpacialEvent-1.0.0.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/Geo-Publisher-WebSocketLocal-GeoAlertNotifications-1.0.0.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/ThemeGeoDashboard_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/ThemeGeoDashboard_1.0.0/geo-dashboard/css/dashboard.css (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/artifacts.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.AlertsNotifications_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.AlertsNotifications_1.0.0/org.wso2.geo.AlertsNotifications-1.0.0.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.FusedSpatialEvent_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.FusedSpatialEvent_1.0.0/org.wso2.geo.FusedSpatialEvent-1.0.0.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.LocationStream_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.LocationStream_1.0.0/org.wso2.geo.LocationStream-1.0.0.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.ProcessedSpatialEvents_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.ProcessedSpatialEvents_1.0.0/org.wso2.geo.ProcessedSpatialEvents-1.0.0.json (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.StandardSpatialEvents_1.0.0/artifact.xml (100%) rename {features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp => components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps}/org.wso2.geo.StandardSpatialEvents_1.0.0/org.wso2.geo.StandardSpatialEvents-1.0.0.json (100%) create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityData.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityReceiver.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationData.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationDataReceiver.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioData.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioDataReader.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallData.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallDataReceiver.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenData.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenDataReceiver.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsData.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsDataReceiver.java create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataReceiverManager.java create mode 100644 components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/HttpSessionConfigurator.java create mode 100644 components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/constants/Constants.java delete mode 100755 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.device-view/public/templates/operations-log.hbs create mode 100644 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.old.operation-bar/operation-bar.hbs create mode 100644 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.old.operation-bar/operation-bar.js create mode 100644 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.old.operation-bar/operation-bar.json create mode 100644 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.old.operation-bar/public/js/operation-bar.js rename 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 => cdmf.unit.device.type.android.old.operation-bar}/public/templates/hidden-operations-android.hbs (100%) rename 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 => cdmf.unit.device.type.android.old.operation-bar}/public/templates/hidden-operations-ios.hbs (100%) rename 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 => cdmf.unit.device.type.android.old.operation-bar}/public/templates/operations.hbs (100%) create mode 100644 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.policy-edit/public/js/android-policy-edit.js create mode 100644 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.policy-edit/public/templates/android-policy-edit.hbs create mode 100644 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.policy-wizard/public/js/android-policy-operations.js create mode 100644 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.policy-wizard/public/templates/android-policy-operations.hbs create mode 100644 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.qr-modal/qr-modal.hbs create mode 100644 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.qr-modal/qr-modal.js create mode 100644 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.qr-modal/qr-modal.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/build.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/build.xml similarity index 84% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/build.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/build.xml index 5d2b4dea52..1fee6c82ca 100644 --- a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/build.xml +++ b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/build.xml @@ -20,9 +20,8 @@ - - - + + @@ -31,7 +30,7 @@ - + diff --git a/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/pom.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/pom.xml new file mode 100644 index 0000000000..0e8d3b1f46 --- /dev/null +++ b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/pom.xml @@ -0,0 +1,77 @@ + + + + + + org.wso2.carbon.devicemgt-plugins + iot-analytics + 3.0.2-SNAPSHOT + ../pom.xml + + + 4.0.0 + org.wso2.carbon.iot.geo.dashboard + WSO2 Carbon - IoT Geo Dashboard C-APP + http://wso2.org + This feature contains the IoT geo dashboard gadget + pom + + + + + maven-antrun-plugin + 1.7 + + + process-resources + + + + + + + run + + + + + + maven-assembly-plugin + 2.5.5 + + ${project.artifactId}-${carbon.devicemgt.plugins.version} + false + + src/assembly/src.xml + + + + + create-archive + package + + single + + + + + + + + \ No newline at end of file diff --git a/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/assembly/src.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/assembly/src.xml new file mode 100644 index 0000000000..a5a375010e --- /dev/null +++ b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/assembly/src.xml @@ -0,0 +1,36 @@ + + + + src + + zip + + false + ${basedir}/src + + + ${basedir}/target/carbonapps + / + true + + + \ No newline at end of file diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Dashboard_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Dashboard_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Dashboard_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Dashboard_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Dashboard_1.0.0/geo-dashboard.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Dashboard_1.0.0/geo-dashboard.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Dashboard_1.0.0/geo-dashboard.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Dashboard_1.0.0/geo-dashboard.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Proximity_alert.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Proximity_alert.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Proximity_alert.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Proximity_alert.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Speed_alert.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Speed_alert.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Speed_alert.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Speed_alert.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Stationery_alert.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Stationery_alert.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Stationery_alert.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Stationery_alert.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Traffic_alert.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Traffic_alert.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Traffic_alert.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Traffic_alert.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Within_alert.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Within_alert.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Within_alert.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/alerts/Geo-ExecutionPlan-Within_alert.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/cep_info.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/cep_info.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/cep_info.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/cep_info.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/database.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/database.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/database.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/conf/database.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts_history.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts_history.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts_history.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_alerts_history.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_server_info.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_server_info.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_server_info.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/get_server_info.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/proximity_alert.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/proximity_alert.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/proximity_alert.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/proximity_alert.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/speed_alert.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/speed_alert.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/speed_alert.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/speed_alert.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/stationery_alert.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/stationery_alert.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/stationery_alert.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/stationery_alert.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/traffic_point.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/traffic_point.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/traffic_point.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/traffic_point.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/within_alert.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/within_alert.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/within_alert.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/modals/within_alert.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/remove_alerts.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/remove_alerts.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/remove_alerts.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/remove_alerts.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/set_alerts.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/set_alerts.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/set_alerts.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/set_alerts.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/tile_servers.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/tile_servers.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/tile_servers.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/tile_servers.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/wms_endpoints.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/wms_endpoints.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/wms_endpoints.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/controllers/wms_endpoints.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.ie.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.ie.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.ie.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/L.Control.Locate.ie.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.Default.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.Default.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.Default.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.Default.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/MarkerCluster.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/app.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/app.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/app.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/app.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/LICENSE b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/LICENSE similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/LICENSE rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/LICENSE diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/bootstrap-wizard.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/bootstrap-wizard.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/bootstrap-wizard.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap-wizard-lib/bootstrap-wizard.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/bootstrap.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/animation.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/animation.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/animation.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/animation.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-codes.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-codes.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-codes.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-codes.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-embedded.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-embedded.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-embedded.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-embedded.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7-codes.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7-codes.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7-codes.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7-codes.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa-ie7.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/css/locate-fa.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/d3/c3.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/d3/c3.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/d3/c3.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/d3/c3.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font-awesome.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font-awesome.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font-awesome.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font-awesome.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/LICENSE.txt b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/LICENSE.txt similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/LICENSE.txt rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/LICENSE.txt diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/README.txt b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/README.txt similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/README.txt rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/README.txt diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/config.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/config.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/config.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/config.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.eot b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.eot similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.eot rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.eot diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.svg b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.svg similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.svg rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.svg diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.ttf b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.ttf similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.ttf rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.ttf diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.woff b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.woff similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.woff rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/font/locate-fa.woff diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/FontAwesome.otf b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/FontAwesome.otf similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/FontAwesome.otf rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/FontAwesome.otf diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.eot b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.eot similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.eot rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.eot diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.svg b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.svg similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.svg rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.svg diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.ttf b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.ttf similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.ttf rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.ttf diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.woff b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.woff similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.woff rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/fonts/fontawesome-webfont.woff diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/TODO.Move_this_images_to_assets_images_folder b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/TODO.Move_this_images_to_assets_images_folder similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/TODO.Move_this_images_to_assets_images_folder rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/TODO.Move_this_images_to_assets_images_folder diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers-2x.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers-2x.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers-2x.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers-2x.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/layers.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon-2x.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon-2x.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon-2x.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon-2x.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-icon.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-shadow.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-shadow.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-shadow.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/images/marker-shadow.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.theme.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.theme.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.theme.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/jquery-ui.theme.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/L.Grid.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/L.Grid.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/L.Grid.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/L.Grid.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet-2x.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet-2x.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet-2x.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet-2x.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/images/spritesheet.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/leaflet.draw.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/leaflet.draw.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/leaflet.draw.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet/leaflet.draw.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen@2x.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen@2x.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen@2x.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/fullscreen@2x.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/leaflet.fullscreen.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/leaflet.fullscreen.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/leaflet.fullscreen.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/leaflet_fullscreen/leaflet.fullscreen.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/login.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/login.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/login.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/login.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/main.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/main.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/main.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/main.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/map.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/map.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/map.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/map.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/style.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/style.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/style.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/style.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/LICENSES b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/LICENSES similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/LICENSES rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/LICENSES diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.addons.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.almost-flat.addons.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/addons/uikit.gradient.addons.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/uikit.min.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/uikit.min.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/uikit.min.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/css/uikit/uikit.min.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/gadget.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/gadget.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/gadget.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/gadget.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/fav/wso2_fav.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/fav/wso2_fav.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/fav/wso2_fav.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/fav/wso2_fav.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-120.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-120.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-120.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-120.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-152.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-152.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-152.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-152.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-196.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-196.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-196.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-196.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-76.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-76.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-76.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon-76.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon.ico b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon.ico similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon.ico rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/favicon.ico diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers-2x.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers-2x.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers-2x.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers-2x.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/layers.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon-2x.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon-2x.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon-2x.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon-2x.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-icon.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-shadow.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-shadow.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-shadow.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/marker-shadow.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/STOP.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/STOP.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/STOP.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/STOP.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/VEHICLE.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/VEHICLE.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/VEHICLE.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/VEHICLE.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/arrow_warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/danger.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/danger.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/danger.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/danger.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/greenMarker.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/greenMarker.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/greenMarker.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/greenMarker.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-icon.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-icon.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-icon.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-icon.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-shadow.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-shadow.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-shadow.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/marker-shadow.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/pinkMarker.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/pinkMarker.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/pinkMarker.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/pinkMarker.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/redMarker.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/redMarker.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/redMarker.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/default_icons/redMarker.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/info.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/info.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/info.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/info.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/moving/device-warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/device-warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal2.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal2.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal2.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-normal2.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/non_moving/stationary-warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/moving/warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/default/non-moving/warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal2.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal2.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal2.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/normal2.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stationary/non-moving/warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal2.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal2.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal2.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/normal2.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/stop/non-moving/warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/moving/warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/alerted.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/alerted.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/alerted.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/alerted.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/normal.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/normal.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/normal.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/normal.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/warning.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/warning.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/warning.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/object-types/vehicle/non-moving/warning.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/offline.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/offline.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/offline.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/offline.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize_2.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize_2.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize_2.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/resize_2.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/stopIcon.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/stopIcon.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/stopIcon.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/stopIcon.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/warn.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/warn.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/warn.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/markers/warn.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/thumbnail.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/thumbnail.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/thumbnail.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/thumbnail.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/wso2-logo.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/wso2-logo.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/img/wso2-logo.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/img/wso2-logo.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/include/commons.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/include/commons.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/include/commons.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/include/commons.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/include/database.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/include/database.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/include/database.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/include/database.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/include/store_alerts.jag b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/include/store_alerts.jag similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/include/store_alerts.jag rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/include/store_alerts.jag diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/index.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/index.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/index.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/index.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/app.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/app.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/app.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/app.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/application_options.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/application_options.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/application_options.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/application_options.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/LICENSE b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/LICENSE similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/LICENSE rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/LICENSE diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap-wizard-lib/bootstrap-wizard.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/BOOTSTRAP_LICENSE b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/BOOTSTRAP_LICENSE similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/BOOTSTRAP_LICENSE rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/BOOTSTRAP_LICENSE diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/bootstrap.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/bootstrap.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/bootstrap.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/bootstrap/bootstrap.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/C3_LICENSE b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/C3_LICENSE similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/C3_LICENSE rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/C3_LICENSE diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/D3_LICENSE b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/D3_LICENSE similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/D3_LICENSE rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/D3_LICENSE diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/c3.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/c3.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/c3.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/c3.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/d3.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/d3.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/d3.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/d3/d3.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_fencing.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_fencing.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_fencing.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_fencing.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_proximity.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_proximity.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_proximity.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_proximity.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_remote.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_remote.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_remote.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/geo_remote.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-2.1.1.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-2.1.1.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-2.1.1.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-2.1.1.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-ui.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-ui.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-ui.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/jquery/jquery-ui.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.CircleEditor.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.CircleEditor.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.CircleEditor.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.CircleEditor.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Control.Locate.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Control.Locate.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Control.Locate.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Control.Locate.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Grid.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Grid.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Grid.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.Grid.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.MeasuringTool.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.MeasuringTool.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.MeasuringTool.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.MeasuringTool.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.PolySideLabel.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.PolySideLabel.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.PolySideLabel.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/L.PolySideLabel.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/LICENSE_RaphaelLayer b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/LICENSE_RaphaelLayer similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/LICENSE_RaphaelLayer rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/LICENSE_RaphaelLayer diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Leaflet.fullscreen.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Leaflet.fullscreen.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Leaflet.fullscreen.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Leaflet.fullscreen.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/MIT-LICENSE.txt b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/MIT-LICENSE.txt similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/MIT-LICENSE.txt rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/MIT-LICENSE.txt diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Marker.Rotate.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Marker.Rotate.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Marker.Rotate.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/Marker.Rotate.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-icon.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-icon.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-icon.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-icon.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-shadow.png b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-shadow.png similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-shadow.png rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/images/marker-shadow.png diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.draw.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.draw.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.draw.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.draw.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.groupedlayercontrol.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.groupedlayercontrol.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.groupedlayercontrol.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.groupedlayercontrol.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.markercluster.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.markercluster.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.markercluster.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/leaflet.markercluster.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/raphael-min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/raphael-min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/raphael-min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/raphael-min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/rlayer.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/rlayer.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/rlayer.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/leaflet/rlayer.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/show_alert_in_map.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/show_alert_in_map.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/show_alert_in_map.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/show_alert_in_map.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/typeahead.bundle.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/typeahead.bundle.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/typeahead.bundle.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/typeahead.bundle.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/LICENSES b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/LICENSES similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/LICENSES rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/LICENSES diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/autocomplete.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/datepicker.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-password.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/form-select.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/htmleditor.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/nestable.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/notify.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/pagination.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/search.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sortable.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/sticky.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/timepicker.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/addons/upload.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/uikit.min.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/uikit.min.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/uikit.min.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/uikit/uikit.min.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/websocket.js b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/websocket.js similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/GadgetGeoDashboard_1.0.0/geo-dashboard/js/websocket.js rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/GadgetGeoDashboard_1.0.0/geo-dashboard/js/websocket.js diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Dashboard-Http-Receiver_1.0.0/Geo-Receiver-HTTP-LocationStream.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Dashboard-Http-Receiver_1.0.0/Geo-Receiver-HTTP-LocationStream.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Dashboard-Http-Receiver_1.0.0/Geo-Receiver-HTTP-LocationStream.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Dashboard-Http-Receiver_1.0.0/Geo-Receiver-HTTP-LocationStream.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Dashboard-Http-Receiver_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Dashboard-Http-Receiver_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Dashboard-Http-Receiver_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Dashboard-Http-Receiver_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/Geo-ExecutionPlan-EventsFusionGenerateNotifications-1.0.0.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/Geo-ExecutionPlan-EventsFusionGenerateNotifications-1.0.0.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/Geo-ExecutionPlan-EventsFusionGenerateNotifications-1.0.0.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/Geo-ExecutionPlan-EventsFusionGenerateNotifications-1.0.0.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-EventsFusionGenerateNotifications_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-InputStandardizer_1.0.0/Geo-ExecutionPlan-InputStandardizer-1.0.0.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-InputStandardizer_1.0.0/Geo-ExecutionPlan-InputStandardizer-1.0.0.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-InputStandardizer_1.0.0/Geo-ExecutionPlan-InputStandardizer-1.0.0.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-InputStandardizer_1.0.0/Geo-ExecutionPlan-InputStandardizer-1.0.0.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-InputStandardizer_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-InputStandardizer_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-InputStandardizer_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-InputStandardizer_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-Pass_through_1.0.0/Geo-ExecutionPlan-Pass_through-1.0.0.siddhiql b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-Pass_through_1.0.0/Geo-ExecutionPlan-Pass_through-1.0.0.siddhiql similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-Pass_through_1.0.0/Geo-ExecutionPlan-Pass_through-1.0.0.siddhiql rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-Pass_through_1.0.0/Geo-ExecutionPlan-Pass_through-1.0.0.siddhiql diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-Pass_through_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-Pass_through_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-ExecutionPlan-Pass_through_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-ExecutionPlan-Pass_through_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/Geo-Publisher-RDBMS-GeoAlertNotifications-1.0.0.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/Geo-Publisher-RDBMS-GeoAlertNotifications-1.0.0.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/Geo-Publisher-RDBMS-GeoAlertNotifications-1.0.0.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/Geo-Publisher-RDBMS-GeoAlertNotifications-1.0.0.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-RDBMS-GeoAlertNotifications_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/Geo-Publisher-WebSocketLocal-FusedSpacialEvent-1.0.0.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/Geo-Publisher-WebSocketLocal-FusedSpacialEvent-1.0.0.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/Geo-Publisher-WebSocketLocal-FusedSpacialEvent-1.0.0.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/Geo-Publisher-WebSocketLocal-FusedSpacialEvent-1.0.0.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-FusedSpacialEvent_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/Geo-Publisher-WebSocketLocal-GeoAlertNotifications-1.0.0.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/Geo-Publisher-WebSocketLocal-GeoAlertNotifications-1.0.0.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/Geo-Publisher-WebSocketLocal-GeoAlertNotifications-1.0.0.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/Geo-Publisher-WebSocketLocal-GeoAlertNotifications-1.0.0.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/Geo-Publisher-WebSocketLocal-GeoAlertNotifications_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/ThemeGeoDashboard_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/ThemeGeoDashboard_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/ThemeGeoDashboard_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/ThemeGeoDashboard_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/ThemeGeoDashboard_1.0.0/geo-dashboard/css/dashboard.css b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/ThemeGeoDashboard_1.0.0/geo-dashboard/css/dashboard.css similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/ThemeGeoDashboard_1.0.0/geo-dashboard/css/dashboard.css rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/ThemeGeoDashboard_1.0.0/geo-dashboard/css/dashboard.css diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/artifacts.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/artifacts.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/artifacts.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/artifacts.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.AlertsNotifications_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.AlertsNotifications_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.AlertsNotifications_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.AlertsNotifications_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.AlertsNotifications_1.0.0/org.wso2.geo.AlertsNotifications-1.0.0.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.AlertsNotifications_1.0.0/org.wso2.geo.AlertsNotifications-1.0.0.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.AlertsNotifications_1.0.0/org.wso2.geo.AlertsNotifications-1.0.0.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.AlertsNotifications_1.0.0/org.wso2.geo.AlertsNotifications-1.0.0.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.FusedSpatialEvent_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.FusedSpatialEvent_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.FusedSpatialEvent_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.FusedSpatialEvent_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.FusedSpatialEvent_1.0.0/org.wso2.geo.FusedSpatialEvent-1.0.0.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.FusedSpatialEvent_1.0.0/org.wso2.geo.FusedSpatialEvent-1.0.0.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.FusedSpatialEvent_1.0.0/org.wso2.geo.FusedSpatialEvent-1.0.0.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.FusedSpatialEvent_1.0.0/org.wso2.geo.FusedSpatialEvent-1.0.0.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.LocationStream_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.LocationStream_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.LocationStream_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.LocationStream_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.LocationStream_1.0.0/org.wso2.geo.LocationStream-1.0.0.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.LocationStream_1.0.0/org.wso2.geo.LocationStream-1.0.0.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.LocationStream_1.0.0/org.wso2.geo.LocationStream-1.0.0.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.LocationStream_1.0.0/org.wso2.geo.LocationStream-1.0.0.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.ProcessedSpatialEvents_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.ProcessedSpatialEvents_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.ProcessedSpatialEvents_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.ProcessedSpatialEvents_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.ProcessedSpatialEvents_1.0.0/org.wso2.geo.ProcessedSpatialEvents-1.0.0.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.ProcessedSpatialEvents_1.0.0/org.wso2.geo.ProcessedSpatialEvents-1.0.0.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.ProcessedSpatialEvents_1.0.0/org.wso2.geo.ProcessedSpatialEvents-1.0.0.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.ProcessedSpatialEvents_1.0.0/org.wso2.geo.ProcessedSpatialEvents-1.0.0.json diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.StandardSpatialEvents_1.0.0/artifact.xml b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.StandardSpatialEvents_1.0.0/artifact.xml similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.StandardSpatialEvents_1.0.0/artifact.xml rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.StandardSpatialEvents_1.0.0/artifact.xml diff --git a/features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.StandardSpatialEvents_1.0.0/org.wso2.geo.StandardSpatialEvents-1.0.0.json b/components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.StandardSpatialEvents_1.0.0/org.wso2.geo.StandardSpatialEvents-1.0.0.json similarity index 100% rename from features/analytics-feature/org.wso2.carbon.iot.geo.dashboard.feature/src/main/capp/org.wso2.geo.StandardSpatialEvents_1.0.0/org.wso2.geo.StandardSpatialEvents-1.0.0.json rename to components/analytics/iot-analytics/org.wso2.carbon.iot.geo.dashboard/src/main/resources/carbonapps/org.wso2.geo.StandardSpatialEvents_1.0.0/org.wso2.geo.StandardSpatialEvents-1.0.0.json diff --git a/components/analytics/iot-analytics/pom.xml b/components/analytics/iot-analytics/pom.xml index 80a0adeec1..0b7968a0ec 100644 --- a/components/analytics/iot-analytics/pom.xml +++ b/components/analytics/iot-analytics/pom.xml @@ -34,6 +34,7 @@ org.wso2.carbon.device.mgt.iot.analytics + org.wso2.carbon.iot.geo.dashboard diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/build.gradle b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/build.gradle index 0c360c9b12..9f6b11adf4 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/build.gradle +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/build.gradle @@ -61,4 +61,5 @@ dependencies { compile 'org.altbeacon:android-beacon-library:2.8.1' compile 'uk.co.alt236:easycursor-android:1.0.0' compile 'uk.co.alt236:bluetooth-le-library-android:1.0.0' + compile 'com.google.android.gms:play-services-location:9.4.0' } diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml index 7ba9b334cc..2b0f926dad 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml @@ -11,11 +11,16 @@ - - + + + + + + + + + @@ -53,13 +60,6 @@ - - - - - batteryDataMap = SenseDataHolder.getBatteryDataHolder(); if (!batteryDataMap.isEmpty()) { for (BatteryData batteryData : batteryDataMap) { Event event = new Event(); event.setTimestamp(batteryData.getTimestamp()); event.setBattery(batteryData.getLevel()); + event.setBatteryTemperature(batteryData.getTemperature()); + event.setBatteryStatus(batteryData.getStatus()); + event.setBatteryState(batteryData.getState().toString()); events.add(event); } } SenseDataHolder.resetBatteryDataHolder(); + //retrieve location data. List locationDataMap = SenseDataHolder.getLocationDataHolder(); @@ -132,7 +140,7 @@ public class DataPublisherService extends Service { event.setGps(new double[]{locationData.getLatitude(), locationData.getLongitude()}); events.add(event); } - } + } SenseDataHolder.resetLocationDataHolder(); //retrieve speed data. @@ -186,6 +194,90 @@ public class DataPublisherService extends Service { } } SenseDataHolder.resetWordDataHolder(); + + // retrieve call data. + List callDataList = SenseDataHolder.getCallDataHolder(); + if (!callDataList.isEmpty()) { + for (CallData callData : callDataList) { + Event event = new Event(); + event.setCallNumber(callData.getPhoneNumber()); + event.setCallType(callData.getType().toString().toLowerCase()); + event.setCallStartTime(callData.getStartTime()); + event.setCallEndTime(callData.getEndTime()); + event.setTimestamp(callData.getStartTime()); + + events.add(event); + } + } + SenseDataHolder.resetCallDataHolder(); + + // retrieve screen data. + List screenDataList = SenseDataHolder.getScreenDataHolder(); + if (!screenDataList.isEmpty()) { + for (ScreenData screenData : screenDataList) { + Event event = new Event(); + event.setScreenState(screenData.getAction()); + event.setTimestamp(screenData.getTimestamp()); + + events.add(event); + } + } + SenseDataHolder.resetScreenDataHolder(); + + // retrieve audio data. + List audioDataList = SenseDataHolder.getAudioDataHolder(); + if (!audioDataList.isEmpty()) { + for (AudioData audioData : audioDataList) { + Event event = new Event(); + event.setTimestamp(audioData.getTimestamp()); + event.setAudioPlaying(audioData.isPlaying()); + event.setHeadsetOn(audioData.isHeadsetOn()); + event.setMusicVolume(audioData.getMusicVolume()); + events.add(event); + } + } + SenseDataHolder.resetAudioDataHolder(); + + // retrieve activity data. + List activityDataList = SenseDataHolder.getActivityDataHolder(); + if (!activityDataList.isEmpty()) { + for (ActivityData activityData : activityDataList) { + Event event = new Event(); + event.setTimestamp(activityData.getTimestamp()); + event.setActivityType(activityData.getActivity()); + event.setConfidence(activityData.getConfidence()); + events.add(event); + } + } + SenseDataHolder.resetActivityDataHolder(); + + // retrieve sms data. + List smsDataList = SenseDataHolder.getSmsDataHolder(); + if (!smsDataList.isEmpty()) { + for (SmsData smsData : smsDataList) { + Event event = new Event(); + event.setTimestamp(smsData.getTimestamp()); + event.setSmsNumber(smsData.getPhoneNumber()); + events.add(event); + } + } + SenseDataHolder.resetSmsDataHolder(); + + + // retrieve application data. + List appDataList = SenseDataHolder.getApplicationDataHolder(); + if (!appDataList.isEmpty()) { + for (ApplicationData appData : appDataList) { + Event event = new Event(); + event.setTimestamp(appData.getTimestamp()); + event.setPackageName(appData.getPackageName()); + event.setAction(appData.getAction().toString()); + events.add(event); + } + } + SenseDataHolder.resetApplicationDataHolder(); + + //publish the data if (events.size() > 0 && LocalRegistry.isEnrolled(context)) { String user = LocalRegistry.getUsername(context); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/Event.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/Event.java index 5b5446d707..1bc91c3a32 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/Event.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/Event.java @@ -16,6 +16,12 @@ public class Event { private float accelerometer[] = new float[]{0, 0, 0}; //x,y,z private float magnetic[] = new float[]{0, 0, 0};; //x,y,z private float gyroscope[] = new float[]{0, 0, 0};; //x,y,z + private int batteryTemperature; + private int batteryStatus; + /** + * LOW or OK + */ + private String batteryState; private float light; private float pressure; private float proximity; @@ -32,8 +38,28 @@ public class Event { private int beaconMinor; private int beaconUuid; private String beaconProximity; - - + private String callNumber; + private String callType; + private long callStartTime; + private long callEndTime; + + /** + * State of the phone display. + * Possible values are: + * on + * off + * unknown + */ + private String screenState; + + private boolean audioPlaying; + private boolean headsetOn; + private int musicVolume; + private int activityType; + private int confidence; + private String smsNumber; + private String packageName; + private String action; private int getBattery() { return battery; @@ -44,6 +70,33 @@ public class Event { this.battery = battery; } + public int getBatteryTemperature() { + return batteryTemperature; + } + + public void setBatteryTemperature(int batteryTemperature) { + this.type = "battery"; // Type is battery + this.batteryTemperature = batteryTemperature; + } + + public int getBatteryStatus() { + return batteryStatus; + } + + public void setBatteryStatus(int batteryStatus) { + this.type = "battery"; // Type is battery + this.batteryStatus = batteryStatus; + } + + public String getBatteryState() { + return batteryState != null ? batteryState : ""; + } + + public void setBatteryState(String batteryState) { + this.type = "battery"; // Type is battery + this.batteryState = batteryState; + } + private double[] getGps() { return gps; } @@ -125,6 +178,15 @@ public class Event { this.rotation = rotation; } + public void setSmsNumber(String smsNumber) { + this.type = "sms"; + this.smsNumber = smsNumber; + } + + public String getSmsNumber() { + return smsNumber; + } + private String getWordSessionId() { return wordSessionId != null ? wordSessionId : ""; } @@ -142,6 +204,24 @@ public class Event { this.word = word; } + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.type = "application"; + this.packageName = packageName; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.type = "application"; + this.action = action; + } + private long getTimestamp() { return timestamp; } @@ -181,6 +261,9 @@ public class Event { public float getSpeed() { this.type = "speed"; + if (Float.isInfinite(speed) || Float.isNaN(speed)) { + return -1.0f; + } return speed; } @@ -192,7 +275,7 @@ public class Event { public String getTurns() { - if (turn == null || turn.isEmpty() || turn.equals("null")){ + if (turn == null || turn.isEmpty() || turn.equals("null")) { turn = "No Turns"; } return turn; @@ -234,8 +317,98 @@ public class Event { } public String getBeaconProximity() { - this.type = "beaconProximity"; - return beaconProximity; + return beaconProximity != null ? beaconProximity : ""; + } + + public String getCallNumber() { + return callNumber != null ? callNumber : ""; + } + + public void setCallNumber(String callNumber) { + this.type = "call"; + this.callNumber = callNumber; + } + + public String getCallType() { + return callType != null ? callType : ""; + } + + public void setCallType(String callType) { + this.type = "call"; + this.callType = callType; + } + + public long getCallStartTime() { + return callStartTime; + } + + public void setCallStartTime(long callStartTime) { + this.type = "call"; + this.callStartTime = callStartTime; + } + + public long getCallEndTime() { + return callEndTime; + } + + public void setCallEndTime(long callEndTime) { + this.type = "call"; + this.callEndTime = callEndTime; + } + + public String getScreenState() { + return screenState != null ? screenState : ""; + } + + public void setScreenState(String screenState) { + this.type = "screen"; + this.screenState = screenState; + } + + public boolean isAudioPlaying() { + return audioPlaying; + } + + public void setAudioPlaying(boolean audioPlaying) { + this.type = "audio"; + this.audioPlaying = audioPlaying; + } + + public boolean isHeadsetOn() { + return headsetOn; + } + + public void setHeadsetOn(boolean headsetOn) { + this.type = "audio"; + this.headsetOn = headsetOn; + } + + public int getMusicVolume() { + return musicVolume; + } + + public void setMusicVolume(int musicVolume) { + this.type = "audio"; + this.musicVolume = musicVolume; + } + + public int getActivityType() { + return activityType; + } + + public void setActivityType(int activityType) { + this.type = "activity"; + this.activityType = activityType; + } + + public int getConfidence() { + return confidence; + } + + public void setConfidence(int confidence) { + // Do not set type here since it can be used for various types. + // However, now it is being used by activity only + this.confidence = confidence; } public JSONObject getEvent() throws JSONException { @@ -248,7 +421,13 @@ public class Event { jsonEvent.put("metaData", jsonMetaData); JSONObject jsonPayloadData = new JSONObject(); + // battery jsonPayloadData.put("battery", getBattery()); + jsonPayloadData.put("battery_state", getBatteryState()); + jsonPayloadData.put("battery_status", getBatteryStatus()); + jsonPayloadData.put("battery_temperature", getBatteryTemperature()); + + //gps double gpsEvents[] = getGps(); jsonPayloadData.put("gps_lat", gpsEvents[0]); @@ -301,6 +480,29 @@ public class Event { jsonPayloadData.put("word_sessionId", getWordSessionId()); jsonPayloadData.put("word_status", getWordStatus()); + // call + jsonPayloadData.put("call_number", getCallNumber()); + jsonPayloadData.put("call_type", getCallType()); + jsonPayloadData.put("call_start_time", getCallStartTime()); + jsonPayloadData.put("call_end_time", getCallEndTime()); + + // screen + jsonPayloadData.put("screen_state", getScreenState()); + + // headset + jsonPayloadData.put("audio_playing", isAudioPlaying()); + jsonPayloadData.put("headset_on", isHeadsetOn()); + jsonPayloadData.put("music_volume", getMusicVolume()); + + jsonPayloadData.put("activity_type", getActivityType()); + jsonPayloadData.put("confidence", getConfidence()); + + jsonPayloadData.put("sms_number", getSmsNumber()); + + jsonPayloadData.put("application_name", getPackageName()); + jsonPayloadData.put("action", getAction()); + + jsonEvent.put("payloadData", jsonPayloadData); return jsonEvent; diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java index 0aac980762..37e3356c68 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java @@ -16,11 +16,11 @@ package org.wso2.carbon.iot.android.sense.event; import android.app.Service; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.os.IBinder; + import org.wso2.carbon.iot.android.sense.event.streams.SenseDataCollector; -import org.wso2.carbon.iot.android.sense.event.streams.battery.BatteryDataReceiver; import org.wso2.carbon.iot.android.sense.util.LocalRegistry; +import org.wso2.carbon.iot.android.sense.util.SenseDataReceiverManager; import org.wso2.carbon.iot.android.sense.util.SenseWakeLock; /** @@ -48,10 +48,14 @@ public class SenseService extends Service { //Below triggers the data collection for sensors,location and battery. SenseDataCollector Sensor = new SenseDataCollector(this, SenseDataCollector.DataType.SENSOR); SenseDataCollector Location = new SenseDataCollector(this, SenseDataCollector.DataType.LOCATION); - registerReceiver(new BatteryDataReceiver(), new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); SenseDataCollector speed = new SenseDataCollector(this, SenseDataCollector.DataType.SPEED); - - + SenseDataCollector audio = new SenseDataCollector(this, SenseDataCollector.DataType.AUDIO); + SenseDataReceiverManager.registerBatteryDataReceiver(this); + SenseDataReceiverManager.registerScreenDataReceiver(this); + SenseDataReceiverManager.registerCallDataReceiver(this); + SenseDataReceiverManager.registerActivityDataReceiver(this); + SenseDataReceiverManager.registerSmsDataReceiver(this); + SenseDataReceiverManager.registerAppDataReceiver(this); //service will not be stopped until we manually stop the service return Service.START_NOT_STICKY; @@ -59,6 +63,13 @@ public class SenseService extends Service { @Override public void onDestroy() { + SenseDataReceiverManager.unregisterBatteryDataReceiver(this); + SenseDataReceiverManager.unregisterScreenDataReceiver(this); + SenseDataReceiverManager.unregisterCallDataReceiver(this); + SenseDataReceiverManager.unregisterActivityDataReceiver(this); + SenseDataReceiverManager.unregisterSmsDataReceiver(this); + SenseDataReceiverManager.unregisterAppDataReceiver(this); + SenseWakeLock.releaseCPUWakeLock(); super.onDestroy(); } diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/SenseDataCollector.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/SenseDataCollector.java index 4899b29b8c..726e55fd41 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/SenseDataCollector.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/SenseDataCollector.java @@ -19,13 +19,14 @@ import org.wso2.carbon.iot.android.sense.event.streams.Location.LocationDataRead import org.wso2.carbon.iot.android.sense.event.streams.Sensor.SensorDataReader; import org.wso2.carbon.iot.android.sense.event.streams.Speed.SpeedDataReader; import org.wso2.carbon.iot.android.sense.beacon.MonitoringActivity; +import org.wso2.carbon.iot.android.sense.event.streams.audio.AudioDataReader; /** * This class triggered by service to collect the sensor data. */ public class SenseDataCollector { public enum DataType { - SENSOR, LOCATION,SPEED + SENSOR, LOCATION,SPEED, AUDIO } public SenseDataCollector(Context ctx, DataType dt) { @@ -40,6 +41,9 @@ public class SenseDataCollector { case SPEED: dr = new SpeedDataReader(ctx); break; + case AUDIO: + dr = new AudioDataReader(ctx); + break; } if (dr != null) { diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityData.java new file mode 100644 index 0000000000..772351c5bd --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityData.java @@ -0,0 +1,67 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.activity; + +import java.util.Date; + +public class ActivityData { + /** + * 0 - In vehicle + * 1 - Bicycle + * 2 - Foot + * 3 - Still + * 4 - Unknown + * 5 - Tilting + * 7 - Walking + * 8 - Running + */ + private int activity; + private int confidence; + private long timestamp; + + ActivityData(int activity, int confidence) { + this.activity = activity; + this.confidence = confidence; + this.timestamp = new Date().getTime(); + } + + public int getActivity() { + return activity; + } + + public void setActivity(int activity) { + this.activity = activity; + } + + public int getConfidence() { + return confidence; + } + + public void setConfidence(int confidence) { + this.confidence = confidence; + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityReceiver.java new file mode 100644 index 0000000000..3220491983 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/activity/ActivityReceiver.java @@ -0,0 +1,54 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.activity; + +import android.app.IntentService; +import android.content.Intent; + +import com.google.android.gms.location.ActivityRecognitionResult; +import com.google.android.gms.location.DetectedActivity; + +import org.wso2.carbon.iot.android.sense.util.SenseDataHolder; + +public class ActivityReceiver extends IntentService { + public static final int MINIMUM_CONFIDENCE = 75; + + /** + * Retrieve the information for every 10 seconds. + */ + public static final long UPDATE_INTERVAL = 10000; + + public ActivityReceiver() { + super(ActivityReceiver.class.getName()); + } + + @Override + protected void onHandleIntent(Intent intent) { + if (ActivityRecognitionResult.hasResult(intent)) { + ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent); + + for (DetectedActivity activity : result.getProbableActivities()) { + if (activity.getConfidence() >= MINIMUM_CONFIDENCE) { + ActivityData data = new ActivityData(activity.getType(), activity.getConfidence()); + SenseDataHolder.getActivityDataHolder().add(data); + } + } + } + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationData.java new file mode 100644 index 0000000000..1443e36b94 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationData.java @@ -0,0 +1,61 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.application; + +import java.util.Date; + +public class ApplicationData { + public enum Action { + INSTALL, REMOVE + } + + private long timestamp; + private String packageName; + private Action action; + + ApplicationData(String packageName, Action action) { + this.packageName = packageName; + this.action = action; + this.timestamp = new Date().getTime(); + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public Action getAction() { + return action; + } + + public void setAction(Action action) { + this.action = action; + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationDataReceiver.java new file mode 100644 index 0000000000..8cb52550fe --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/application/ApplicationDataReceiver.java @@ -0,0 +1,45 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.application; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import org.wso2.carbon.iot.android.sense.util.SenseDataHolder; + +/** + * Currently interested on package add and remove only. Can be extended for modification. + */ +public class ApplicationDataReceiver extends BroadcastReceiver { + + + @Override + public void onReceive(Context context, Intent intent) { + String packageName = intent.getData().toString().substring(8); + ApplicationData appData; + if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) { + appData = new ApplicationData(packageName, ApplicationData.Action.INSTALL); + } else { + // Removed + appData = new ApplicationData(packageName, ApplicationData.Action.REMOVE); + } + SenseDataHolder.getApplicationDataHolder().add(appData); + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioData.java new file mode 100644 index 0000000000..0449d32919 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioData.java @@ -0,0 +1,58 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.audio; + +public class AudioData { + private long timestamp; + private boolean headsetOn; + private int musicVolume; + private boolean playing; + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public boolean isHeadsetOn() { + return headsetOn; + } + + public void setHeadsetOn(boolean headsetOn) { + this.headsetOn = headsetOn; + } + + public int getMusicVolume() { + return musicVolume; + } + + public void setMusicVolume(int musicVolume) { + this.musicVolume = musicVolume; + } + + public boolean isPlaying() { + return playing; + } + + public void setPlaying(boolean playing) { + this.playing = playing; + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioDataReader.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioDataReader.java new file mode 100644 index 0000000000..1a5f85c092 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/audio/AudioDataReader.java @@ -0,0 +1,50 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.audio; + +import android.content.Context; +import android.media.AudioManager; +import android.util.Log; + +import org.wso2.carbon.iot.android.sense.event.streams.DataReader; +import org.wso2.carbon.iot.android.sense.util.SenseDataHolder; + +import java.util.Date; + +public class AudioDataReader extends DataReader { + + private static final String TAG = AudioDataReader.class.getName(); + private Context context; + + public AudioDataReader(Context context) { + this.context = context; + } + + @Override + public void run() { + Log.d(TAG, "Running AudioDataReader"); + AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); + AudioData audioData = new AudioData(); + audioData.setTimestamp(new Date().getTime()); + audioData.setPlaying(manager.isMusicActive()); + audioData.setHeadsetOn(manager.isWiredHeadsetOn()); + audioData.setMusicVolume(manager.getStreamVolume(AudioManager.STREAM_MUSIC)); + SenseDataHolder.getAudioDataHolder().add(audioData); + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryData.java index 666e02a85f..7a4d7413aa 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryData.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryData.java @@ -25,6 +25,10 @@ import java.util.Date; */ public class BatteryData { + public enum State { + LOW, OK + } + private int health; private int level; private int plugged; @@ -34,6 +38,7 @@ public class BatteryData { private int temperature; private int voltage; private long timestamp; + private State state; BatteryData(Intent intent) { timestamp = new Date().getTime(); @@ -46,7 +51,12 @@ public class BatteryData { String technology = intent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY); temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); + state = State.OK; + } + BatteryData(State state) { + this.timestamp = new Date().getTime(); + this.state = state; } public int getHealth() { @@ -121,4 +131,12 @@ public class BatteryData { public void setTimestamp(long timestamp) { this.timestamp = timestamp; } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } } diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java index 9fffa1c157..794f69b3db 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java @@ -32,7 +32,13 @@ public class BatteryDataReceiver extends BroadcastReceiver { */ @Override public void onReceive(Context context, Intent intent) { - SenseDataHolder.getBatteryDataHolder().add(new BatteryData(intent)); + if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())) { + SenseDataHolder.getBatteryDataHolder().add(new BatteryData(BatteryData.State.OK)); + } else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) { + SenseDataHolder.getBatteryDataHolder().add(new BatteryData(BatteryData.State.LOW)); + } else { + SenseDataHolder.getBatteryDataHolder().add(new BatteryData(intent)); + } } } diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallData.java new file mode 100644 index 0000000000..9f617cdb17 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallData.java @@ -0,0 +1,70 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.call; + +public class CallData { + + public enum Type { + INCOMING, OUTGOING, MISSED; + } + + private Type type; + private String phoneNumber; + private long startTime; + private long endTime; + + public CallData(Type type, String phoneNumber, long startTime, long endTime) { + this.type = type; + this.phoneNumber = phoneNumber; + this.startTime = startTime; + this.endTime = endTime; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public long getStartTime() { + return startTime; + } + + public void setStartTime(long startTime) { + this.startTime = startTime; + } + + public long getEndTime() { + return endTime; + } + + public void setEndTime(long endTime) { + this.endTime = endTime; + } +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallDataReceiver.java new file mode 100644 index 0000000000..1988914e81 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/call/CallDataReceiver.java @@ -0,0 +1,87 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.call; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.telephony.TelephonyManager; + +import org.wso2.carbon.iot.android.sense.util.SenseDataHolder; + +public class CallDataReceiver extends BroadcastReceiver { + private static int lastState = TelephonyManager.CALL_STATE_IDLE; + private static long startTime; + private static boolean isIncoming; + private static String lastNotifiedNumber; + + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { + lastNotifiedNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER); + } else { + String extraState = intent.getExtras().getString(TelephonyManager.EXTRA_STATE); + int state = 0; + if (extraState.equals(TelephonyManager.EXTRA_STATE_IDLE)) { + state = TelephonyManager.CALL_STATE_IDLE; + } else if (extraState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) { + state = TelephonyManager.CALL_STATE_OFFHOOK; + } else if (extraState.equals(TelephonyManager.EXTRA_STATE_RINGING)) { + state = TelephonyManager.CALL_STATE_RINGING; + } + + if (lastState == state) { + return; // Nothing has been changed + } + switch (state) { + case TelephonyManager.CALL_STATE_RINGING: + // Receiving a call + isIncoming = true; + startTime = System.currentTimeMillis(); + // If incoming call, get the incoming number + lastNotifiedNumber = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER); + break; + case TelephonyManager.CALL_STATE_OFFHOOK: + if (lastState == TelephonyManager.CALL_STATE_RINGING) { + // RINGING -> OFFHOOK = ANSWERED + isIncoming = true; + startTime = System.currentTimeMillis(); + } else { + // NOT RINGING -> OFFHOOK = OUTGOING + isIncoming = false; + startTime = System.currentTimeMillis(); + } + break; + case TelephonyManager.CALL_STATE_IDLE: + if (lastState == TelephonyManager.CALL_STATE_RINGING) { + // RINGING -> IDLE = MISSED + SenseDataHolder.getCallDataHolder().add(new CallData(CallData.Type.MISSED, lastNotifiedNumber, startTime, System.currentTimeMillis())); + } else if (isIncoming) { + // Incoming (OFFHOOK) -> IDLE = INCOMING CALL ENDED + SenseDataHolder.getCallDataHolder().add(new CallData(CallData.Type.INCOMING, lastNotifiedNumber, startTime, System.currentTimeMillis())); + } else { + // Not Incoming -> IDLE = OUTGOING CALL ENDED + SenseDataHolder.getCallDataHolder().add(new CallData(CallData.Type.OUTGOING, lastNotifiedNumber, startTime, System.currentTimeMillis())); + } + break; + } + lastState = state; + } + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenData.java new file mode 100644 index 0000000000..0c124611f7 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenData.java @@ -0,0 +1,55 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.screen; + +import android.content.Intent; + +import java.util.Date; + +public class ScreenData { + private String action; + private long timestamp; + + ScreenData(Intent intent) { + if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())) { + this.action = "on"; + } else if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { + this.action = "off"; + } else { + this.action = "unknown"; + } + this.timestamp = new Date().getTime(); + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenDataReceiver.java new file mode 100644 index 0000000000..ace9d98faa --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/screen/ScreenDataReceiver.java @@ -0,0 +1,32 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.screen; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import org.wso2.carbon.iot.android.sense.util.SenseDataHolder; + +public class ScreenDataReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + SenseDataHolder.getScreenDataHolder().add(new ScreenData(intent)); + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsData.java new file mode 100644 index 0000000000..607ca2a857 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsData.java @@ -0,0 +1,58 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.sms; + +import java.util.Date; + +public class SmsData { + + private String phoneNumber; + private long timestamp; + private String message; + + SmsData(String phoneNumber, String message) { + this.phoneNumber = phoneNumber; + this.message = message; + this.timestamp = new Date().getTime(); + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsDataReceiver.java new file mode 100644 index 0000000000..2ada981fb3 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/sms/SmsDataReceiver.java @@ -0,0 +1,49 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.event.streams.sms; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.telephony.SmsMessage; + +import org.wso2.carbon.iot.android.sense.util.SenseDataHolder; + +public class SmsDataReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + final Bundle bundle = intent.getExtras(); + + if (bundle != null) { + + final Object[] pdusObj = (Object[]) bundle.get("pdus"); + + for (int i = 0; i < pdusObj.length; i++) { + SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); + String phoneNumber = currentMessage.getDisplayOriginatingAddress(); + String message = currentMessage.getDisplayMessageBody(); + + SmsData smsData = new SmsData(phoneNumber, message); + SenseDataHolder.getSmsDataHolder().add(smsData); + } + } + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/realtimeviewer/sensorlisting/SupportedSensors.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/realtimeviewer/sensorlisting/SupportedSensors.java index 6d57e6d704..2b0f5351be 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/realtimeviewer/sensorlisting/SupportedSensors.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/realtimeviewer/sensorlisting/SupportedSensors.java @@ -60,6 +60,7 @@ public class SupportedSensors { sensorList.add("Light"); sensorList.add("Gyroscope"); sensorList.add("Proximity"); + sensorList.add("Pedometer"); } /** @@ -74,6 +75,7 @@ public class SupportedSensors { sensorTypeMap.put("gyroscope", Sensor.TYPE_GYROSCOPE); sensorTypeMap.put("light", Sensor.TYPE_LIGHT); sensorTypeMap.put("proximity", Sensor.TYPE_PROXIMITY); + sensorTypeMap.put("pedometer", Sensor.TYPE_STEP_COUNTER); } /** @@ -88,6 +90,7 @@ public class SupportedSensors { typeSensorMap.put(Sensor.TYPE_GYROSCOPE, "gyroscope"); typeSensorMap.put(Sensor.TYPE_LIGHT, "light"); typeSensorMap.put(Sensor.TYPE_PROXIMITY, "proximity"); + typeSensorMap.put(Sensor.TYPE_STEP_COUNTER, "pedometer"); } /** diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataHolder.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataHolder.java index 1d33225b9a..c3d12cafb8 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataHolder.java +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataHolder.java @@ -17,11 +17,17 @@ import org.wso2.carbon.iot.android.sense.beacon.BeaconScanedData; import org.wso2.carbon.iot.android.sense.event.streams.Location.LocationData; import org.wso2.carbon.iot.android.sense.event.streams.Sensor.SensorData; import org.wso2.carbon.iot.android.sense.event.streams.Speed.SpeedData; +import org.wso2.carbon.iot.android.sense.event.streams.activity.ActivityData; +import org.wso2.carbon.iot.android.sense.event.streams.application.ApplicationData; +import org.wso2.carbon.iot.android.sense.event.streams.audio.AudioData; import org.wso2.carbon.iot.android.sense.event.streams.battery.BatteryData; +import org.wso2.carbon.iot.android.sense.event.streams.call.CallData; +import org.wso2.carbon.iot.android.sense.event.streams.screen.ScreenData; +import org.wso2.carbon.iot.android.sense.event.streams.sms.SmsData; import org.wso2.carbon.iot.android.sense.speech.detector.util.WordData; + import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import android.util.Log; /** @@ -31,72 +37,123 @@ public class SenseDataHolder { private static List sensorDataHolder; private static List batteryDataHolder; + private static List callDataHolder; private static List locationDataHolder; private static List wordDataHolder; private static List speedDataHolder; private static List beaconScanedDataHolder; - + private static List screenDataHolder; + private static List audioDataHolder; + private static List activityDataHolder; + private static List smsDataHolder; + private static List applicationDataHolder; //LocationData gps; private static final String TAG = SenseDataHolder.class.getName(); - public static List getSensorDataHolder(){ - if(sensorDataHolder == null){ + public static List getSensorDataHolder() { + if (sensorDataHolder == null) { sensorDataHolder = new CopyOnWriteArrayList<>(); } return sensorDataHolder; } - public static List getBatteryDataHolder(){ - if(batteryDataHolder == null){ + public static List getBatteryDataHolder() { + if (batteryDataHolder == null) { batteryDataHolder = new CopyOnWriteArrayList<>(); } return batteryDataHolder; } - public static List getLocationDataHolder(){ + public static List getCallDataHolder() { + if (callDataHolder == null) { + callDataHolder = new CopyOnWriteArrayList<>(); + } + return callDataHolder; + } + + public static List getLocationDataHolder() { - if(locationDataHolder == null){ + if (locationDataHolder == null) { locationDataHolder = new CopyOnWriteArrayList<>(); } - return locationDataHolder; + return locationDataHolder; } - public static List getWordDataHolder(){ - if(wordDataHolder == null){ + public static List getWordDataHolder() { + if (wordDataHolder == null) { wordDataHolder = new CopyOnWriteArrayList<>(); } return wordDataHolder; } - public static List getSpeedDataHolder(){ - if(speedDataHolder == null){ + public static List getSpeedDataHolder() { + if (speedDataHolder == null) { speedDataHolder = new CopyOnWriteArrayList<>(); } return speedDataHolder; } - public static List getBeaconScanedDataHolder(){ - if(beaconScanedDataHolder == null){ + public static List getBeaconScanedDataHolder() { + if (beaconScanedDataHolder == null) { beaconScanedDataHolder = new CopyOnWriteArrayList<>(); } return beaconScanedDataHolder; } - public static void resetSensorDataHolder(){ + public static List getScreenDataHolder() { + if (screenDataHolder == null) { + screenDataHolder = new CopyOnWriteArrayList<>(); + } + return screenDataHolder; + } + + public static List getAudioDataHolder() { + if (audioDataHolder == null) { + audioDataHolder = new CopyOnWriteArrayList<>(); + } + return audioDataHolder; + } + + public static List getActivityDataHolder() { + if (activityDataHolder == null) { + activityDataHolder = new CopyOnWriteArrayList<>(); + } + return activityDataHolder; + } + + public static List getSmsDataHolder() { + if (smsDataHolder == null) { + smsDataHolder = new CopyOnWriteArrayList<>(); + } + return smsDataHolder; + } + + public static List getApplicationDataHolder() { + if (applicationDataHolder == null) { + applicationDataHolder = new CopyOnWriteArrayList<>(); + } + return applicationDataHolder; + } + + public static void resetSensorDataHolder() { sensorDataHolder = null; } - public static void resetBatteryDataHolder(){ + public static void resetBatteryDataHolder() { batteryDataHolder = null; } - public static void resetLocationDataHolder(){ + public static void resetCallDataHolder() { + callDataHolder = null; + } + + public static void resetLocationDataHolder() { locationDataHolder = null; } @@ -112,5 +169,23 @@ public class SenseDataHolder { beaconScanedDataHolder = null; } + public static void resetScreenDataHolder() { + screenDataHolder = null; + } + public static void resetAudioDataHolder() { + audioDataHolder = null; + } + + public static void resetActivityDataHolder() { + activityDataHolder = null; + } + + public static void resetSmsDataHolder() { + smsDataHolder = null; + } + + public static void resetApplicationDataHolder() { + applicationDataHolder = null; + } } diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataReceiverManager.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataReceiverManager.java new file mode 100644 index 0000000000..a72532464a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseDataReceiverManager.java @@ -0,0 +1,175 @@ +/* + * 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. + */ + +package org.wso2.carbon.iot.android.sense.util; + +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.provider.Telephony; +import android.support.annotation.Nullable; +import android.telephony.TelephonyManager; + +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.ActivityRecognition; + +import org.wso2.carbon.iot.android.sense.event.streams.activity.ActivityReceiver; +import org.wso2.carbon.iot.android.sense.event.streams.application.ApplicationDataReceiver; +import org.wso2.carbon.iot.android.sense.event.streams.battery.BatteryDataReceiver; +import org.wso2.carbon.iot.android.sense.event.streams.call.CallDataReceiver; +import org.wso2.carbon.iot.android.sense.event.streams.screen.ScreenDataReceiver; +import org.wso2.carbon.iot.android.sense.event.streams.sms.SmsDataReceiver; + +public class SenseDataReceiverManager { + private static BroadcastReceiver batteryDataReceiver; + + private static BroadcastReceiver screenDataReceiver; + + private static BroadcastReceiver callDataReceiver; + + private static GoogleApiClient apiClient; + + private static SmsDataReceiver smsDataReceiver; + + private static ApplicationDataReceiver appDataReceiver; + + private SenseDataReceiverManager() { + + } + + public static void registerBatteryDataReceiver(Context context) { + if (batteryDataReceiver == null) { + batteryDataReceiver = new BatteryDataReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_BATTERY_LOW); + intentFilter.addAction(Intent.ACTION_BATTERY_OKAY); + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); + + context.registerReceiver(batteryDataReceiver, intentFilter); + } + } + + public static void unregisterBatteryDataReceiver(Context context) { + if (batteryDataReceiver != null) { + context.unregisterReceiver(batteryDataReceiver); + batteryDataReceiver = null; + } + } + + public static void registerScreenDataReceiver(Context context) { + if (screenDataReceiver == null) { + screenDataReceiver = new ScreenDataReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_SCREEN_ON); + intentFilter.addAction(Intent.ACTION_SCREEN_OFF); + + context.registerReceiver(screenDataReceiver, intentFilter); + } + } + + public static void unregisterScreenDataReceiver(Context context) { + if (screenDataReceiver != null) { + context.unregisterReceiver(screenDataReceiver); + screenDataReceiver = null; + } + } + + public static void registerCallDataReceiver(Context context) { + if (callDataReceiver == null) { + callDataReceiver = new CallDataReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); + intentFilter.addAction(Intent.ACTION_NEW_OUTGOING_CALL); + + context.registerReceiver(callDataReceiver, intentFilter); + } + } + + public static void unregisterCallDataReceiver(Context context) { + if (callDataReceiver != null) { + context.unregisterReceiver(callDataReceiver); + callDataReceiver = null; + } + } + + public static void registerActivityDataReceiver(Context context) { + if (apiClient == null) { + Intent intent = new Intent(context, ActivityReceiver.class); + final PendingIntent pendingIntent = PendingIntent.getService(context, 888971, intent, PendingIntent.FLAG_UPDATE_CURRENT); + apiClient = new GoogleApiClient.Builder(context) + .addApi(ActivityRecognition.API) + .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { + @Override + public void onConnected(@Nullable Bundle bundle) { + ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(apiClient, ActivityReceiver.UPDATE_INTERVAL, pendingIntent); + } + + @Override + public void onConnectionSuspended(int i) { + ActivityRecognition.ActivityRecognitionApi.removeActivityUpdates(apiClient, pendingIntent); + } + }) + .build(); + + apiClient.connect(); + } + } + + public static void unregisterActivityDataReceiver(Context context) { + if (apiClient != null) { + apiClient.disconnect(); + apiClient = null; + } + } + + public static void registerSmsDataReceiver(Context context) { + if (smsDataReceiver == null) { + smsDataReceiver = new SmsDataReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Telephony.Sms.Intents.SMS_RECEIVED_ACTION); + context.registerReceiver(smsDataReceiver, intentFilter); + } + } + + public static void unregisterSmsDataReceiver(Context context) { + if (smsDataReceiver != null) { + context.unregisterReceiver(smsDataReceiver); + smsDataReceiver = null; + } + } + + public static void registerAppDataReceiver(Context context) { + if (appDataReceiver == null) { + appDataReceiver = new ApplicationDataReceiver(); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); + intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); + context.registerReceiver(appDataReceiver, intentFilter); + } + } + + public static void unregisterAppDataReceiver(Context context) { + if (appDataReceiver != null) { + context.unregisterReceiver(appDataReceiver); + appDataReceiver = null; + } + } +} diff --git a/components/device-types/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.realtime.analytics-view/analytics-view.js b/components/device-types/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.realtime.analytics-view/analytics-view.js index 1c2d56a56a..e54cef4ec4 100644 --- a/components/device-types/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.realtime.analytics-view/analytics-view.js +++ b/components/device-types/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.realtime.analytics-view/analytics-view.js @@ -18,17 +18,27 @@ function onRequest(context) { var log = new Log("stats.js"); + var carbonServer = require("carbon").server; var device = context.unit.params.device; var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"]; var constants = require("/app/modules/constants.js"); - var websocketEndpoint = devicemgtProps["wssURL"].replace("https", "wss"); - var tokenPair = session.get(constants["TOKEN_PAIR"]); - if (tokenPair) { - var token = parse(tokenPair)["accessToken"]; - websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?" + - "token="+ token +"&deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type; - } - + var jwtService = carbonServer.osgiService( + 'org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService'); + var jwtClient = jwtService.getJWTClient(); + var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]); + var token = ""; + if (encodedClientKeys) { + var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"]; + var resp = tokenUtil.decode(encodedClientKeys).split(":"); + var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {}); + if (tokenPair) { + token = tokenPair.accessToken; + } + websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?" + + "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type; + var websocketToken= {'name':'websocket-token','value': token, 'path':'/', "maxAge":18000}; + response.addCookie(websocketToken); + } return {"device": device, "websocketEndpoint": websocketEndpoint}; } \ No newline at end of file diff --git a/components/device-types/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.raspberrypi.realtime.analytics-view/analytics-view.js b/components/device-types/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.raspberrypi.realtime.analytics-view/analytics-view.js index 1c2d56a56a..e54cef4ec4 100644 --- a/components/device-types/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.raspberrypi.realtime.analytics-view/analytics-view.js +++ b/components/device-types/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.raspberrypi.realtime.analytics-view/analytics-view.js @@ -18,17 +18,27 @@ function onRequest(context) { var log = new Log("stats.js"); + var carbonServer = require("carbon").server; var device = context.unit.params.device; var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"]; var constants = require("/app/modules/constants.js"); - var websocketEndpoint = devicemgtProps["wssURL"].replace("https", "wss"); - var tokenPair = session.get(constants["TOKEN_PAIR"]); - if (tokenPair) { - var token = parse(tokenPair)["accessToken"]; - websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?" + - "token="+ token +"&deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type; - } - + var jwtService = carbonServer.osgiService( + 'org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService'); + var jwtClient = jwtService.getJWTClient(); + var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]); + var token = ""; + if (encodedClientKeys) { + var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"]; + var resp = tokenUtil.decode(encodedClientKeys).split(":"); + var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {}); + if (tokenPair) { + token = tokenPair.accessToken; + } + websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?" + + "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type; + var websocketToken= {'name':'websocket-token','value': token, 'path':'/', "maxAge":18000}; + response.addCookie(websocketToken); + } return {"device": device, "websocketEndpoint": websocketEndpoint}; } \ No newline at end of file diff --git a/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.device-view/device-view.hbs b/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.device-view/device-view.hbs index 7d345c2ab1..9cd2ca642b 100644 --- a/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.device-view/device-view.hbs +++ b/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.device-view/device-view.hbs @@ -37,81 +37,75 @@ {{/zone}} -{{#zone "device-detail-properties"}} -
- -
-
+{{#zone "device-view-tabs"}} +
  • Device + Statistics +
  • +
  • Policies +
  • +
  • Operations Log
  • +{{/zone}} -
    -
    Device Statistics
    - {{unit "cdmf.unit.device.type.virtual_firealarm.realtime.analytics-view" device=device}} -
    +{{#zone "device-view-tab-contents"}} -
    -
    Policies
    -
    - + Add device specific policy -
    -
    -
    Operations Log
    -
    - +
    +
    Operations Log
    +
    + -
    -
    - Not available yet -
    -
    -
    -
    + Loading Operations Log . . . +
    +
    +
    +
    +
    + Not available yet
    +
    {{/zone}} + diff --git a/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.policy-wizard/policy-wizard.hbs b/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.policy-wizard/policy-wizard.hbs index 2ddd9c1d1c..fbd9fb6d04 100644 --- a/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.policy-wizard/policy-wizard.hbs +++ b/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.policy-wizard/policy-wizard.hbs @@ -15,4 +15,4 @@ specific language governing permissions and limitations under the License. }} -{{unit "cdmf.unit.policy.wizard"}} \ No newline at end of file +{{unit "cdmf.unit.policy.create"}} \ No newline at end of file diff --git a/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.realtime.analytics-view/analytics-view.js b/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.realtime.analytics-view/analytics-view.js index fa9e138d00..e54cef4ec4 100644 --- a/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.realtime.analytics-view/analytics-view.js +++ b/components/device-types/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.virtual_firealarm.realtime.analytics-view/analytics-view.js @@ -22,15 +22,23 @@ function onRequest(context) { var device = context.unit.params.device; var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"]; var constants = require("/app/modules/constants.js"); - var websocketEndpoint = devicemgtProps["wssURL"].replace("https", "wss"); - - var tokenPair = session.get(constants["TOKEN_PAIR"]); - if (tokenPair) { - var token = parse(tokenPair)["accessToken"]; - websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?" + - "token=" + token + "&deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type; - } - + var jwtService = carbonServer.osgiService( + 'org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService'); + var jwtClient = jwtService.getJWTClient(); + var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]); + var token = ""; + if (encodedClientKeys) { + var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"]; + var resp = tokenUtil.decode(encodedClientKeys).split(":"); + var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {}); + if (tokenPair) { + token = tokenPair.accessToken; + } + websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?" + + "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type; + var websocketToken= {'name':'websocket-token','value': token, 'path':'/', "maxAge":18000}; + response.addCookie(websocketToken); + } return {"device": device, "websocketEndpoint": websocketEndpoint}; } \ No newline at end of file diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/HttpSessionConfigurator.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/HttpSessionConfigurator.java new file mode 100644 index 0000000000..a38a5e6352 --- /dev/null +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/HttpSessionConfigurator.java @@ -0,0 +1,36 @@ +/* + * + * 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. + * + */ + +package org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint; + +import org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint.constants.Constants; + +import javax.websocket.HandshakeResponse; +import javax.websocket.server.HandshakeRequest; +import javax.websocket.server.ServerEndpointConfig; +import java.util.List; +import java.util.Map; + +public class HttpSessionConfigurator extends ServerEndpointConfig.Configurator { + public void modifyHandshake(ServerEndpointConfig config, HandshakeRequest request, HandshakeResponse response) { + Map> httpHeaders = request.getHeaders(); + config.getUserProperties().put(Constants.HTTP_HEADERS, httpHeaders); + } +} diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/SuperTenantSubscriptionEndpoint.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/SuperTenantSubscriptionEndpoint.java index 53b40d1baa..5eac9280eb 100644 --- a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/SuperTenantSubscriptionEndpoint.java +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/SuperTenantSubscriptionEndpoint.java @@ -24,24 +24,28 @@ import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.output.adapter.websocket.authentication.AuthenticationInfo; import org.wso2.carbon.device.mgt.output.adapter.websocket.authentication.Authenticator; import org.wso2.carbon.device.mgt.output.adapter.websocket.authorization.Authorizer; +import org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint.constants.Constants; import org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint.util.ServiceHolder; import org.wso2.carbon.utils.multitenancy.MultitenantConstants; import javax.websocket.CloseReason; +import javax.websocket.EndpointConfig; +import javax.websocket.Session; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; -import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.io.IOException; +import java.util.List; +import java.util.Map; /** * Connect to web socket with Super tenant */ -@ServerEndpoint(value = "/{streamname}/{version}") +@ServerEndpoint(value = "/{streamname}/{version}", configurator = HttpSessionConfigurator.class) public class SuperTenantSubscriptionEndpoint extends SubscriptionEndpoint { private static final Log log = LogFactory.getLog(SuperTenantSubscriptionEndpoint.class); @@ -54,13 +58,15 @@ public class SuperTenantSubscriptionEndpoint extends SubscriptionEndpoint { * @param version - Version extracted from the ws url. */ @OnOpen - public void onOpen(Session session, @PathParam("streamname") String streamName, + public void onOpen(Session session, EndpointConfig config, @PathParam("streamname") String streamName, @PathParam("version") String version) { if (log.isDebugEnabled()) { log.debug("WebSocket opened, for Session id: " + session.getId() + ", for the Stream:" + streamName); } + Map> httpHeaders; + httpHeaders = (Map>) config.getUserProperties().get(Constants.HTTP_HEADERS); Authenticator authenticator = ServiceHolder.getWebsocketValidationService().getAuthenticator(); - AuthenticationInfo authenticationInfo = authenticator.isAutenticated(session); + AuthenticationInfo authenticationInfo = authenticator.isAuthenticated(httpHeaders); if (authenticationInfo != null && authenticationInfo.isAuthenticated()) { Authorizer authorizer = ServiceHolder.getWebsocketValidationService().getAuthorizer(); boolean isAuthorized = authorizer.isAuthorized(authenticationInfo, session, streamName); diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/TenantSubscriptionEndpoint.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/TenantSubscriptionEndpoint.java index 553cdcbea6..9243498a1b 100644 --- a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/TenantSubscriptionEndpoint.java +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/TenantSubscriptionEndpoint.java @@ -24,23 +24,27 @@ import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.output.adapter.websocket.authentication.AuthenticationInfo; import org.wso2.carbon.device.mgt.output.adapter.websocket.authentication.Authenticator; import org.wso2.carbon.device.mgt.output.adapter.websocket.authorization.Authorizer; +import org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint.constants.Constants; import org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint.util.ServiceHolder; import javax.websocket.CloseReason; +import javax.websocket.EndpointConfig; +import javax.websocket.Session; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; -import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.io.IOException; +import java.util.List; +import java.util.Map; /** * Connect to web socket with a tenant */ -@ServerEndpoint(value = "/t/{tdomain}/{streamname}/{version}") +@ServerEndpoint(value = "/t/{tdomain}/{streamname}/{version}", configurator = HttpSessionConfigurator.class) public class TenantSubscriptionEndpoint extends SubscriptionEndpoint { private static final Log log = LogFactory.getLog(TenantSubscriptionEndpoint.class); @@ -54,13 +58,15 @@ public class TenantSubscriptionEndpoint extends SubscriptionEndpoint { * @param tdomain - Tenant domain extracted from ws url. */ @OnOpen - public void onOpen (Session session, @PathParam("streamname") String streamName , - @PathParam("version") String version, @PathParam("tdomain") String tdomain) { + public void onOpen (Session session, EndpointConfig config, @PathParam("streamname") String streamName , + @PathParam("version") String version, @PathParam("tdomain") String tdomain) { if (log.isDebugEnabled()) { log.debug("WebSocket opened, for Session id: "+session.getId()+", for the Stream:"+streamName); } + Map> httpHeaders; + httpHeaders = (Map>) config.getUserProperties().get(Constants.HTTP_HEADERS); Authenticator authenticator = ServiceHolder.getWebsocketValidationService().getAuthenticator(); - AuthenticationInfo authenticationInfo = authenticator.isAutenticated(session); + AuthenticationInfo authenticationInfo = authenticator.isAuthenticated(httpHeaders); if (authenticationInfo != null && authenticationInfo.isAuthenticated()) { Authorizer authorizer = ServiceHolder.getWebsocketValidationService().getAuthorizer(); boolean isAuthorized = authorizer.isAuthorized(authenticationInfo, session, streamName); @@ -68,9 +74,8 @@ public class TenantSubscriptionEndpoint extends SubscriptionEndpoint { try { PrivilegedCarbonContext.startTenantFlow(); PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tdomain, true); - ServiceHolder.getInstance().getUiOutputCallbackControllerService().subscribeWebsocket(streamName, - version, - session); + ServiceHolder.getInstance().getUiOutputCallbackControllerService().subscribeWebsocket(streamName + , version, session); } finally { PrivilegedCarbonContext.endTenantFlow(); } diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/constants/Constants.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/constants/Constants.java new file mode 100644 index 0000000000..14b4e968c5 --- /dev/null +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/endpoint/constants/Constants.java @@ -0,0 +1,25 @@ +/* + * + * 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. + * + */ + +package org.wso2.carbon.device.mgt.output.adapter.websocket.endpoint.constants; + +public class Constants { + public static final String HTTP_HEADERS = "HttpHeaders"; +} diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/Authenticator.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/Authenticator.java index a9a5dc07b1..d1d06cc5c9 100644 --- a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/Authenticator.java +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/Authenticator.java @@ -14,7 +14,8 @@ package org.wso2.carbon.device.mgt.output.adapter.websocket.authentication; -import javax.websocket.Session; +import java.util.List; +import java.util.Map; /** * This interface is used to authenticate a websocket session @@ -24,7 +25,7 @@ public interface Authenticator { /** * Check whether the client is authenticated to connect. * @param session user object. - * @return AuthenicationInfo which contains authentication client information. + * @return AuthenticationInfo which contains authentication client information. */ - AuthenticationInfo isAutenticated(Session session); + AuthenticationInfo isAuthenticated(Map> webSocketConnectionProperties); } diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/OAuthAuthenticator.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/OAuthAuthenticator.java index 7eaab2b5bb..698f4f8261 100644 --- a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/OAuthAuthenticator.java +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/OAuthAuthenticator.java @@ -15,12 +15,13 @@ package org.wso2.carbon.device.mgt.output.adapter.websocket.authentication; import org.wso2.carbon.device.mgt.output.adapter.websocket.authentication.oauth.OAuthTokenValdiator; -import javax.websocket.Session; + +import java.util.List; +import java.util.Map; public class OAuthAuthenticator implements Authenticator { - @Override - public AuthenticationInfo isAutenticated(Session session) { - return OAuthTokenValdiator.getInstance().validateToken(session); + public AuthenticationInfo isAuthenticated(Map> webSocketConnectionProperties) { + return OAuthTokenValdiator.getInstance().validateToken(webSocketConnectionProperties); } } diff --git a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/oauth/OAuthTokenValdiator.java b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/oauth/OAuthTokenValdiator.java index 5c55a5c217..b92f08ae09 100644 --- a/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/oauth/OAuthTokenValdiator.java +++ b/components/extensions/cdmf-transport-adapters/output/org.wso2.carbon.device.mgt.output.adapter.websocket/src/main/java/org/wso2/carbon/device/mgt/output/adapter/websocket/authentication/oauth/OAuthTokenValdiator.java @@ -31,7 +31,6 @@ import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.utils.CarbonUtils; import org.wso2.carbon.utils.multitenancy.MultitenantUtils; -import javax.websocket.Session; import java.io.File; import java.io.IOException; import java.rmi.RemoteException; @@ -50,10 +49,11 @@ public class OAuthTokenValdiator { private static Log log = LogFactory.getLog(OAuthTokenValdiator.class); private static final String WEBSOCKET_CONFIG_LOCATION = CarbonUtils.getEtcCarbonConfigDirPath() + File.separator + "websocket-validation.properties"; - private static final String QUERY_STRING_SEPERATOR = "&"; - private static final String QUERY_KEY_VALUE_SEPERATOR = "="; + private static final String COOKIE_KEY_VALUE_SEPERATOR = "="; + private static final String COOKIE_KEYPAIR_SEPERATOR = ";"; + private static final String COOKIE = "cookie"; private static final String TOKEN_TYPE = "bearer"; - private static final String TOKEN_IDENTIFIER = "token"; + private static final String TOKEN_IDENTIFIER = "websocket-token"; private static OAuthTokenValdiator oAuthTokenValdiator; public static OAuthTokenValdiator getInstance() { @@ -79,12 +79,11 @@ public class OAuthTokenValdiator { /** * This method gets a string accessToken and validates it - * - * @param session which need to be validated. + * @param webSocketConnectionProperties WebSocket connection information including http headers * @return AuthenticationInfo with the validated results. */ - public AuthenticationInfo validateToken(Session session) { - String token = getTokenFromSession(session); + public AuthenticationInfo validateToken(Map> webSocketConnectionProperties) { + String token = getToken(webSocketConnectionProperties); if (token == null) { AuthenticationInfo authenticationInfo = new AuthenticationInfo(); authenticationInfo.setAuthenticated(false); @@ -189,26 +188,21 @@ public class OAuthTokenValdiator { } /** - * @param session of the user. - * @return retreive the token from the query string + * Retrieving the token from the http header + * @param webSocketConnectionProperties WebSocket connection information including http headers + * @return retrieved token */ - private String getTokenFromSession(Session session) { - String queryString = session.getQueryString(); - if (queryString != null) { - String[] allQueryParamPairs = queryString.split(QUERY_STRING_SEPERATOR); - - for (String keyValuePair : allQueryParamPairs) { - String[] queryParamPair = keyValuePair.split(QUERY_KEY_VALUE_SEPERATOR); - - if (queryParamPair.length != 2) { - log.warn("Invalid query string [" + queryString + "] passed in."); - break; - } - if (queryParamPair[0].equals(TOKEN_IDENTIFIER)) { - return queryParamPair[1]; - } - } - } + private String getToken(Map> webSocketConnectionProperties) { + String cookieString = webSocketConnectionProperties.get(COOKIE).get(0); + String[] properties = cookieString.split(COOKIE_KEYPAIR_SEPERATOR); + String token; + for (String keyValuePair: properties) { + if(TOKEN_IDENTIFIER.equals((keyValuePair.split(COOKIE_KEY_VALUE_SEPERATOR)[0]).trim())){ + token = (keyValuePair.split(COOKIE_KEY_VALUE_SEPERATOR)[1]).trim(); + return token; + } + } + log.error("WebSocket token should be specified in cookie"); return null; } } 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.device-view/device-view.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.device-view/device-view.hbs index 0f613ddc86..3842be7309 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.device-view/device-view.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.device-view/device-view.hbs @@ -1,485 +1,406 @@ {{unit "cdmf.unit.device.type.android.leaflet"}} {{unit "cdmf.unit.lib.qrcode"}} {{unit "cdmf.unit.device.type.android.qr-modal"}} -{{unit "cdmf.unit.device.type.android.operation-bar"}} {{#if deviceFound}} {{#if isAuthorized}} {{#zone "device-details-header"}} -

    - Device {{deviceView.name}} - {{#if deviceView.model}} - - ( {{deviceView.vendor}} {{deviceView.model}} ) +

    + Device {{device.name}} + {{#if device.model}} + + ( {{device.vendor}} {{device.model}} ) - {{/if}} -

    + {{/if}} +

    {{/zone}} - {{#zone "overview-section"}} -
    -
    Device - Overview -
    - - - {{#if deviceView.deviceIdentifier}} - - - - - {{/if}} - {{#if deviceView.name}} - - - - - {{/if}} - {{#if deviceView.vendor}} - {{#if deviceView.model}} - - - - - {{/if}} - {{/if}} - {{#if deviceView.status}} - - - - - {{/if}} - {{#if deviceView.owner}} - - - - - {{/if}} - {{#if deviceView.ownership}} - - - - - {{/if}} - {{#if deviceView.imei}} - - - - - {{/if}} - {{#if deviceView.udid}} - - - - - {{/if}} - {{#if deviceView.osBuildDate}} - - - - - {{/if}} - {{#if deviceView.phoneNumber}} - - - - - {{/if}} - {{#if deviceView.lastUpdatedTime}} - - - - - {{/if}} - -
    Device ID{{deviceView.deviceIdentifier}}
    Name{{deviceView.name}}
    Model{{deviceView.vendor}} {{deviceView.model}}
    Status - {{#equal deviceView.status "ACTIVE"}}Active{{/equal}} - {{#equal deviceView.status "INACTIVE"}}Inactive{{/equal}} - {{#equal deviceView.status "BLOCKED"}}Blocked{{/equal}} - {{#equal deviceView.status "REMOVED"}}Removed{{/equal}} -
    Owner{{deviceView.owner}}
    Ownership{{deviceView.ownership}}
    IMEI{{deviceView.imei}}
    UDID{{deviceView.udid}}
    Firmware Build - Date - {{deviceView.osBuildDate}}
    Phone Number{{deviceView.phoneNumber}}
    Last Update{{deviceView.lastUpdatedTime}}
    -
    - {{/zone}} - - {{#zone "device-opetations"}} - {{#if deviceView.isNotRemoved}} -
    - Operations -
    -
    - {{unit "cdmf.unit.device.operation-bar" device=deviceView backendApiUri=backendApiUri autoCompleteParams=autoCompleteParams}} -
    + {{#zone "overview-section"}} +
    +
    Device + Overview +
    + + + {{#if device.deviceIdentifier}} + + + + {{/if}} - {{/zone}} - + {{#if device.name}} + + + + + {{/if}} + {{#if device.vendor}} + {{#if device.model}} + + + + + {{/if}} + {{/if}} + {{#if device.status}} + + + + + {{/if}} + {{#if device.owner}} + + + + + {{/if}} + {{#if device.ownership}} + + + + + {{/if}} + {{#if device.imei}} + + + + + {{/if}} + {{#if device.udid}} + + + + + {{/if}} + {{#if device.osBuildDate}} + + + + + {{/if}} + {{#if device.phoneNumber}} + + + + + {{/if}} + {{#if device.lastUpdatedTime}} + + + + + {{/if}} + +
    Device ID{{device.deviceIdentifier}}
    Name{{device.name}}
    Model{{device.vendor}} + {{device.model}}
    Status + {{#equal device.status "ACTIVE"}}Active{{/equal}} + {{#equal device.status "INACTIVE"}}Inactive{{/equal}} + {{#equal device.status "BLOCKED"}}Blocked{{/equal}} + {{#equal device.status "REMOVED"}}Removed{{/equal}} +
    Owner{{device.owner}}
    Ownership{{device.ownership}}
    IMEI{{device.imei}}
    UDID{{device.udid}}
    Firmware Build + Date + {{device.osBuildDate}}
    Phone Number{{device.phoneNumber}}
    Last Update{{device.lastUpdatedTime}}
    + {{/zone}} - {{#zone "device-detail-properties"}} -
    -