forked from community/device-mgt-plugins
Merge pull request #489 from menakaj/release-3.0.x
Adding new streams and gadgets for android sense.revert-dabc3590
commit
da3f350b01
@ -0,0 +1,18 @@
|
||||
@Plan:name('Android-Accelerometer-ExecutionPlan')
|
||||
|
||||
@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);
|
||||
|
||||
@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);
|
||||
|
||||
partition with (meta_deviceId of AccelerometerStream)
|
||||
begin
|
||||
from AccelerometerStream
|
||||
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
|
||||
insert into AccelerometerStatsStream;
|
||||
end;
|
@ -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_executionplan" version="1.0.0" type="event/execution-plan" serverRole="DataAnalyticsServer">
|
||||
<file>Android-Accelerometer-ExecutionPlan.siddhiql</file>
|
||||
</artifact>
|
||||
|
@ -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_stats_event_sink" version="1.0.0" type="analytics/eventstore" serverRole="DataAnalyticsServer">
|
||||
<file>org_wso2_iot_android_accelerometer_stats.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<EventStoreConfiguration>
|
||||
<TableSchema>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_owner</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_deviceId</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_timestamp</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>LONG</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>x</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>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>z</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>FLOAT</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>year</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>month</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>day</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>hour</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>minute</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
</TableSchema>
|
||||
<Source>
|
||||
<StreamId>org.wso2.iot.android.accelerometer.stats:1.0.0</StreamId>
|
||||
</Source>
|
||||
<MergeSchema>false</MergeSchema>
|
||||
<RecordStoreName>EVENT_STORE</RecordStoreName>
|
||||
</EventStoreConfiguration>
|
@ -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_stats_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.accelerometer.stats_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.accelerometer.stats",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "year",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "month",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "day",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "hour",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "minute",
|
||||
"type": "INT"
|
||||
}
|
||||
]
|
||||
}
|
@ -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_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.accelerometer_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.accelerometer",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<?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_ui_event_publisher" version="1.0.0" type="event/publisher"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.accelerometer.ui.publisher.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<eventPublisher name="org.wso2.iot.android.accelerometer.ui.publisher"
|
||||
processing="enable" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher">
|
||||
<from streamName="org.wso2.iot.android.accelerometer" version="1.0.0"/>
|
||||
<mapping customMapping="disable" type="wso2event"/>
|
||||
<to eventAdapterType="ui"/>
|
||||
</eventPublisher>
|
@ -0,0 +1 @@
|
||||
{"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"}}
|
@ -0,0 +1,35 @@
|
||||
#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;
|
||||
}
|
@ -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": "Accelerometer_X",
|
||||
"title": "Accelerometer X",
|
||||
"type": "gadget",
|
||||
"thumbnail": "gadget/Accelerometer_X/thumbnail.png",
|
||||
"data": {
|
||||
"url": "gadget/Accelerometer_X/gadget.xml"
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Module>
|
||||
<ModulePrefs title="Accelerometer X" 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 -->
|
||||
|
||||
<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>
|
||||
<!-- 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/number-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();
|
||||
|
||||
});
|
||||
});
|
@ -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/Accelerometer_X";
|
||||
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);
|
||||
}
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* 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 + '/number-chart/config.json').config;
|
||||
/*
|
||||
dynamic logic goes here
|
||||
*/
|
||||
return chartConf;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* validate the user inout for the chart configurationx
|
||||
* @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) {
|
||||
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.maxLength = _chartConfig.maxLength;
|
||||
conf.charts = [];
|
||||
conf.charts[0] = {
|
||||
type : "number",
|
||||
title : _chartConfig.title
|
||||
};
|
||||
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,286 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
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);
|
||||
|
||||
}
|
After Width: | Height: | Size: 13 KiB |
@ -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_x_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
|
||||
<file>Accelerometer_X</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1 @@
|
||||
{"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"}}
|
@ -0,0 +1,35 @@
|
||||
#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;
|
||||
}
|
@ -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": "ACCELEROMETER_Y",
|
||||
"title": "ACCELEROMETER Y",
|
||||
"type": "gadget",
|
||||
"thumbnail": "gadget/ACCELEROMETER_Y/thumbnail.png",
|
||||
"data": {
|
||||
"url": "gadget/ACCELEROMETER_Y/gadget.xml"
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Module>
|
||||
<ModulePrefs title="ACCELEROMETER Y" 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 -->
|
||||
|
||||
<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>
|
||||
<!-- 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/number-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();
|
||||
|
||||
});
|
||||
});
|
@ -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/ACCELEROMETER_Y";
|
||||
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);
|
||||
}
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* 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 + '/number-chart/config.json').config;
|
||||
/*
|
||||
dynamic logic goes here
|
||||
*/
|
||||
return chartConf;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* validate the user inout for the chart configurationx
|
||||
* @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) {
|
||||
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.maxLength = _chartConfig.maxLength;
|
||||
conf.charts = [];
|
||||
conf.charts[0] = {
|
||||
type : "number",
|
||||
title : _chartConfig.title
|
||||
};
|
||||
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,286 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
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);
|
||||
|
||||
}
|
After Width: | Height: | Size: 13 KiB |
@ -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_y_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
|
||||
<file>ACCELEROMETER_Y</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1 @@
|
||||
{"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"}}
|
@ -0,0 +1,35 @@
|
||||
#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;
|
||||
}
|
@ -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": "ACCELEROMETER_Z",
|
||||
"title": "ACCELEROMETER Z",
|
||||
"type": "gadget",
|
||||
"thumbnail": "gadget/ACCELEROMETER_Z/thumbnail.png",
|
||||
"data": {
|
||||
"url": "gadget/ACCELEROMETER_Z/gadget.xml"
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Module>
|
||||
<ModulePrefs title="ACCELEROMETER Z" 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 -->
|
||||
|
||||
<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>
|
||||
<!-- 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/number-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();
|
||||
|
||||
});
|
||||
});
|
@ -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/ACCELEROMETER_Z";
|
||||
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);
|
||||
}
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* 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 + '/number-chart/config.json').config;
|
||||
/*
|
||||
dynamic logic goes here
|
||||
*/
|
||||
return chartConf;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* validate the user inout for the chart configurationx
|
||||
* @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) {
|
||||
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.maxLength = _chartConfig.maxLength;
|
||||
conf.charts = [];
|
||||
conf.charts[0] = {
|
||||
type : "number",
|
||||
title : _chartConfig.title
|
||||
};
|
||||
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,286 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
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);
|
||||
|
||||
}
|
After Width: | Height: | Size: 13 KiB |
@ -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_z_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
|
||||
<file>ACCELEROMETER_Z</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,18 @@
|
||||
@Plan:name('Android-Gravity-ExecutionPlan')
|
||||
|
||||
@Plan:description('Process gravity changes.')
|
||||
|
||||
@Import('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.gravity.stats:1.0.0')
|
||||
define stream GravityStatsStream (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);
|
||||
|
||||
partition with (meta_deviceId of GravityStream)
|
||||
begin
|
||||
from GravityStream
|
||||
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
|
||||
insert into GravityStatsStream;
|
||||
end;
|
@ -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_gravity_executionplan" version="1.0.0" type="event/execution-plan" serverRole="DataAnalyticsServer">
|
||||
<file>Android-Gravity-ExecutionPlan.siddhiql</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1 @@
|
||||
{"provider-conf" : {"tableName" : "ORG_WSO2_IOT_ANDROID_GRAVITY_STATS", "query" : "", "limit" : "", "provider-name" : "batch"}, "chart-conf" : {"x" : "z", "title" : "GRAVITY", "maxLength" : "30", "gadget-name" : "GRAVITY", "chart-name" : "number-chart"}}
|
@ -0,0 +1,35 @@
|
||||
#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;
|
||||
}
|
@ -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": "GRAVITY",
|
||||
"title": "GRAVITY",
|
||||
"type": "gadget",
|
||||
"thumbnail": "gadget/GRAVITY/thumbnail.png",
|
||||
"data": {
|
||||
"url": "gadget/GRAVITY/gadget.xml"
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Module>
|
||||
<ModulePrefs title="GRAVITY" description="This is a template gadget">
|
||||
<Require feature="dynamic-height"/>
|
||||
<Require feature="wso2-gadgets-identity"/>
|
||||
</ModulePrefs>
|
||||
|
||||
<UserPref name="refreshInterval"
|
||||
display_name="Refresh Interval"
|
||||
default_value="1000000"/>
|
||||
|
||||
<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 -->
|
||||
|
||||
<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>
|
||||
<!-- provider libs -->
|
||||
|
||||
<!-- 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/gadget-util.js"></script>
|
||||
<script src="js/core/number-chart-api.js"></script>
|
||||
<script src="js/core/gadget-core.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="canvas"></div>
|
||||
</body>
|
||||
]]>
|
||||
</Content>
|
||||
</Module>
|
@ -0,0 +1,190 @@
|
||||
/*
|
||||
* 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 = 'batch';
|
||||
var TYPE = "type";
|
||||
var TABLE_NAME = "tableName";
|
||||
var HTTPS_TRANSPORT = "https";
|
||||
var CONTENT_TYPE_JSON = "application/json";
|
||||
var AUTHORIZATION_HEADER = "Authorization";
|
||||
var USER_TOKEN = "user";
|
||||
var TENANT_DOMAIN = "domain";
|
||||
var CONST_AT = "@";
|
||||
var USERNAME = "username";
|
||||
var HTTP_USER_NOT_AUTHENTICATED = 403;
|
||||
var JS_MAX_VALUE = "9007199254740992";
|
||||
var JS_MIN_VALUE = "-9007199254740992";
|
||||
|
||||
var typeMap = {
|
||||
"bool" : "string",
|
||||
"boolean" : "string",
|
||||
"string" : "string",
|
||||
"int" : "number",
|
||||
"integer" : "number",
|
||||
"long" : "number",
|
||||
"double" : "number",
|
||||
"float" : "number",
|
||||
"time": "time"
|
||||
};
|
||||
|
||||
var log = new Log();
|
||||
var carbon = require('carbon');
|
||||
var configs = require('/configs/designer.json');
|
||||
var utils = require('/modules/utils.js');
|
||||
var JSUtils = Packages.org.wso2.carbon.analytics.jsservice.Utils;
|
||||
var AnalyticsCachedJSServiceConnector = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector;
|
||||
var AnalyticsCache = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector.AnalyticsCache;
|
||||
var cacheTimeoutSeconds = 5;
|
||||
var loggedInUser = null;
|
||||
|
||||
if (configs.cacheTimeoutSeconds) {
|
||||
cacheTimeoutSeconds = parseInt(configs.cacheTimeoutSeconds);
|
||||
}
|
||||
var cacheSizeBytes = 1024 * 1024 * 1024; // 1GB
|
||||
if (configs.cacheSizeBytes) {
|
||||
cacheSizeBytes = parseInt(configs.cacheSizeBytes);
|
||||
}
|
||||
response.contentType = CONTENT_TYPE_JSON;
|
||||
|
||||
var authParam = request.getHeader(AUTHORIZATION_HEADER);
|
||||
if (authParam != null) {
|
||||
credentials = JSUtils.authenticate(authParam);
|
||||
loggedInUser = credentials[0];
|
||||
} else {
|
||||
var token = session.get(USER_TOKEN);
|
||||
if (token != null) {
|
||||
loggedInUser = token[USERNAME] + CONST_AT + token[TENANT_DOMAIN];
|
||||
} else {
|
||||
log.error("user is not authenticated!");
|
||||
response.status = HTTP_USER_NOT_AUTHENTICATED;
|
||||
print('{ "status": "Failed", "message": "User is not authenticated." }');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var cache = application.get("AnalyticsWebServiceCache");
|
||||
if (cache == null) {
|
||||
cache = new AnalyticsCache(cacheTimeoutSeconds, cacheSizeBytes);
|
||||
application.put("AnalyticsWebServiceCache", cache);
|
||||
}
|
||||
var connector = new AnalyticsCachedJSServiceConnector(cache);
|
||||
|
||||
/**
|
||||
* require the existing config.json and push any dynamic fields that needs to be populated in the UI
|
||||
*/
|
||||
getConfig = function() {
|
||||
var formConfig = require(PROVIDERS_LOCATION + '/' + PROVIDER_NAME + '/config.json');
|
||||
var tables;
|
||||
try {
|
||||
tables = JSON.parse(connector.getTableList(loggedInUser).getMessage());
|
||||
} catch (e) {
|
||||
log.error(e);
|
||||
}
|
||||
var configs = formConfig.config;
|
||||
configs.forEach(function(config) {
|
||||
if (config.fieldName === TABLE_NAME) {
|
||||
config.valueSet = tables;
|
||||
}
|
||||
});
|
||||
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 "PULL";
|
||||
}
|
||||
|
||||
/**
|
||||
* returns an array of column names & types
|
||||
* @param providerConfig
|
||||
*/
|
||||
getSchema = function(providerConfig) {
|
||||
var schema = [];
|
||||
var tableName = providerConfig["tableName"];
|
||||
var result = connector.getTableSchema(loggedInUser, tableName).getMessage();
|
||||
result = JSON.parse(result);
|
||||
|
||||
var columns = result.columns;
|
||||
Object.getOwnPropertyNames(columns).forEach(function(name, idx, array) {
|
||||
var type = "ordinal";
|
||||
if(columns[name]['type']) {
|
||||
type = columns[name]['type'];
|
||||
}
|
||||
schema.push({
|
||||
fieldName: name,
|
||||
fieldType: typeMap[type.toLowerCase()]
|
||||
});
|
||||
});
|
||||
// log.info(schema);
|
||||
return schema;
|
||||
};
|
||||
|
||||
/**
|
||||
* returns the actual data
|
||||
* @param providerConfig
|
||||
* @param limit
|
||||
*/
|
||||
getData = function(providerConfig, limit) {
|
||||
var tableName = providerConfig.tableName;
|
||||
var query = providerConfig.query;
|
||||
var limit = 100;
|
||||
if (providerConfig.limit) {
|
||||
limit = providerConfig.limit;
|
||||
}
|
||||
var result;
|
||||
//if there's a filter present, we should perform a Lucene search instead of reading the table
|
||||
if (query) {
|
||||
var filter = {
|
||||
"query": query,
|
||||
"start": 0,
|
||||
"count": limit
|
||||
};
|
||||
result = connector.search(loggedInUser, tableName, stringify(filter)).getMessage();
|
||||
} else {
|
||||
var from = JS_MIN_VALUE;
|
||||
var to = JS_MAX_VALUE;
|
||||
result = connector.getRecordsByRange(loggedInUser, tableName, from, to, 0, limit, null).getMessage();
|
||||
|
||||
}
|
||||
result = JSON.parse(result);
|
||||
var data = [];
|
||||
for (var i = 0; i < result.length; i++) {
|
||||
var values = result[i].values;
|
||||
data.push(values);
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
}());
|
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* 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 refreshInterval;
|
||||
var providerData;
|
||||
|
||||
var CHART_CONF = 'chart-conf';
|
||||
var PROVIDER_CONF = 'provider-conf';
|
||||
|
||||
var REFRESH_INTERVAL = 'refreshInterval';
|
||||
|
||||
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;
|
||||
}
|
||||
});
|
||||
|
||||
getProviderData();
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var getProviderData = function (){
|
||||
$.ajax({
|
||||
url: gadgetLocation + '/gadget-controller.jag?action=getData',
|
||||
method: "POST",
|
||||
data: JSON.stringify(conf),
|
||||
contentType: "application/json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
providerData = data;
|
||||
}
|
||||
});
|
||||
return providerData;
|
||||
};
|
||||
|
||||
|
||||
var drawGadget = function (){
|
||||
|
||||
draw('#canvas', conf[CHART_CONF], schema, providerData);
|
||||
setInterval(function() {
|
||||
draw('#canvas', conf[CHART_CONF], schema, getProviderData());
|
||||
},pref.getInt(REFRESH_INTERVAL));
|
||||
|
||||
};
|
||||
|
||||
getGadgetLocation(function (gadget_Location) {
|
||||
gadgetLocation = gadget_Location;
|
||||
init();
|
||||
drawGadget();
|
||||
|
||||
});
|
||||
});
|
@ -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/GRAVITY";
|
||||
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);
|
||||
}
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* 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 + '/number-chart/config.json').config;
|
||||
/*
|
||||
dynamic logic goes here
|
||||
*/
|
||||
return chartConf;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* validate the user inout for the chart configurationx
|
||||
* @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) {
|
||||
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.maxLength = _chartConfig.maxLength;
|
||||
conf.charts = [];
|
||||
conf.charts[0] = {
|
||||
type : "number",
|
||||
title : _chartConfig.title
|
||||
};
|
||||
return conf;
|
||||
};
|
||||
|
||||
|
||||
}());
|
After Width: | Height: | Size: 13 KiB |
@ -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_gravity_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
|
||||
<file>GRAVITY</file>
|
||||
</artifact>
|
||||
|
@ -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_gravity_stats_event_sink" version="1.0.0" type="analytics/eventstore" serverRole="DataAnalyticsServer">
|
||||
<file>org_wso2_iot_android_gravity_stats.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<EventStoreConfiguration>
|
||||
<TableSchema>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_owner</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_deviceId</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_timestamp</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>LONG</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>x</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>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>z</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>FLOAT</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>year</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>month</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>day</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>hour</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>minute</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
</TableSchema>
|
||||
<Source>
|
||||
<StreamId>org.wso2.iot.android.gravity.stats:1.0.0</StreamId>
|
||||
</Source>
|
||||
<MergeSchema>false</MergeSchema>
|
||||
<RecordStoreName>EVENT_STORE</RecordStoreName>
|
||||
</EventStoreConfiguration>
|
@ -0,0 +1,24 @@
|
||||
<?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_gravity_stats_streams" version="1.0.0" type="event/stream"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.gravity.stats_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.gravity.stats",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "year",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "month",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "day",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "hour",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "minute",
|
||||
"type": "INT"
|
||||
}
|
||||
]
|
||||
}
|
@ -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_gravity_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.gravity_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.gravity",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<?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_gravity_ui_event_publisher" version="1.0.0" type="event/publisher"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.gravity.ui.publisher.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<eventPublisher name="org.wso2.iot.android.gravity.ui.publisher"
|
||||
processing="enable" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher">
|
||||
<from streamName="org.wso2.iot.android.gravity" version="1.0.0"/>
|
||||
<mapping customMapping="disable" type="wso2event"/>
|
||||
<to eventAdapterType="ui"/>
|
||||
</eventPublisher>
|
@ -0,0 +1,18 @@
|
||||
@Plan:name('Android-Gyroscope-ExecutionPlan')
|
||||
|
||||
@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);
|
||||
|
||||
@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);
|
||||
|
||||
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
|
||||
insert into GyroscopeStatsStream;
|
||||
end;
|
@ -0,0 +1,24 @@
|
||||
<?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_gyroscope_executionplan" version="1.0.0" type="event/execution-plan"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>Android-Gyroscope-ExecutionPlan.siddhiql</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,24 @@
|
||||
<?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_gyroscope_stats_event_sink" version="1.0.0" type="analytics/eventstore"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org_wso2_iot_android_gyroscope_stats.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<EventStoreConfiguration>
|
||||
<TableSchema>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_owner</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_deviceId</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_timestamp</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>LONG</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>x</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>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>z</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>FLOAT</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>year</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>month</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>day</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>hour</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>minute</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
</TableSchema>
|
||||
<Source>
|
||||
<StreamId>org.wso2.iot.android.gyroscope.stats:1.0.0</StreamId>
|
||||
</Source>
|
||||
<MergeSchema>false</MergeSchema>
|
||||
<RecordStoreName>EVENT_STORE</RecordStoreName>
|
||||
</EventStoreConfiguration>
|
@ -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_gyroscope_stats_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.gyroscope.stats_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.gyroscope.stats",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "year",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "month",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "day",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "hour",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "minute",
|
||||
"type": "INT"
|
||||
}
|
||||
]
|
||||
}
|
@ -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_gyroscope_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.gyroscope_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.gyroscope",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<?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_gyroscope_ui_event_publisher" version="1.0.0" type="event/publisher"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.gyroscope.ui.publisher.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<eventPublisher name="org.wso2.iot.android.gyroscope.ui.publisher"
|
||||
processing="enable" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher">
|
||||
<from streamName="org.wso2.iot.android.gyroscope" version="1.0.0"/>
|
||||
<mapping customMapping="disable" type="wso2event"/>
|
||||
<to eventAdapterType="ui"/>
|
||||
</eventPublisher>
|
@ -0,0 +1,18 @@
|
||||
@Plan:name('Android-Light-ExecutionPlan')
|
||||
|
||||
@Plan:description('Process light changes.')
|
||||
|
||||
@Import('org.wso2.iot.android.light:1.0.0')
|
||||
define stream LightStream (meta_owner string, meta_deviceId string, meta_timestamp long, light float);
|
||||
|
||||
@Export('org.wso2.iot.android.light.stats:1.0.0')
|
||||
define stream LightStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, light float, year int,
|
||||
month int, day int, hour int, minute int);
|
||||
|
||||
partition with (meta_deviceId of LightStream)
|
||||
begin
|
||||
from LightStream
|
||||
select meta_owner, meta_deviceId, meta_timestamp, light, 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 LightStatsStream;
|
||||
end;
|
@ -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_light_executionplan" version="1.0.0" type="event/execution-plan" serverRole="DataAnalyticsServer">
|
||||
<file>Android-Light-ExecutionPlan.siddhiql</file>
|
||||
</artifact>
|
||||
|
@ -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_light_stats_event_sink" version="1.0.0" type="analytics/eventstore" serverRole="DataAnalyticsServer">
|
||||
<file>org_wso2_iot_android_light_stats.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<EventStoreConfiguration>
|
||||
<TableSchema>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_owner</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_deviceId</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_timestamp</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>LONG</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>light</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>FLOAT</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>year</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>month</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>day</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>hour</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>minute</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
</TableSchema>
|
||||
<Source>
|
||||
<StreamId>org.wso2.iot.android.light.stats:1.0.0</StreamId>
|
||||
</Source>
|
||||
<MergeSchema>false</MergeSchema>
|
||||
<RecordStoreName>EVENT_STORE</RecordStoreName>
|
||||
</EventStoreConfiguration>
|
@ -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_light_stats_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.light.stats_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.light.stats",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "light",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "year",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "month",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "day",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "hour",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "minute",
|
||||
"type": "INT"
|
||||
}
|
||||
]
|
||||
}
|
@ -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_light_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.light_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.light",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "light",
|
||||
"type": "FLOAT"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<?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_light_ui_event_publisher" version="1.0.0" type="event/publisher"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.light.ui.publisher.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<eventPublisher name="org.wso2.iot.android.light.ui.publisher"
|
||||
processing="enable" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher">
|
||||
<from streamName="org.wso2.iot.android.light" version="1.0.0"/>
|
||||
<mapping customMapping="disable" type="wso2event"/>
|
||||
<to eventAdapterType="ui"/>
|
||||
</eventPublisher>
|
@ -0,0 +1,18 @@
|
||||
@Plan:name('Android-Magnetic-ExecutionPlan')
|
||||
|
||||
@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);
|
||||
|
||||
@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);
|
||||
|
||||
partition with (meta_deviceId of MagneticStream)
|
||||
begin
|
||||
from MagneticStream
|
||||
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
|
||||
insert into MagneticStatsStream;
|
||||
end;
|
@ -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_magnetic_executionplan" version="1.0.0" type="event/execution-plan" serverRole="DataAnalyticsServer">
|
||||
<file>Android-Magnetic-ExecutionPlan.siddhiql</file>
|
||||
</artifact>
|
||||
|
@ -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_magnetic_stats_event_sink" version="1.0.0" type="analytics/eventstore" serverRole="DataAnalyticsServer">
|
||||
<file>org_wso2_iot_android_magnetic_stats.xml</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<EventStoreConfiguration>
|
||||
<TableSchema>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_owner</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_deviceId</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>STRING</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>meta_timestamp</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>LONG</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>x</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>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>z</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>FLOAT</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>year</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>month</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>day</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>hour</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
<ColumnDefinition>
|
||||
<Name>minute</Name>
|
||||
<IsFacet>false</IsFacet>
|
||||
<EnableIndexing>false</EnableIndexing>
|
||||
<IsPrimaryKey>false</IsPrimaryKey>
|
||||
<EnableScoreParam>false</EnableScoreParam>
|
||||
<Type>INTEGER</Type>
|
||||
</ColumnDefinition>
|
||||
</TableSchema>
|
||||
<Source>
|
||||
<StreamId>org.wso2.iot.android.magnetic.stats:1.0.0</StreamId>
|
||||
</Source>
|
||||
<MergeSchema>false</MergeSchema>
|
||||
<RecordStoreName>EVENT_STORE</RecordStoreName>
|
||||
</EventStoreConfiguration>
|
@ -0,0 +1,24 @@
|
||||
<?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_magnetic_stats_streams" version="1.0.0" type="event/stream"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.magnetic.stats_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.magnetic.stats",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "year",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "month",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "day",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "hour",
|
||||
"type": "INT"
|
||||
},
|
||||
{
|
||||
"name": "minute",
|
||||
"type": "INT"
|
||||
}
|
||||
]
|
||||
}
|
@ -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_magnetic_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.magnetic_1.0.0.json</file>
|
||||
</artifact>
|
||||
|
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "org.wso2.iot.android.magnetic",
|
||||
"version": "1.0.0",
|
||||
"nickName": "",
|
||||
"description": "",
|
||||
"metaData": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "deviceId",
|
||||
"type": "STRING"
|
||||
},
|
||||
{
|
||||
"name": "timestamp",
|
||||
"type": "LONG"
|
||||
}
|
||||
],
|
||||
"payloadData": [
|
||||
{
|
||||
"name": "x",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "FLOAT"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "FLOAT"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<?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_magnetic_ui_event_publisher" version="1.0.0" type="event/publisher"
|
||||
serverRole="DataAnalyticsServer">
|
||||
<file>org.wso2.iot.android.magnetic.ui.publisher.xml</file>
|
||||
</artifact>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue