Coorecting version import ranges

revert-dabc3590
Ace 8 years ago
commit c302d7b25a

@ -3,16 +3,16 @@
@Plan:description('Process accelerometer changes.')
@Import('org.wso2.iot.android.accelerometer:1.0.0')
define stream AccelerometerStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream AccelerometerStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value
float);
@Export('org.wso2.iot.android.accelerometer.stats:1.0.0')
define stream AccelerometerStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x
float, y float, z float, year int, month int, day int, hour int, minute int);
define stream AccelerometerStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float, year int, month int, day int, hour int, minute int);
partition with (meta_deviceId of AccelerometerStream)
begin
from AccelerometerStream
select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract
select meta_owner, meta_deviceId, meta_timestamp, axis, value, time:extract
(meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute
insert into AccelerometerStatsStream;
end;

@ -0,0 +1,16 @@
{
"provider-conf": {
"streamName": "org.wso2.iot.android.accelerometer:1.0.0",
"provider-name": "realtime"
},
"chart-conf": {
"x": "TIMESTAMP",
"xType": "time",
"y": "value",
"yType": "number",
"color": "axis",
"maxLength": "30",
"gadget-name": "ANDROID_ACCELETOMETER_GADGET",
"chart-name": "line-chart"
}
}

@ -0,0 +1,9 @@
{
"id": "ANDROID_ACCELETOMETER_GADGET",
"title": "ANDROID_ACCELETOMETER_GADGET",
"type": "gadget",
"thumbnail": "gadget/ANDROID_ACCELETOMETER_GADGET/thumbnail.png",
"data": {
"url": "gadget/ANDROID_ACCELETOMETER_GADGET/gadget.xml"
}
}

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="ACCELEROMETER Z" description="This is a template gadget">
<ModulePrefs title="ANDROID_ACCELETOMETER_GADGET" description="This is a template gadget">
<Require feature="dynamic-height"/>
<Require feature="wso2-gadgets-identity"/>
</ModulePrefs>
@ -20,8 +20,6 @@
<!-- chart specific css -->
<link href="css/number-chart.css" rel="stylesheet" type="text/css">
<!-- jQuery -->
<script src="/portal/libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
@ -50,7 +48,7 @@
<script src="js/core/provider-client.js"></script>
<script src="js/core/gadget-util.js"></script>
<script src="js/core/number-chart-api.js"></script>
<script src="js/core/line-chart-api.js"></script>
<script src="js/core/gadget-core.js"></script>
</head>

@ -0,0 +1,35 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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.
*/
var getGadgetLocation = function (callback) {
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ANDROID_ACCELEROMETER_GADGET";
var PATH_SEPERATOR = "/";
if (gadgetLocation.search("store") != -1) {
wso2.gadgets.identity.getTenantDomain(function (tenantDomain) {
var gadgetPath = gadgetLocation.split(PATH_SEPERATOR);
var modifiedPath = '';
for (var i = 1; i < gadgetPath.length; i++) {
if (i === 3) {
modifiedPath = modifiedPath.concat(PATH_SEPERATOR, tenantDomain);
} else {
modifiedPath = modifiedPath.concat(PATH_SEPERATOR, gadgetPath[i])
}
}
callback(modifiedPath);
});
} else {
callback(gadgetLocation);
}
}

@ -24,16 +24,30 @@ var getConfig, validate, isProviderRequired, draw, update;
* @param schema
*/
getConfig = function(schema) {
var chartConf = require(CHART_LOCATION + '/number-chart/config.json').config;
var chartConf = require(CHART_LOCATION + '/line-chart/config.json').config;
/*
dynamic logic goes here
*/
return chartConf;
var columns = [];
columns.push("None");
for(var i=0; i < schema.length; i++) {
columns.push(schema[i]["fieldName"]);
}
for(var i=0; i < chartConf.length; i++) {
if (chartConf[i]["fieldName"] == "color") {
chartConf[i]["valueSet"] = columns;
break;
}
}
return chartConf;
};
/**
* validate the user inout for the chart configurationx
* validate the user inout for the chart configuration
* @param chartConfig
*/
validate = function(chartConfig) {
@ -55,7 +69,9 @@ var getConfig, validate, isProviderRequired, draw, update;
* @param data
*/
draw = function(placeholder, chartConfig, _schema, data) {
_schema = updateUserPrefXYTypes(_schema, chartConfig);
var schema = toVizGrammarSchema(_schema);
var view = {
id: "chart-0",
schema: schema,
@ -93,17 +109,24 @@ var getConfig, validate, isProviderRequired, draw, update;
*/
update = function(data) {
wso2gadgets.onDataReady(data,"append");
}
};
buildChartConfig = function (_chartConfig) {
var conf = {};
conf.x = _chartConfig.x;
conf.xType = _chartConfig.xType;
conf.yType = _chartConfig.yType;
conf.maxLength = _chartConfig.maxLength;
conf.charts = [];
conf.charts[0] = {
type : "number",
title : _chartConfig.title
type : "line",
y: _chartConfig.y
};
if (_chartConfig.color != "None") {
conf.charts[0].color = _chartConfig.color;
}
return conf;
};

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<artifact name= "android_accelerometer_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>ANDROID_ACCELEROMETER_GADGET</file>
</artifact>

@ -26,23 +26,15 @@
<Type>LONG</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>x</Name>
<Name>axis</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>y</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>z</Name>
<Name>value</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
},
{

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
}
]

@ -1 +0,0 @@
{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "x", "title" : "ACCELEROMETER X", "maxLength" : "30", "gadget-name" : "Accelerometer X", "chart-name" : "number-chart"}}

@ -1,35 +0,0 @@
#canvas {
height: 100%;
width: 100%;
}
p {
margin: 0;
display: block;
text-align: center;
font-weight: bold;
}
.titlecanvasContent {
color:steelblue;
font-size:18px;
font-weight: normal;
padding: 10px 0;
}
.valcanvasContent {
color:#438CAD;
font-size:50px;
font-weight: normal;
}
.diffcanvasContent {
color:#438CAD;
font-size:14px;
}
.diffPercentagecanvasContent {
color:#ff944d;
font-size:14px;
}

@ -1,9 +0,0 @@
{
"id": "Accelerometer_X",
"title": "Accelerometer X",
"type": "gadget",
"thumbnail": "gadget/Accelerometer_X/thumbnail.png",
"data": {
"url": "gadget/Accelerometer_X/gadget.xml"
}
}

@ -1 +0,0 @@
{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "y", "title" : "ACCELEROMETER Y", "maxLength" : "30", "gadget-name" : "ACCELEROMETER Y", "chart-name" : "number-chart"}}

@ -1,35 +0,0 @@
#canvas {
height: 100%;
width: 100%;
}
p {
margin: 0;
display: block;
text-align: center;
font-weight: bold;
}
.titlecanvasContent {
color:steelblue;
font-size:18px;
font-weight: normal;
padding: 10px 0;
}
.valcanvasContent {
color:#438CAD;
font-size:50px;
font-weight: normal;
}
.diffcanvasContent {
color:#438CAD;
font-size:14px;
}
.diffPercentagecanvasContent {
color:#ff944d;
font-size:14px;
}

@ -1,9 +0,0 @@
{
"id": "ACCELEROMETER_Y",
"title": "ACCELEROMETER Y",
"type": "gadget",
"thumbnail": "gadget/ACCELEROMETER_Y/thumbnail.png",
"data": {
"url": "gadget/ACCELEROMETER_Y/gadget.xml"
}
}

@ -1 +0,0 @@
{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "z", "title" : "ACCELEROMETER Z", "maxLength" : "30", "gadget-name" : "ACCELEROMETER Z", "chart-name" : "number-chart"}}

@ -1,35 +0,0 @@
#canvas {
height: 100%;
width: 100%;
}
p {
margin: 0;
display: block;
text-align: center;
font-weight: bold;
}
.titlecanvasContent {
color:steelblue;
font-size:18px;
font-weight: normal;
padding: 10px 0;
}
.valcanvasContent {
color:#438CAD;
font-size:50px;
font-weight: normal;
}
.diffcanvasContent {
color:#438CAD;
font-size:14px;
}
.diffPercentagecanvasContent {
color:#ff944d;
font-size:14px;
}

@ -1,9 +0,0 @@
{
"id": "ACCELEROMETER_Z",
"title": "ACCELEROMETER Z",
"type": "gadget",
"thumbnail": "gadget/ACCELEROMETER_Z/thumbnail.png",
"data": {
"url": "gadget/ACCELEROMETER_Z/gadget.xml"
}
}

@ -33,19 +33,19 @@ define stream SmsStream (meta_owner string, meta_deviceId string, meta_timestamp
define stream geoLocationStream (id string, timeStamp long, latitude double, longitude double, type string, speed float, heading float);
@Export('org.wso2.iot.android.accelerometer:1.0.0')
define stream AccelerometerStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream AccelerometerStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.gyroscope:1.0.0')
define stream GyroscopeStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream GyroscopeStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.magnetic:1.0.0')
define stream MagneticStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream MagneticStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.gravity:1.0.0')
define stream GravityStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
@Export('org.wso2.iot.android.rotation:1.0.0')
define stream RotationStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream RotationStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.pressure:1.0.0')
define stream PressureStream (meta_owner string, meta_deviceId string, meta_timestamp long, pressure float);
@ -57,14 +57,39 @@ define stream LightStream (meta_owner string, meta_deviceId string, meta_timesta
define stream ProximityStream (meta_owner string, meta_deviceId string, meta_timestamp long, proximity float);
from AndroidSense[meta_type == 'accelerometer']
select meta_owner, meta_deviceId, meta_timestamp, accelerometer_x as x, accelerometer_y as y, accelerometer_z as z
select meta_owner, meta_deviceId, meta_timestamp, 'X' as axis, accelerometer_x as value
insert into AccelerometerStream;
from AndroidSense[meta_type == 'accelerometer']
select meta_owner, meta_deviceId, meta_timestamp, 'Y' as axis, accelerometer_y as value
insert into AccelerometerStream;
from AndroidSense[meta_type == 'accelerometer']
select meta_owner, meta_deviceId, meta_timestamp, 'Z' as axis, accelerometer_z as value
insert into AccelerometerStream;
from AndroidSense[meta_type == 'gyroscope']
select meta_owner, meta_deviceId, meta_timestamp, gyroscope_x as x, gyroscope_y as y, gyroscope_z as z
select meta_owner, meta_deviceId, meta_timestamp, 'X' as axis, gyroscope_x as value
insert into GyroscopeStream;
from AndroidSense[meta_type == 'gyroscope']
select meta_owner, meta_deviceId, meta_timestamp, 'Y' as axis, gyroscope_y as value
insert into GyroscopeStream;
from AndroidSense[meta_type == 'gyroscope']
select meta_owner, meta_deviceId, meta_timestamp, 'Z' as axis, gyroscope_z as value
insert into GyroscopeStream;
from AndroidSense[meta_type == 'magnetic']
select meta_owner, meta_deviceId, meta_timestamp, magnetic_x as x, magnetic_y as y, magnetic_z as z
select meta_owner, meta_deviceId, meta_timestamp, 'X' as axis, magnetic_x as value
insert into MagneticStream;
from AndroidSense[meta_type == 'magnetic']
select meta_owner, meta_deviceId, meta_timestamp, 'Y' as axis, magnetic_y as value
insert into MagneticStream;
from AndroidSense[meta_type == 'magnetic']
select meta_owner, meta_deviceId, meta_timestamp, 'Z' as axis, magnetic_z as value
insert into MagneticStream;
from AndroidSense[meta_type == 'gravity']
@ -72,7 +97,15 @@ select meta_owner, meta_deviceId, meta_timestamp, gravity_x as x, gravity_y as y
insert into GravityStream;
from AndroidSense[meta_type == 'rotation']
select meta_owner, meta_deviceId, meta_timestamp, rotation_x as x, rotation_y as y, rotation_z as z
select meta_owner, meta_deviceId, meta_timestamp, 'X' as axis, rotation_x as value
insert into RotationStream;
from AndroidSense[meta_type == 'rotation']
select meta_owner, meta_deviceId, meta_timestamp, 'Y' as axis, rotation_y as value
insert into RotationStream;
from AndroidSense[meta_type == 'rotation']
select meta_owner, meta_deviceId, meta_timestamp, 'Z' as axis, rotation_z as value
insert into RotationStream;
from AndroidSense[meta_type == 'pressure']

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except

@ -3,16 +3,16 @@
@Plan:description('Process gyroscope changes.')
@Import('org.wso2.iot.android.gyroscope:1.0.0')
define stream GyroscopeStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream GyroscopeStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.gyroscope.stats:1.0.0')
define stream GyroscopeStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x
float, y float, z float, year int, month int, day int, hour int, minute int);
define stream GyroscopeStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value
float, year int, month int, day int, hour int, minute int);
partition with (meta_deviceId of GyroscopeStream)
begin
from GyroscopeStream
select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract
(meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute
select meta_owner, meta_deviceId, meta_timestamp, axis, value, time:extract (meta_timestamp, 'year') as year,
time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute
insert into GyroscopeStatsStream;
end;

@ -0,0 +1,16 @@
{
"provider-conf": {
"streamName": "org.wso2.iot.android.gyroscope:1.0.0",
"provider-name": "realtime"
},
"chart-conf": {
"x": "TIMESTAMP",
"xType": "time",
"y": "value",
"yType": "number",
"color": "axis",
"maxLength": "30",
"gadget-name": "ANDROID_GYROSCOPE_GADGET",
"chart-name": "line-chart"
}
}

@ -0,0 +1,9 @@
{
"id": "ANDROID_GYROSCOPE_GADGET",
"title": "ANDROID_GYROSCOPE_GADGET",
"type": "gadget",
"thumbnail": "gadget/ANDROID_GYROSCOPE_GADGET/thumbnail.png",
"data": {
"url": "gadget/ANDROID_GYROSCOPE_GADGET/gadget.xml"
}
}

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="ACCELEROMETER Y" description="This is a template gadget">
<ModulePrefs title="ANDROID_GYROSCOPE_GADGET" description="This is a template gadget">
<Require feature="dynamic-height"/>
<Require feature="wso2-gadgets-identity"/>
</ModulePrefs>
@ -20,8 +20,6 @@
<!-- chart specific css -->
<link href="css/number-chart.css" rel="stylesheet" type="text/css">
<!-- jQuery -->
<script src="/portal/libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
@ -50,7 +48,7 @@
<script src="js/core/provider-client.js"></script>
<script src="js/core/gadget-util.js"></script>
<script src="js/core/number-chart-api.js"></script>
<script src="js/core/line-chart-api.js"></script>
<script src="js/core/gadget-core.js"></script>
</head>

@ -14,7 +14,7 @@
* limitations under the License.
*/
var getGadgetLocation = function (callback) {
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ACCELEROMETER_Z";
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ANDROID_GYROSCOPE_GADGET";
var PATH_SEPERATOR = "/";
if (gadgetLocation.search("store") != -1) {
wso2.gadgets.identity.getTenantDomain(function (tenantDomain) {

@ -24,16 +24,30 @@ var getConfig, validate, isProviderRequired, draw, update;
* @param schema
*/
getConfig = function(schema) {
var chartConf = require(CHART_LOCATION + '/number-chart/config.json').config;
var chartConf = require(CHART_LOCATION + '/line-chart/config.json').config;
/*
dynamic logic goes here
*/
return chartConf;
var columns = [];
columns.push("None");
for(var i=0; i < schema.length; i++) {
columns.push(schema[i]["fieldName"]);
}
for(var i=0; i < chartConf.length; i++) {
if (chartConf[i]["fieldName"] == "color") {
chartConf[i]["valueSet"] = columns;
break;
}
}
return chartConf;
};
/**
* validate the user inout for the chart configurationx
* validate the user inout for the chart configuration
* @param chartConfig
*/
validate = function(chartConfig) {
@ -55,7 +69,9 @@ var getConfig, validate, isProviderRequired, draw, update;
* @param data
*/
draw = function(placeholder, chartConfig, _schema, data) {
_schema = updateUserPrefXYTypes(_schema, chartConfig);
var schema = toVizGrammarSchema(_schema);
var view = {
id: "chart-0",
schema: schema,
@ -93,17 +109,24 @@ var getConfig, validate, isProviderRequired, draw, update;
*/
update = function(data) {
wso2gadgets.onDataReady(data,"append");
}
};
buildChartConfig = function (_chartConfig) {
var conf = {};
conf.x = _chartConfig.x;
conf.xType = _chartConfig.xType;
conf.yType = _chartConfig.yType;
conf.maxLength = _chartConfig.maxLength;
conf.charts = [];
conf.charts[0] = {
type : "number",
title : _chartConfig.title
type : "line",
y: _chartConfig.y
};
if (_chartConfig.color != "None") {
conf.charts[0].color = _chartConfig.color;
}
return conf;
};

@ -17,7 +17,7 @@
~ under the License.
-->
<artifact name= "android_accelerometer_y_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>ACCELEROMETER_Y</file>
<artifact name= "android_gyroscope_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>ANDROID_GYROSCOPE_GADGET</file>
</artifact>

@ -26,23 +26,15 @@
<Type>LONG</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>x</Name>
<Name>axis</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>y</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>z</Name>
<Name>value</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
},
{

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
}
]

@ -3,16 +3,15 @@
@Plan:description('Process magnetic field changes.')
@Import('org.wso2.iot.android.magnetic:1.0.0')
define stream MagneticStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream MagneticStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.magnetic.stats:1.0.0')
define stream MagneticStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x
float, y float, z float, year int, month int, day int, hour int, minute int);
define stream MagneticStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float, year int, month int, day int, hour int, minute int);
partition with (meta_deviceId of MagneticStream)
begin
from MagneticStream
select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract
select meta_owner, meta_deviceId, meta_timestamp, axis, value, time:extract
(meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute
insert into MagneticStatsStream;
end;

@ -0,0 +1,16 @@
{
"provider-conf": {
"streamName": "org.wso2.iot.android.magnetic:1.0.0",
"provider-name": "realtime"
},
"chart-conf": {
"x": "TIMESTAMP",
"xType": "time",
"y": "value",
"yType": "number",
"color": "axis",
"maxLength": "30",
"gadget-name": "ANDROID_MAGNETIC_GADGET",
"chart-name": "line-chart"
}
}

@ -0,0 +1,9 @@
{
"id": "ANDROID_MAGNETIC_GADGET",
"title": "ANDROID_MAGNETIC_GADGET",
"type": "gadget",
"thumbnail": "gadget/ANDROID_MAGNETIC_GADGET/thumbnail.png",
"data": {
"url": "gadget/ANDROID_MAGNETIC_GADGET/gadget.xml"
}
}

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Accelerometer X" description="This is a template gadget">
<ModulePrefs title="ANDROID_MAGNETIC_GADGET" description="This is a template gadget">
<Require feature="dynamic-height"/>
<Require feature="wso2-gadgets-identity"/>
</ModulePrefs>
@ -20,8 +20,6 @@
<!-- chart specific css -->
<link href="css/number-chart.css" rel="stylesheet" type="text/css">
<!-- jQuery -->
<script src="/portal/libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
@ -50,7 +48,7 @@
<script src="js/core/provider-client.js"></script>
<script src="js/core/gadget-util.js"></script>
<script src="js/core/number-chart-api.js"></script>
<script src="js/core/line-chart-api.js"></script>
<script src="js/core/gadget-core.js"></script>
</head>

@ -14,7 +14,7 @@
* limitations under the License.
*/
var getGadgetLocation = function (callback) {
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/Accelerometer_X";
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ANDROID_MAGNETIC_GADGET";
var PATH_SEPERATOR = "/";
if (gadgetLocation.search("store") != -1) {
wso2.gadgets.identity.getTenantDomain(function (tenantDomain) {

@ -24,16 +24,30 @@ var getConfig, validate, isProviderRequired, draw, update;
* @param schema
*/
getConfig = function(schema) {
var chartConf = require(CHART_LOCATION + '/number-chart/config.json').config;
var chartConf = require(CHART_LOCATION + '/line-chart/config.json').config;
/*
dynamic logic goes here
*/
return chartConf;
var columns = [];
columns.push("None");
for(var i=0; i < schema.length; i++) {
columns.push(schema[i]["fieldName"]);
}
for(var i=0; i < chartConf.length; i++) {
if (chartConf[i]["fieldName"] == "color") {
chartConf[i]["valueSet"] = columns;
break;
}
}
return chartConf;
};
/**
* validate the user inout for the chart configurationx
* validate the user inout for the chart configuration
* @param chartConfig
*/
validate = function(chartConfig) {
@ -55,7 +69,9 @@ var getConfig, validate, isProviderRequired, draw, update;
* @param data
*/
draw = function(placeholder, chartConfig, _schema, data) {
_schema = updateUserPrefXYTypes(_schema, chartConfig);
var schema = toVizGrammarSchema(_schema);
var view = {
id: "chart-0",
schema: schema,
@ -93,17 +109,24 @@ var getConfig, validate, isProviderRequired, draw, update;
*/
update = function(data) {
wso2gadgets.onDataReady(data,"append");
}
};
buildChartConfig = function (_chartConfig) {
var conf = {};
conf.x = _chartConfig.x;
conf.xType = _chartConfig.xType;
conf.yType = _chartConfig.yType;
conf.maxLength = _chartConfig.maxLength;
conf.charts = [];
conf.charts[0] = {
type : "number",
title : _chartConfig.title
type : "line",
y: _chartConfig.y
};
if (_chartConfig.color != "None") {
conf.charts[0].color = _chartConfig.color;
}
return conf;
};

@ -17,7 +17,7 @@
~ under the License.
-->
<artifact name= "android_accelerometer_x_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>Accelerometer_X</file>
<artifact name= "android_magnetic_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>ANDROID_MAGNETIC_GADGET</file>
</artifact>

@ -26,23 +26,15 @@
<Type>LONG</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>x</Name>
<Name>axis</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>y</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>z</Name>
<Name>value</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
},
{

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
}
]

@ -3,16 +3,16 @@
@Plan:description('Process rotation field changes.')
@Import('org.wso2.iot.android.rotation:1.0.0')
define stream RotationStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float);
define stream RotationStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value float);
@Export('org.wso2.iot.android.rotation.stats:1.0.0')
define stream RotationStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x
float, y float, z float, year int, month int, day int, hour int, minute int);
define stream RotationStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, axis string, value
float, year int, month int, day int, hour int, minute int);
partition with (meta_deviceId of RotationStream)
begin
from RotationStream
select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract
select meta_owner, meta_deviceId, meta_timestamp, axis, value, time:extract
(meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute
insert into RotationStatsStream;
end;

@ -0,0 +1,16 @@
{
"provider-conf": {
"streamName": "org.wso2.iot.android.rotation:1.0.0",
"provider-name": "realtime"
},
"chart-conf": {
"x": "TIMESTAMP",
"xType": "time",
"y": "value",
"yType": "number",
"color": "axis",
"maxLength": "30",
"gadget-name": "ANDROID_ROTATION_GADGET",
"chart-name": "line-chart"
}
}

@ -0,0 +1,42 @@
<%
/**
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
(function () {
response.contentType = 'application/json';
var PROVIDER_CONF = 'provider-conf';
var PROVIDER_NAME = 'provider-name';
var action = request.getParameter("action");
var data = request.getContent();
var providerConf = data[PROVIDER_CONF];
var providerAPI = require('js/core/' + providerConf[PROVIDER_NAME] + '-provider-api.js');
if (action === 'getSchema') {
print(providerAPI.getSchema(providerConf));
return;
} else if(action === 'getData'){
print(providerAPI.getData(providerConf));
return;
}
}());
%>

@ -0,0 +1,9 @@
{
"id": "ANDROID_ROTATION_GADGET",
"title": "ANDROID_ROTATION_GADGET",
"type": "gadget",
"thumbnail": "gadget/ANDROID_ROTATION_GADGET/thumbnail.png",
"data": {
"url": "gadget/ANDROID_ROTATION_GADGET/gadget.xml"
}
}

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="ANDROID_ROTATION_GADGET" description="This is a template gadget">
<Require feature="dynamic-height"/>
<Require feature="wso2-gadgets-identity"/>
</ModulePrefs>
<UserPref name="windowSize"
display_name="Window Size"
default_value="10"/>
<Content type="html">
<![CDATA[
<head>
<!-- shared css -->
<link href="/portal/libs/analytics-wso2-2.0.0/common.css" rel="stylesheet" type="text/css" >
<!-- chart vendor css -->
<!-- chart specific css -->
<!-- jQuery -->
<script src="/portal/libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
<!-- provider libs -->
<script src="js/provider-libs/ws-client.js"></script>
<!-- shared libs -->
<script src="/portal/libs/analytics-wso2-2.0.0/d3.min.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/vega.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/VizGrammar.min.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/wso2gadgets.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/chart-utils.js"></script>
<!-- chart specific vendor libs -->
<!-- chart specific js -->
<!--scripts copied by framework -->
<script src="js/core/provider-client.js"></script>
<script src="js/core/gadget-util.js"></script>
<script src="js/core/line-chart-api.js"></script>
<script src="js/core/gadget-core.js"></script>
</head>
<body>
<div id="canvas"></div>
</body>
]]>
</Content>
</Module>

@ -0,0 +1,64 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
$(function () {
var gadgetLocation;
var conf;
var schema;
var pref = new gadgets.Prefs();
var CHART_CONF = 'chart-conf';
var PROVIDER_CONF = 'provider-conf';
var init = function () {
$.ajax({
url: gadgetLocation + '/conf.json',
method: "GET",
contentType: "application/json",
async: false,
success: function (data) {
conf = JSON.parse(data);
$.ajax({
url: gadgetLocation + '/gadget-controller.jag?action=getSchema',
method: "POST",
data: JSON.stringify(conf),
contentType: "application/json",
async: false,
success: function (data) {
schema = data;
}
});
}
});
};
var drawGadget = function (){
draw('#canvas', conf[CHART_CONF], schema, null);
registerCallBackforPush(conf[PROVIDER_CONF], schema, function(providerData) {
update(providerData);
});
};
getGadgetLocation(function (gadget_Location) {
gadgetLocation = gadget_Location;
init();
drawGadget();
});
});

@ -14,7 +14,7 @@
* limitations under the License.
*/
var getGadgetLocation = function (callback) {
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ACCELEROMETER_Y";
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ANDROID_ROTATION_GADGET";
var PATH_SEPERATOR = "/";
if (gadgetLocation.search("store") != -1) {
wso2.gadgets.identity.getTenantDomain(function (tenantDomain) {

@ -0,0 +1,134 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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.
*/
var getConfig, validate, isProviderRequired, draw, update;
(function() {
var CHART_LOCATION = '/extensions/chart-templates/';
/**
* return the config to be populated in the chart configuration UI
* @param schema
*/
getConfig = function(schema) {
var chartConf = require(CHART_LOCATION + '/line-chart/config.json').config;
/*
dynamic logic goes here
*/
var columns = [];
columns.push("None");
for(var i=0; i < schema.length; i++) {
columns.push(schema[i]["fieldName"]);
}
for(var i=0; i < chartConf.length; i++) {
if (chartConf[i]["fieldName"] == "color") {
chartConf[i]["valueSet"] = columns;
break;
}
}
return chartConf;
};
/**
* validate the user inout for the chart configuration
* @param chartConfig
*/
validate = function(chartConfig) {
return true;
};
/**
* TO be used when provider configuration steps need to be skipped
*/
isProviderRequired = function() {
}
/**
* return the gadget content
* @param chartConfig
* @param schema
* @param data
*/
draw = function(placeholder, chartConfig, _schema, data) {
_schema = updateUserPrefXYTypes(_schema, chartConfig);
var schema = toVizGrammarSchema(_schema);
var view = {
id: "chart-0",
schema: schema,
chartConfig: buildChartConfig(chartConfig),
data: function() {
if(data) {
var result = [];
console.log(data);
data.forEach(function(item) {
var row = [];
schema[0].metadata.names.forEach(function(name) {
row.push(item[name]);
});
result.push(row);
});
console.log(result);
wso2gadgets.onDataReady(result);
}
}
};
try {
wso2gadgets.init(placeholder, view);
var view = wso2gadgets.load("chart-0");
} catch (e) {
console.error(e);
}
};
/**
*
* @param data
*/
update = function(data) {
wso2gadgets.onDataReady(data,"append");
};
buildChartConfig = function (_chartConfig) {
var conf = {};
conf.x = _chartConfig.x;
conf.xType = _chartConfig.xType;
conf.yType = _chartConfig.yType;
conf.maxLength = _chartConfig.maxLength;
conf.charts = [];
conf.charts[0] = {
type : "line",
y: _chartConfig.y
};
if (_chartConfig.color != "None") {
conf.charts[0].color = _chartConfig.color;
}
return conf;
};
}());

@ -0,0 +1,51 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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.
*/
// var registerCallBackforPush;
(function() {
var callback;
/**
* TODO Need to read hostname,port, and tenantId from providerConfig
* @param providerConfig
* @param schema
*/
registerCallBackforPush = function(providerConfig, schema, _callback) {
var streamId = providerConfig['streamName'];
var hostname = window.parent.location.hostname;
var port = window.parent.location.port;
subscribe(streamId.split(":")[0], streamId.split(":")[1],
'10',
onData, onError,
hostname,
port,
'WEBSOCKET'
);
callback = _callback;
};
function onData(streamId, data) {
callback(data);
};
function onError(error) {
console.error(error);
};
}());

@ -0,0 +1,154 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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.
*/
var getConfig, validate, getMode, getSchema, getData, registerCallBackforPush;
(function() {
var PROVIDERS_LOCATION = '/extensions/providers/';
var PROVIDER_NAME = 'realtime';
var log = new Log();
var utils = require('/modules/utils.js');
var carbon = require("carbon");
var EventPublisherConstants = Packages.org.wso2.carbon.event.publisher.core.config.EventPublisherConstants;
var eventPublisherService = carbon.server.osgiService('org.wso2.carbon.event.publisher.core.EventPublisherService');
var eventStreamService = carbon.server.osgiService('org.wso2.carbon.event.stream.core.EventStreamService');
var typeMap = {
"bool": "string",
"boolean": "string",
"string": "string",
"int": "number",
"integer": "number",
"long": "number",
"double": "number",
"float": "number",
"time": "time"
};
getConfig = function() {
var formConfig = require(PROVIDERS_LOCATION + '/' + PROVIDER_NAME + '/config.json');
var datasources = [];
try {
var eventPublisherConfigurationList = eventPublisherService.getAllActiveEventPublisherConfigurations();
for (var i = 0; i < eventPublisherConfigurationList.size(); i++) {
var eventPublisherConfiguration = eventPublisherService.getActiveEventPublisherConfiguration(
eventPublisherConfigurationList.get(i).getEventPublisherName());;
var mappingTypeIsWso2 = eventPublisherConfiguration.getOutputMapping()
.getMappingType().equals(EventPublisherConstants.EF_WSO2EVENT_MAPPING_TYPE);
var adapterType = null;
if (eventPublisherConfiguration.getToAdapterConfiguration() != null) {
adapterType = eventPublisherConfiguration.getToAdapterConfiguration().getType();
}
if (mappingTypeIsWso2 && adapterType.trim() == "ui") {
var streamName = eventPublisherConfiguration.getFromStreamName();
var streamVersion = eventPublisherConfiguration.getFromStreamVersion();
var streamId = streamName + ":" + streamVersion;
datasources.push(streamId);
}
}
var datasourceCfg = {
"fieldLabel": "Event Stream",
"fieldName": "streamName",
"fieldType": "dropDown"
};
datasourceCfg['valueSet'] = datasources;
} catch (e) {
log.error(e);
}
formConfig.config.push(datasourceCfg);
return formConfig;
};
/**
* validate the user input of provider configuration
* @param providerConfig
*/
validate = function(providerConfig) {
/*
validate the form and return
*/
return true;
};
/**
* returns the data mode either push or pull
*/
getMode = function() {
return 'push';
};
/**
* returns an array of column names & types
* @param providerConfig
*/
getSchema = function(providerConfig) {
var streamId = providerConfig["streamName"];
var output = [];
output.push({
fieldName: "TIMESTAMP",
fieldType: "time"
});
if (eventStreamService != null) {
var eventStreamConfiguration = eventStreamService.getEventStreamConfiguration(streamId);
if (eventStreamConfiguration != null) {
var metaData = eventStreamConfiguration.getStreamDefinition().getMetaData();
var correlationData = eventStreamConfiguration.getStreamDefinition().getCorrelationData();
var payloadData = eventStreamConfiguration.getStreamDefinition().getPayloadData();
if (metaData != null) {
for (var i = 0; i < metaData.size(); i++) {
var type = metaData.get(i).getType().toString().toLowerCase();
output.push({
fieldName: metaData.get(i).getName(),
fieldType: typeMap[type.toLowerCase()]
});
}
}
if (correlationData != null) {
for (var i = 0; i < correlationData.size(); i++) {
var type = correlationData.get(i).getType().toString().toLowerCase();
output.push({
fieldName: correlationData.get(i).getName(),
fieldType: typeMap[type.toLowerCase()]
});
}
}
if (payloadData != null) {
for (var i = 0; i < payloadData.size(); i++) {
var type = payloadData.get(i).getType().toString().toLowerCase();
output.push({
fieldName: payloadData.get(i).getName(),
fieldType: typeMap[type.toLowerCase()]
});
}
}
}
}
return output;
};
getData = function(providerConfig,limit) {
var data = [];
return data;
};
}());

@ -0,0 +1,287 @@
/*
* 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.
*/
var CONSTANTS = {
urlSeperator: '/',
queryParamStreamName : '?streamname=',
queryParamStreamVersion : '&version=',
queryParamLastUpdatedTime : '&lastUpdatedTime=',
urlSecureTransportWebsocket : 'wss://',
urlSecureTransportHttp : 'https://',
colon : ':',
defaultIntervalTime : 10 * 1000,
defaultHostName : 'localhost',
defaultSecurePortNumber : '9443',
defaultMode : 'AUTO',
processModeHTTP : 'HTTP',
processModeWebSocket : 'WEBSOCKET',
processModeAuto : 'AUTO',
numThousand : 1000,
websocketTimeAppender : 400,
websocketSubscriptionEndpoint : 'portal/uipublisher/websocketSubscriptionEndpoint.jag',
httpEventRetrievalEndpoint : 'portal/uipublisher/httpEventRetrievalEndpoint.jag'
};
var websocket = null;
var webSocketUrl;
var httpUrl;
var cepHostName;
var cepPortNumber;
var isErrorOccured = false;
var lastUpdatedtime = -1;
var polingInterval;
var stream;
var streamVersion;
var firstPollingAttempt;
var processMode;
var onSuccessFunction;
var onErrorFunction;
var terminateWebsocketInstance = false;
var pollingContinue = true;
function subscribe(streamName,version,intervalTime,
listeningFuncSuccessData,listeningFuncErrorData,cepHost,cepPort,mode){
stopPollingProcesses();
stream = streamName;
streamVersion = version;
onSuccessFunction = listeningFuncSuccessData;
onErrorFunction = listeningFuncErrorData;
if(intervalTime == null || intervalTime == ""){
polingInterval = CONSTANTS.defaultIntervalTime;
} else{
polingInterval = intervalTime * CONSTANTS.numThousand;
}
if(cepHost == null || cepHost == ""){
cepHostName = CONSTANTS.defaultHostName;
} else{
cepHostName = cepHost;
}
if(cepPort == null || cepPort == ""){
cepPortNumber = CONSTANTS.defaultSecurePortNumber;
} else{
cepPortNumber = cepPort;
}
if(mode == null || mode == ""){
processMode = CONSTANTS.defaultMode;
} else{
processMode = mode;
}
webSocketUrl = CONSTANTS.urlSecureTransportWebsocket + cepHostName + CONSTANTS.colon + cepPortNumber +
CONSTANTS.urlSeperator + CONSTANTS.websocketSubscriptionEndpoint;
if(processMode == CONSTANTS.processModeHTTP){
firstPollingAttempt = true;
pollingContinue = true;
startPoll();
} else{
initializeWebSocket(webSocketUrl);
}
}
/**
* Initializing Web Socket
*/
function initializeWebSocket(webSocketUrl){
websocket = new WebSocket(webSocketUrl);
websocket.onopen = webSocketOnOpen;
websocket.onmessage = webSocketOnMessage;
websocket.onclose = webSocketOnClose;
websocket.onerror = webSocketOnError;
}
function getWebsocketSubscriptionMessage(streamName, streamVersion, streamProperties, streamValues) {
if (streamProperties.length === streamValues.length) {
var message = {};
message.streamName = streamName;
message.streamVersion = streamVersion;
var i;
for (i = 0; i < streamProperties.length; i++) {
message.filterProps = [];
message.filterProps.push({
'name': streamProperties[i],
'value': streamValues[i]
});
}
return JSON.stringify(message);
} else {
console.log('stream properties and values are not in equal size');
}
}
/**
* Get the parameters as query parameters.
* This method parses those parameters and returns.
* */
function getAllQueryParamsFromURL() {
var queryParamList = {}, qParam;
var urlQueryString = decodeURIComponent(window.top.location.search.substring(1));
if (urlQueryString) {
var queryStringPairs = urlQueryString.split('&');
for (var i = 0; i < queryStringPairs.length; i++) {
qParam = queryStringPairs[i].split('=');
queryParamList[qParam[0]] = qParam[1];
}
return queryParamList;
} else {
return null;
}
}
/**
* Web socket On Open
*/
var webSocketOnOpen = function () {
var params = getAllQueryParamsFromURL();
var deviceId;
var owner;
if (params) {
owner = params["owner"];
deviceId = params["deviceId"];
}
var filterPropNames = ["meta_owner", "meta_deviceId"];
var filterPropVals = [owner, deviceId];
var data = getWebsocketSubscriptionMessage(stream, streamVersion, filterPropNames, filterPropVals);
websocket.send(data);
};
/**
* On server sends a message
*/
var webSocketOnMessage = function (evt) {
var event = evt.data;
var array = JSON.parse(event);
constructPayload(array);
};
/**
* On server close
*/
var webSocketOnClose =function (e) {
if(isErrorOccured){
if(processMode != CONSTANTS.processModeWebSocket){
firstPollingAttempt = true;
pollingContinue = true;
startPoll();
}
} else{
if(!terminateWebsocketInstance){
waitForSocketConnection(websocket);
} else{
terminateWebsocketInstance = false;
}
}
};
/**
* On server Error
*/
var webSocketOnError = function (err) {
var error = "Error: Cannot connect to Websocket URL:" + webSocketUrl + " .Hence closing the connection!";
onErrorFunction(error);
isErrorOccured = true;
};
/**
* Gracefully increments the connection retry
*/
var waitTime = CONSTANTS.numThousand;
function waitForSocketConnection(socket, callback){
setTimeout(
function () {
if (socket.readyState === 1) {
initializeWebSocket(webSocketUrl);
console.log("Connection is made");
if(callback != null){
callback();
}
return;
} else {
websocket = new WebSocket(webSocketUrl);
waitTime += CONSTANTS.websocketTimeAppender;
waitForSocketConnection(websocket, callback);
}
}, waitTime);
}
/**
* Polling to retrieve events from http request periodically
*/
function startPoll(){
(function poll(){
setTimeout(function(){
httpUrl = CONSTANTS.urlSecureTransportHttp + cepHostName + CONSTANTS.colon + cepPortNumber +
CONSTANTS.urlSeperator + CONSTANTS.httpEventRetrievalEndpoint + CONSTANTS.queryParamStreamName + stream +
CONSTANTS.queryParamStreamVersion + streamVersion + CONSTANTS.queryParamLastUpdatedTime + lastUpdatedtime;;
$.getJSON(httpUrl, function(responseText) {
if(firstPollingAttempt){
/*var data = $("textarea#idConsole").val();
$("textarea#idConsole").val(data + "Successfully connected to HTTP.");*/
firstPollingAttempt = false;
}
var eventList = $.parseJSON(responseText.events);
if(eventList.length != 0){
lastUpdatedtime = responseText.lastEventTime;
for(var i=0;i<eventList.length;i++){
var arr = eventList[i];
constructPayload(arr);
}
}
if(pollingContinue){
startPoll();
}
})
.fail(function(errorData) {
var errorData = JSON.parse(errorData.responseText);
onErrorFunction(errorData.error);
});
}, polingInterval);
})()
}
function stopPollingProcesses(){
//stopping the Websocket
if(websocket != null){
terminateWebsocketInstance = true;
websocket.close();
}
//stopping the HTTPS Request
pollingContinue = false;
}
function constructPayload(eventsArray){
var streamId = stream + CONSTANTS.colon + streamVersion;
var twoDimentionalArray = [eventsArray];
onSuccessFunction(streamId,twoDimentionalArray);
}

@ -17,7 +17,6 @@
~ under the License.
-->
<artifact name= "android_accelerometer_z_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>ACCELEROMETER_Z</file>
<artifact name= "android_rotation_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>ANDROID_ROTATION_GADGET</file>
</artifact>

@ -26,23 +26,15 @@
<Type>LONG</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>x</Name>
<Name>axis</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>y</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>
<EnableScoreParam>false</EnableScoreParam>
<Type>FLOAT</Type>
<Type>STRING</Type>
</ColumnDefinition>
<ColumnDefinition>
<Name>z</Name>
<Name>value</Name>
<IsFacet>false</IsFacet>
<EnableIndexing>false</EnableIndexing>
<IsPrimaryKey>false</IsPrimaryKey>

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
},
{

@ -19,15 +19,11 @@
],
"payloadData": [
{
"name": "x",
"type": "FLOAT"
},
{
"name": "y",
"type": "FLOAT"
"name": "axis",
"type": "STRING"
},
{
"name": "z",
"name": "value",
"type": "FLOAT"
}
]

@ -10,17 +10,17 @@
"hideAllMenuItems": false,
"id": "android-iot",
"identityServerUrl": "",
"isEditorEnable": true,
"isEditorEnable": false,
"isUserCustom": false,
"isanon": false,
"landing": "home",
"landing": "sensors",
"menu": [
{
"id": "home",
"id": "sensors",
"isanon": false,
"ishidden": false,
"subordinates": [],
"title": "Home"
"title": "Sensors"
},
{
"id": "real-time",
@ -61,7 +61,7 @@
"id": "test",
"isanon": false,
"ishidden": false,
"title": "test",
"title": "Test",
"subordinates": []
}
],
@ -70,22 +70,23 @@
"content": {
"anon": {},
"default": {
"a": [
"a": [],
"b": [
{
"id": "ACCELEROMETER_Y-0",
"id": "ANDROID_MAGNETIC_GADGET-0",
"content": {
"id": "ACCELEROMETER_Y",
"title": "ACCELEROMETER Y",
"id": "ANDROID_MAGNETIC_GADGET",
"title": "ANDROID_MAGNETIC_GADGET",
"type": "gadget",
"thumbnail": "fs://gadget/ACCELEROMETER_Y/thumbnail.png",
"thumbnail": "fs://gadget/ANDROID_MAGNETIC_GADGET/thumbnail.png",
"data": {
"url": "fs://gadget/ACCELEROMETER_Y/gadget.xml"
"url": "fs://gadget/ANDROID_MAGNETIC_GADGET/gadget.xml"
},
"styles": {
"no_heading": false,
"hide_gadget": false,
"titlePosition": "center",
"title": "ACCELEROMETER Y"
"title": "MAGNETIC FIELD"
},
"options": {
"windowSize": {
@ -97,7 +98,7 @@
}
},
"locale_titles": {
"en-US": "ACCELEROMETER Y"
"en-US": "MAGNETIC FIELD"
},
"settings": {
"priority": "5",
@ -106,58 +107,22 @@
}
}
],
"b": [
{
"id": "ACCELEROMETER_Z-0",
"content": {
"id": "ACCELEROMETER_Z",
"title": "ACCELEROMETER Z",
"type": "gadget",
"thumbnail": "fs://gadget/ACCELEROMETER_Z/thumbnail.png",
"data": {
"url": "fs://gadget/ACCELEROMETER_Z/gadget.xml"
},
"styles": {
"no_heading": false,
"hide_gadget": false,
"titlePosition": "center",
"title": "ACCELEROMETER Z"
},
"options": {
"windowSize": {
"type": "STRING",
"title": "Window Size",
"value": "10",
"options": [],
"required": false
}
},
"locale_titles": {
"en-US": "ACCELEROMETER Z"
},
"settings": {
"priority": "5",
"timeoutInterval": "60000"
}
}
}
],
"8e564cb7a1c6519179e2111cc05a79ca": [
{
"id": "Accelerometer_X-0",
"id": "ANDROID_ACCELEROMETER_GADGET-0",
"content": {
"id": "Accelerometer_X",
"title": "Accelerometer X",
"id": "ANDROID_ACCELEROMETER_GADGET",
"title": "ANDROID_ACCELEROMETER_GADGET",
"type": "gadget",
"thumbnail": "fs://gadget/Accelerometer_X/thumbnail.png",
"thumbnail": "fs://gadget/ANDROID_ACCELEROMETER_GADGET/thumbnail.png",
"data": {
"url": "fs://gadget/Accelerometer_X/gadget.xml"
"url": "fs://gadget/ANDROID_ACCELEROMETER_GADGET/gadget.xml"
},
"styles": {
"no_heading": false,
"hide_gadget": false,
"titlePosition": "center",
"title": "Accelerometer X"
"title": "ACCELEROMETER"
},
"options": {
"windowSize": {
@ -169,7 +134,7 @@
}
},
"locale_titles": {
"en-US": "Accelerometer X"
"en-US": "ACCELEROMETER"
},
"settings": {
"priority": "5",
@ -249,43 +214,107 @@
}
}
}
],
"765379a7012b8819ea13524e5b312509": [
{
"id": "ANDROID_ROTATION_GADGET-0",
"content": {
"id": "ANDROID_ROTATION_GADGET",
"title": "ANDROID_ROTATION_GADGET",
"type": "gadget",
"thumbnail": "fs://gadget/ANDROID_ROTATION_GADGET/thumbnail.png",
"data": {
"url": "fs://gadget/ANDROID_ROTATION_GADGET/gadget.xml"
},
"styles": {
"no_heading": false,
"hide_gadget": false,
"titlePosition": "center",
"title": "ROTATIONAL VECTOR"
},
"options": {
"windowSize": {
"type": "STRING",
"title": "Window Size",
"value": "10",
"options": [],
"required": false
}
},
"locale_titles": {
"en-US": "ROTATIONAL VECTOR"
},
"settings": {
"priority": "5",
"timeoutInterval": "60000"
}
}
}
],
"47ceaee8a089ea8ef75c91e5b83a1a36": [
{
"id": "ANDROID_GYROSCOPE_GADGET-0",
"content": {
"id": "ANDROID_GYROSCOPE_GADGET",
"title": "ANDROID_GYROSCOPE_GADGET",
"type": "gadget",
"thumbnail": "fs://gadget/ANDROID_GYROSCOPE_GADGET/thumbnail.png",
"data": {
"url": "fs://gadget/ANDROID_GYROSCOPE_GADGET/gadget.xml"
},
"styles": {
"no_heading": false,
"hide_gadget": false,
"titlePosition": "center",
"title": "GYROSCOPE"
},
"options": {
"windowSize": {
"type": "STRING",
"title": "Window Size",
"value": "10",
"options": [],
"required": false
}
},
"locale_titles": {
"en-US": "GYROSCOPE"
},
"settings": {
"priority": "5",
"timeoutInterval": "60000"
}
}
}
]
}
},
"id": "home",
"id": "sensors",
"isanon": false,
"layout": {
"content": {
"loggedIn": {
"blocks": [
{
"id": "a",
"x": 4,
"y": 0,
"width": 4,
"height": 4,
"banner": false
},
{
"id": "b",
"x": 8,
"x": 6,
"y": 0,
"width": 4,
"height": 4,
"width": 6,
"height": 5,
"banner": false
},
{
"id": "8e564cb7a1c6519179e2111cc05a79ca",
"x": 0,
"y": 0,
"width": 4,
"height": 4,
"width": 6,
"height": 5,
"banner": false
},
{
"id": "fdfada688ff9e7b3271eece314618532",
"x": 0,
"y": 4,
"y": 5,
"width": 6,
"height": 3,
"banner": false
@ -293,7 +322,7 @@
{
"id": "46193833e958e9f7e879263f372eb508",
"x": 6,
"y": 4,
"y": 5,
"width": 6,
"height": 3,
"banner": false
@ -301,25 +330,17 @@
{
"id": "765379a7012b8819ea13524e5b312509",
"x": 0,
"y": 7,
"width": 4,
"height": 4,
"y": 8,
"width": 6,
"height": 5,
"banner": false
},
{
"id": "47ceaee8a089ea8ef75c91e5b83a1a36",
"x": 8,
"y": 7,
"width": 4,
"height": 4,
"banner": false
},
{
"id": "4a9feeb19fc2ea76e252dcd62c954279",
"x": 4,
"y": 7,
"width": 4,
"height": 4,
"x": 6,
"y": 8,
"width": 6,
"height": 5,
"banner": false
}
]
@ -327,7 +348,7 @@
},
"fluidLayout": false
},
"title": "Home"
"title": "Sensors"
},
{
"content": {
@ -1281,7 +1302,7 @@
},
{
"id": "test",
"title": "test",
"title": "Test",
"layout": {
"content": {
"loggedIn": {
@ -1438,5 +1459,6 @@
},
"shareDashboard": false,
"theme": "Default Theme",
"title": "Android IOT"
"title": "Android IOT",
"defaultPriority": "5"
}

@ -187,11 +187,7 @@
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_accelerometer_ui_event_publisher" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_accelerometer_x_gadget" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_accelerometer_y_gadget" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_accelerometer_z_gadget" version="1.0.0" include="true"
<dependency artifact="android_accelerometer_gadget" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_gyroscope_streams" version="1.0.0" include="true"
@ -204,6 +200,8 @@
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_gyroscope_ui_event_publisher" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_gyroscope_gadget" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_gravity_streams" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
@ -228,6 +226,8 @@
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_magnetic_ui_event_publisher" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_magnetic_gadget" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_rotation_streams" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
@ -239,6 +239,8 @@
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_rotation_ui_event_publisher" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_rotation_gadget" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>
<dependency artifact="android_light_streams" version="1.0.0" include="true"
serverRole="DataAnalyticsServer"/>

@ -18,20 +18,19 @@
*/
package org.wso2.carbon.mdm.services.android.services;
import io.swagger.annotations.SwaggerDefinition;
import io.swagger.annotations.Info;
import io.swagger.annotations.ExtensionProperty;
import io.swagger.annotations.Extension;
import io.swagger.annotations.Tag;
import io.swagger.annotations.Api;
import io.swagger.annotations.AuthorizationScope;
import io.swagger.annotations.Authorization;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
import io.swagger.annotations.AuthorizationScope;
import io.swagger.annotations.Extension;
import io.swagger.annotations.ExtensionProperty;
import io.swagger.annotations.Info;
import io.swagger.annotations.ResponseHeader;
import io.swagger.annotations.SwaggerDefinition;
import io.swagger.annotations.Tag;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.mdm.services.android.bean.wrapper.AndroidApplication;
import org.wso2.carbon.mdm.services.android.bean.wrapper.AndroidDevice;
@ -40,7 +39,15 @@ import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import javax.ws.rs.*;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;

@ -46,7 +46,15 @@ import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import javax.ws.rs.*;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.ArrayList;

@ -18,19 +18,27 @@
package org.wso2.carbon.mdm.services.android.util;
import com.google.gson.*;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.analytics.api.AnalyticsDataAPI;
import org.wso2.carbon.analytics.api.AnalyticsDataAPIUtil;
import org.wso2.carbon.analytics.dataservice.commons.AnalyticsDataResponse;
import org.wso2.carbon.analytics.dataservice.commons.SearchResultEntry;
import org.wso2.carbon.analytics.api.AnalyticsDataAPIUtil;
import org.wso2.carbon.analytics.datasource.commons.Record;
import org.wso2.carbon.analytics.datasource.commons.exception.AnalyticsException;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherService;
import org.wso2.carbon.device.mgt.common.*;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
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.device.details.DeviceInfo;

@ -1,6 +1,6 @@
{{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.qr-modal"}}
{{#if deviceFound}}
{{#if isAuthorized}}

@ -24,16 +24,32 @@
<License>
<Language>en_US</Language>
<Version>1.0.0</Version>
<Text>This End User License Agreement ("Agreement") is a legal agreement between you ("You") and WSO2, Inc., regarding the enrollment of Your personal mobile device ("Device") in SoR's mobile device management program, and the loading to and removal from Your Device and Your use of certain applications and any associated software and user documentation, whether provided in "online" or electronic format, used in connection with the operation of or provision of services to WSO2, Inc., BY SELECTING "I ACCEPT" DURING INSTALLATION, YOU ARE ENROLLING YOUR DEVICE, AND THEREBY AUTHORIZING SOR OR ITS AGENTS TO INSTALL, UPDATE AND REMOVE THE APPS FROM YOUR DEVICE AS DESCRIBED IN THIS AGREEMENT. YOU ARE ALSO EXPLICITLY ACKNOWLEDGING AND AGREEING THAT (1) THIS IS A BINDING CONTRACT AND (2) YOU HAVE READ AND AGREE TO THE TERMS OF THIS AGREEMENT.
<Text>This End User License Agreement ("Agreement") is a legal agreement between you ("You") and WSO2,
Inc., regarding the enrollment of Your personal mobile device ("Device") in SoR's mobile device
management program, and the loading to and removal from Your Device and Your use of certain
applications and any associated software and user documentation, whether provided in "online" or
electronic format, used in connection with the operation of or provision of services to WSO2,
Inc., BY SELECTING "I ACCEPT" DURING INSTALLATION, YOU ARE ENROLLING YOUR DEVICE, AND THEREBY
AUTHORIZING SOR OR ITS AGENTS TO INSTALL, UPDATE AND REMOVE THE APPS FROM YOUR DEVICE AS DESCRIBED
IN THIS AGREEMENT. YOU ARE ALSO EXPLICITLY ACKNOWLEDGING AND AGREEING THAT (1) THIS IS A BINDING
CONTRACT AND (2) YOU HAVE READ AND AGREE TO THE TERMS OF THIS AGREEMENT.
IF YOU DO NOT ACCEPT THESE TERMS, DO NOT ENROLL YOUR DEVICE AND DO NOT PROCEED ANY FURTHER.
You agree that: (1) You understand and agree to be bound by the terms and conditions contained in this Agreement, and (2) You are at least 21 years old and have the legal capacity to enter into this Agreement as defined by the laws of Your jurisdiction. SoR shall have the right, without prior notice, to terminate or suspend (i) this Agreement, (ii) the enrollment of Your Device, or (iii) the functioning of the Apps in the event of a violation of this Agreement or the cessation of Your relationship with SoR (including termination of Your employment if You are an employee or expiration or termination of Your applicable franchise or supply agreement if You are a franchisee of or supplier to the WSO2 WSO2, Inc., system). SoR expressly reserves all rights not expressly granted herein.
You agree that: (1) You understand and agree to be bound by the terms and conditions contained in
this Agreement, and (2) You are at least 21 years old and have the legal capacity to enter into
this Agreement as defined by the laws of Your jurisdiction. SoR shall have the right, without
prior notice, to terminate or suspend (i) this Agreement, (ii) the enrollment of Your Device, or
(iii) the functioning of the Apps in the event of a violation of this Agreement or the cessation
of Your relationship with SoR (including termination of Your employment if You are an employee or
expiration or termination of Your applicable franchise or supply agreement if You are a franchisee
of or supplier to the WSO2 WSO2, Inc., system). SoR expressly reserves all rights not expressly
granted herein.
</Text>
</License>
<ProvisioningConfig>
<SharedWithAllTenants>false</SharedWithAllTenants>
<SharedWithAllTenants>true</SharedWithAllTenants>
</ProvisioningConfig>
<DataSource>
@ -314,13 +330,13 @@
<Description>Unlock the device</Description>
</Feature>
</Features>
<TaskConfiguration>
<TaskConfiguration> //Name needs to be decided <!--DeviceMonitoring-->
<Enable>true</Enable>
<Frequency>60000</Frequency>
<Frequency>60000</Frequency> //Name needs to be decided <!--Period-->
<Operations>
<Operation>
<Name>DEVICE_INFO</Name>
<RecurrentTimes>1</RecurrentTimes>
<RecurrentTimes>1</RecurrentTimes> //Name needs to be decided <!--PeriodFactor-->
</Operation>
<Operation>
<Name>APPLICATION_LIST</Name>

@ -0,0 +1,72 @@
#*
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.
*#
<EmailConfig>
<Subject>You have been invited to enroll your Android device in WSO2 IoT</Subject>
<Body>
<![CDATA[
<html>
<head>
<title>WSO2 IoT Server</title>
</head>
<body style="color: #666666; background-color:#cdcdcd; padding: 0px; margin: 0px;">
<div style="background-color:#cdcdcd; font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; padding: 20px 0px; margin: 0px;">
<div style="width: 86%; max-width: 650px; padding: 2%; background-color: #ffffff; margin: auto; border-radius: 14px;">
<div style="background-color: #49c8f5; line-height: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px 10px 0px 0px;">
<div style="display: inline-block; line-height: 0px;">
<img src="http://b.content.wso2.com/sites/all/2015-june-theme/navigation/wso2-nav-logo.png"
alt="WSO2" style="margin: 0px 20px 0px 25px; width: 100%; max-width: 251px;"/>
</div>
</div>
<div style="background-color: #ffffff; line-height: 170%; color: #666666; padding: 20px 25px;">
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px 20px;">
Hi,
</p>
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
You have been invited by $first-name to enrol your android device in WSO2 IoT Server.
Click <a href="$base-url-https/android-web-agent/enrollment">here</a> to begin device enrolment from
your Android device.</p>
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
Should you need assistance, please contact your administrator.
</p>
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 20px 0px 5px;">
Regards,
</p>
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
WSO2 IoT Administrator
</p>
</div>
<div style="background-color: #333333; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td style="padding: 0px 20px 0px 0px;"><img
src="http://b.content.wso2.com/newsletter/images/wso2-logo-cloud-footer.png" alt="WSO2"
style="margin: 15px 0px 15px 25px; width: 100%; max-width: 258px;"/></td>
</tr>
</table>
</div>
</div>
</div>
</body>
</html>
]]>
</Body>
</EmailConfig>

@ -11,6 +11,7 @@ org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../data
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.mobile.android_${feature.version}/database/,target:${installFolder}/../../database/,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/devicetypes/);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.mobile.android_${feature.version}/devicetypes/,target:${installFolder}/../../deployment/server/devicetypes/,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.mobile.android_${feature.version}/email/templates,target:${installFolder}/../../../repository/resources/email-templates,overwrite:true);\
instructions.unconfigure = \
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/webapps/mdm-android-agent.war);\
@ -26,7 +27,7 @@ org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../dep
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.date-range-picker);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.leaflet);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.operation-mod);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android.qr-modal);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:$${installFolder}/../../../repository/resources/email-templates/android-enrollment-invitation.vm);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../dbscripts/cdm/plugins/android);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../database/WSO2MobileAndroid_DB.h2.db);\

@ -1254,7 +1254,7 @@
<carbon.devicemgt.version.range>[2.0.0, 3.0.0)</carbon.devicemgt.version.range>
<!-- Carbon App Management -->
<carbon.appmgt.version>1.2.8-SNAPSHOT</carbon.appmgt.version>
<carbon.appmgt.version>1.2.9</carbon.appmgt.version>
<!-- Carbon Device Management Plugins -->
<carbon.devicemgt.plugins.version>3.0.4-SNAPSHOT</carbon.devicemgt.plugins.version>
@ -1268,7 +1268,7 @@
<!-- Carbon Identity -->
<carbon.identity.framework.version>5.6.89</carbon.identity.framework.version>
<identity.inbound.auth.oauth.version>5.2.33</identity.inbound.auth.oauth.version>
<carbon.identity.version.range>[5.2.2, 6.0.0)</carbon.identity.version.range>
<carbon.identity.version.range>[5.2.0, 6.0.0)</carbon.identity.version.range>
<!-- Carbon Multi-tenancy -->
<carbon.multitenancy.version>4.6.1</carbon.multitenancy.version>

Loading…
Cancel
Save