diff --git a/modules/samples/watertank/component/analytics/build.xml b/modules/samples/watertank/component/analytics/build.xml
index 3464a310..81e74d0a 100644
--- a/modules/samples/watertank/component/analytics/build.xml
+++ b/modules/samples/watertank/component/analytics/build.xml
@@ -43,4 +43,3 @@
-
diff --git a/modules/samples/watertank/component/analytics/pom.xml b/modules/samples/watertank/component/analytics/pom.xml
index bf13fe6f..704a7513 100644
--- a/modules/samples/watertank/component/analytics/pom.xml
+++ b/modules/samples/watertank/component/analytics/pom.xml
@@ -15,6 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/-->
+
@@ -23,12 +24,14 @@
1.0-SNAPSHOT
../pom.xml
+
4.0.0
${groupId}.watertank.analytics
1.0-SNAPSHOT
pom
${groupId}.watertank.analytics
http://wso2.org
+
@@ -83,4 +86,4 @@
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/analytics/src/assembly/src.xml b/modules/samples/watertank/component/analytics/src/assembly/src.xml
index b7735b0b..1d948164 100644
--- a/modules/samples/watertank/component/analytics/src/assembly/src.xml
+++ b/modules/samples/watertank/component/analytics/src/assembly/src.xml
@@ -33,4 +33,4 @@
true
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_publisher/relay_publisher.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_publisher/relay_publisher.xml
index d4c6e704..182d0796 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_publisher/relay_publisher.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_publisher/relay_publisher.xml
@@ -23,4 +23,3 @@
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_receiver/artifact.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_receiver/artifact.xml
index 98cf9a57..43770b81 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_receiver/artifact.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_receiver/artifact.xml
@@ -2,19 +2,19 @@
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_store/org_wso2_iot_devices_relay.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_store/org_wso2_iot_devices_relay.xml
index 74f2f7c3..2fd5fcf5 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_store/org_wso2_iot_devices_relay.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_store/org_wso2_iot_devices_relay.xml
@@ -59,4 +59,4 @@
BOOLEAN
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/artifact.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/artifact.xml
index 389fd6b3..8d3210bd 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/artifact.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/artifact.xml
@@ -20,4 +20,3 @@
org.wso2.iot.devices.relay_1.0.0.json
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/org.wso2.iot.devices.relay_1.0.0.json b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/org.wso2.iot.devices.relay_1.0.0.json
index 9e6649ca..aef0e923 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/org.wso2.iot.devices.relay_1.0.0.json
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/relay_sensor/relay_stream/org.wso2.iot.devices.relay_1.0.0.json
@@ -28,6 +28,3 @@
}
]
}
-
-
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_store/org_wso2_iot_devices_waterlevel.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_store/org_wso2_iot_devices_waterlevel.xml
index f413f99b..bcb2eb15 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_store/org_wso2_iot_devices_waterlevel.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_store/org_wso2_iot_devices_waterlevel.xml
@@ -59,4 +59,4 @@
FLOAT
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/artifact.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/artifact.xml
index f07f6722..827d0698 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/artifact.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/artifact.xml
@@ -20,4 +20,3 @@
org.wso2.iot.devices.waterlevel_1.0.0.json
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/org.wso2.iot.devices.waterlevel_1.0.0.json b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/org.wso2.iot.devices.waterlevel_1.0.0.json
index 954e05b8..b971ca9e 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/org.wso2.iot.devices.waterlevel_1.0.0.json
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_sensor/waterlevel_stream/org.wso2.iot.devices.waterlevel_1.0.0.json
@@ -28,6 +28,3 @@
}
]
}
-
-
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_execution_pain/org_wso2_iot_devices_waterlevel_summary.siddhiql b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_execution_pain/org_wso2_iot_devices_waterlevel_summary.siddhiql
index 71926d7b..c28448b0 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_execution_pain/org_wso2_iot_devices_waterlevel_summary.siddhiql
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_execution_pain/org_wso2_iot_devices_waterlevel_summary.siddhiql
@@ -15,4 +15,4 @@ define stream waterLevelOutputMapper (meta_owner string, meta_deviceType string,
from waterLevelInputMapper#window.timeBatch(1 min)
select meta_owner, meta_deviceType, meta_deviceId, meta_time, waterlevel, 0.0 as waterLevelMargin, avg(waterlevel) as averageValue
group by meta_owner, meta_deviceType, meta_deviceId, meta_time
-insert into waterLevelOutputMapper;
\ No newline at end of file
+insert into waterLevelOutputMapper;
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_store/org_wso2_iot_devices_waterlevel_summary.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_store/org_wso2_iot_devices_waterlevel_summary.xml
index c2d3ba3b..8af30843 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_store/org_wso2_iot_devices_waterlevel_summary.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_store/org_wso2_iot_devices_waterlevel_summary.xml
@@ -74,4 +74,4 @@
false
EVENT_STORE
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_stream/artifact.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_stream/artifact.xml
index 156063eb..0f6ce9a3 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_stream/artifact.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/waterlevel_summary/waterlevel_summary_stream/artifact.xml
@@ -20,4 +20,3 @@
org.wso2.iot.devices.waterlevel.stats_1.0.0.json
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/artifact.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/artifact.xml
index 8f56540a..bf883c9c 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/artifact.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/artifact.xml
@@ -20,4 +20,3 @@
watertank_execution.siddhiql
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/watertank_execution.siddhiql b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/watertank_execution.siddhiql
index bc39749a..b54f63f6 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/watertank_execution.siddhiql
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_execution/watertank_execution.siddhiql
@@ -21,4 +21,4 @@ insert into relay;
from watertank
select meta_owner, 'watertank' as meta_deviceType, meta_deviceId, time:timestampInMilliseconds() as meta_time, waterlevel
-insert into waterlevel;
\ No newline at end of file
+insert into waterlevel;
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_publisher/watertank_publisher.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_publisher/watertank_publisher.xml
index 45e15756..f0c4a70f 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_publisher/watertank_publisher.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_publisher/watertank_publisher.xml
@@ -23,4 +23,3 @@
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/artifact.xml b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/artifact.xml
index cb98d649..7440e6db 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/artifact.xml
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/artifact.xml
@@ -20,4 +20,3 @@
org.wso2.iot.watertank_1.0.0.json
-
diff --git a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/org.wso2.iot.watertank_1.0.0.json b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/org.wso2.iot.watertank_1.0.0.json
index dd4adb7c..8b9a848e 100644
--- a/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/org.wso2.iot.watertank_1.0.0.json
+++ b/modules/samples/watertank/component/analytics/src/main/resources/carbonapps/watertank/watertank_stream/org.wso2.iot.watertank_1.0.0.json
@@ -23,4 +23,4 @@
"type": "FLOAT"
}
]
-}
\ No newline at end of file
+}
diff --git a/modules/samples/watertank/component/api/pom.xml b/modules/samples/watertank/component/api/pom.xml
index c3d56db6..2750292d 100644
--- a/modules/samples/watertank/component/api/pom.xml
+++ b/modules/samples/watertank/component/api/pom.xml
@@ -165,4 +165,4 @@
provided
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeService.java b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeService.java
index 3ad5df0b..1958ef95 100644
--- a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeService.java
+++ b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeService.java
@@ -38,7 +38,6 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-
/**
* This is the controller API which is used to control agent side functionality
*/
@@ -118,4 +117,5 @@ interface DeviceTypeService {
@Produces("application/zip")
@Permission(scope = "watertank_user", permissions = {"/permission/admin/device-mgt/download"})
Response downloadSketch(@QueryParam("deviceName") String deviceName, @QueryParam("sketchType") String sketchType);
-}
\ No newline at end of file
+
+}
diff --git a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeServiceImpl.java b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeServiceImpl.java
index 2ac6244a..21954a8c 100644
--- a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeServiceImpl.java
+++ b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/DeviceTypeServiceImpl.java
@@ -69,11 +69,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-
/**
- * This is the API which is used to control and manage device type functionality
+ * This is the API which is used to control and manage device type functionality.
*/
@SuppressWarnings("NonJaxWsWebServices")
@API(name = "watertank", version = "1.0.0", context = "/watertank", tags = "watertank")
@@ -83,7 +81,6 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
private static final String KEY_TYPE = "PRODUCTION";
private static Log log = LogFactory.getLog(DeviceTypeService.class);
private static ApiApplicationKey apiApplicationKey;
- private ConcurrentHashMap deviceToIpMap = new ConcurrentHashMap<>();
private static String shortUUID() {
UUID uuid = UUID.randomUUID();
@@ -92,26 +89,28 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
}
/**
- * @param agentInfo device owner,id
- * @return true if device instance is added to map
+ * Validate registration information.
+ *
+ * @param agentInfo device owner,id.
+ * @return true if device instance is added to map.
*/
@Path("device/register")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response registerDevice(final DeviceJSON agentInfo) {
- String deviceId = agentInfo.deviceId;
if ((agentInfo.deviceId != null) && (agentInfo.owner != null)) {
- deviceToIpMap.put(deviceId, agentInfo);
return Response.status(Response.Status.OK).build();
}
return Response.status(Response.Status.NOT_ACCEPTABLE).build();
}
/**
- * @param deviceId unique identifier for given device type
- * @param onLevel level to turn on the relay
- * @param offLevel level to turn off the relay
- * @param sensorHeight height to water level sensor from bottom of the tank
+ * Update watertank configurations.
+ *
+ * @param deviceId unique identifier for given device type.
+ * @param onLevel level to turn on the relay.
+ * @param offLevel level to turn off the relay.
+ * @param sensorHeight height to water level sensor from bottom of the tank.
*/
@Path("device/{deviceId}/change-levels")
@POST
@@ -125,7 +124,7 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
try {
if (!APIUtil.getDeviceAccessAuthorizationService()
.isUserAuthorized(new DeviceIdentifier(deviceId, DeviceTypeConstants.DEVICE_TYPE))) {
- return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build();
+ return Response.status(Response.Status.UNAUTHORIZED).build();
}
String configs = onLevel + "," + offLevel + "," + sensorHeight;
@@ -137,19 +136,19 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
dynamicProperties, configs);
return Response.ok().build();
} catch (DeviceAccessAuthorizationException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
+ log.error("Unable to update configs", e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
}
/**
- * Retrieve Sensor data for the given time period
+ * Retrieve Sensor data for the given time period.
*
- * @param deviceId unique identifier for given device type instance
- * @param sensorName name of the sensor
- * @param from starting time
- * @param to ending time
- * @return response with List object which includes sensor data which is requested
+ * @param deviceId unique identifier for given device type instance.
+ * @param sensorName name of the sensor.
+ * @param from starting time.
+ * @param to ending time.
+ * @return response with List object which includes sensor data which is requested.
*/
@Path("device/stats/{deviceId}/sensors/{sensorName}")
@GET
@@ -170,33 +169,30 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
sensorTableName = DeviceTypeConstants.WATERLEVEL_EVENT_TABLE;
break;
default:
- return Response.status(Response.Status.BAD_REQUEST).entity("Invalid event stream").build();
+ return Response.status(Response.Status.BAD_REQUEST).entity("Invalid event stream name").build();
}
try {
- if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(new DeviceIdentifier(deviceId,
- DeviceTypeConstants.DEVICE_TYPE))) {
- return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build();
+ if (!APIUtil.getDeviceAccessAuthorizationService()
+ .isUserAuthorized(new DeviceIdentifier(deviceId, DeviceTypeConstants.DEVICE_TYPE))) {
+ return Response.status(Response.Status.UNAUTHORIZED).build();
}
List sortByFields = new ArrayList<>();
SortByField sortByField = new SortByField("time", SORT.ASC, false);
sortByFields.add(sortByField);
List sensorRecords = APIUtil.getAllEventsForDevice(sensorTableName, query, sortByFields);
- return Response.status(Response.Status.OK.getStatusCode()).entity(sensorRecords).build();
- } catch (AnalyticsException e) {
+ return Response.status(Response.Status.OK).entity(sensorRecords).build();
+ } catch (AnalyticsException | DeviceAccessAuthorizationException e) {
String errorMsg = "Error on retrieving stats on table " + sensorTableName + " with query " + query;
log.error(errorMsg);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).entity(errorMsg).build();
- } catch (DeviceAccessAuthorizationException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorMsg).build();
}
}
/**
- * Remove device type instance using device id
+ * Remove device type instance using device id.
*
- * @param deviceId unique identifier for given device type instance
+ * @param deviceId unique identifier for given device type instance.
*/
@Path("/device/{deviceId}")
@DELETE
@@ -206,29 +202,26 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
deviceIdentifier.setId(deviceId);
deviceIdentifier.setType(DeviceTypeConstants.DEVICE_TYPE);
if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(deviceIdentifier)) {
- return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build();
+ return Response.status(Response.Status.UNAUTHORIZED).build();
}
boolean removed = APIUtil.getDeviceManagementService().disenrollDevice(
deviceIdentifier);
if (removed) {
return Response.ok().build();
} else {
- return Response.status(Response.Status.NOT_ACCEPTABLE.getStatusCode()).build();
+ return Response.status(Response.Status.NOT_ACCEPTABLE).build();
}
- } catch (DeviceManagementException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
- } catch (DeviceAccessAuthorizationException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
+ } catch (DeviceManagementException | DeviceAccessAuthorizationException e) {
+ log.error("Unable to remove the device", e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
}
/**
- * Update device instance name
+ * Update device instance name.
*
- * @param deviceId unique identifier for given device type instance
- * @param name new name for the device type instance
+ * @param deviceId unique identifier for given device type instance.
+ * @param name new name for the device type instance.
*/
@Path("/device/{deviceId}")
@PUT
@@ -238,7 +231,7 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
deviceIdentifier.setId(deviceId);
deviceIdentifier.setType(DeviceTypeConstants.DEVICE_TYPE);
if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(deviceIdentifier)) {
- return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build();
+ return Response.status(Response.Status.UNAUTHORIZED).build();
}
Device device = APIUtil.getDeviceManagementService().getDevice(deviceIdentifier);
device.setDeviceIdentifier(deviceId);
@@ -249,22 +242,19 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
if (updated) {
return Response.ok().build();
} else {
- return Response.status(Response.Status.NOT_ACCEPTABLE.getStatusCode()).build();
+ return Response.status(Response.Status.NOT_ACCEPTABLE).build();
}
- } catch (DeviceManagementException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
- } catch (DeviceAccessAuthorizationException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
+ } catch (DeviceManagementException | DeviceAccessAuthorizationException e) {
+ log.error("Unable to update the device", e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
}
/**
- * To get device information
+ * To get device information.
*
- * @param deviceId unique identifier for given device type instance
- * @return
+ * @param deviceId unique identifier for given device type instance.
+ * @return device object.
*/
@Path("/device/{deviceId}")
@GET
@@ -276,23 +266,20 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
deviceIdentifier.setId(deviceId);
deviceIdentifier.setType(DeviceTypeConstants.DEVICE_TYPE);
if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(deviceIdentifier)) {
- return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build();
+ return Response.status(Response.Status.UNAUTHORIZED).build();
}
Device device = APIUtil.getDeviceManagementService().getDevice(deviceIdentifier);
return Response.ok().entity(device).build();
- } catch (DeviceManagementException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
- } catch (DeviceAccessAuthorizationException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
+ } catch (DeviceManagementException | DeviceAccessAuthorizationException e) {
+ log.error("Unable to get the device", e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
}
/**
- * Get all device type instance which belongs to user
+ * Get all device type instance which belongs to user.
*
- * @return Array of devices which includes device's information
+ * @return Array of devices which includes device's information.
*/
@Path("/devices")
@GET
@@ -302,27 +289,27 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
try {
List userDevices =
APIUtil.getDeviceManagementService().getDevicesOfUser(APIUtil.getAuthenticatedUser());
- ArrayList userDevicesforwatertank = new ArrayList<>();
+ ArrayList waterTankDevices = new ArrayList<>();
for (Device device : userDevices) {
if (device.getType().equals(DeviceTypeConstants.DEVICE_TYPE) &&
device.getEnrolmentInfo().getStatus().equals(EnrolmentInfo.Status.ACTIVE)) {
- userDevicesforwatertank.add(device);
+ waterTankDevices.add(device);
}
}
- Device[] devices = userDevicesforwatertank.toArray(new Device[]{});
+ Device[] devices = waterTankDevices.toArray(new Device[]{});
return Response.ok().entity(devices).build();
} catch (DeviceManagementException e) {
- log.error(e.getErrorMessage(), e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
+ log.error("Unable to get all devices", e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
}
/**
- * To download device type agent source code as zip file
+ * To download device type agent source code as zip file.
*
- * @param deviceName name for the device type instance
- * @param sketchType folder name where device type agent was installed into server
- * @return Agent source code as zip file
+ * @param deviceName name for the device type instance.
+ * @param sketchType folder name where device type agent was installed into server.
+ * @return Agent source code as zip file.
*/
@Path("/device/download")
@GET
@@ -331,70 +318,65 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
@QueryParam("sketchType") String sketchType) {
try {
ZipArchive zipFile = createDownloadFile(APIUtil.getAuthenticatedUser(), deviceName, sketchType);
+ zipFile.getZipFile().delete();
Response.ResponseBuilder response = Response.ok(FileUtils.readFileToByteArray(zipFile.getZipFile()));
response.status(Response.Status.OK);
response.type("application/zip");
response.header("Content-Disposition", "attachment; filename=\"" + zipFile.getFileName() + "\"");
- Response resp = response.build();
- zipFile.getZipFile().delete();
- return resp;
+ return response.build();
} catch (IllegalArgumentException ex) {
- return Response.status(400).entity(ex.getMessage()).build();//bad request
- } catch (DeviceManagementException ex) {
- log.error(ex.getMessage(), ex);
- return Response.status(500).entity(ex.getMessage()).build();
- } catch (JWTClientException ex) {
- log.error(ex.getMessage(), ex);
- return Response.status(500).entity(ex.getMessage()).build();
- } catch (APIManagerException ex) {
- log.error(ex.getMessage(), ex);
- return Response.status(500).entity(ex.getMessage()).build();
- } catch (IOException ex) {
- log.error(ex.getMessage(), ex);
- return Response.status(500).entity(ex.getMessage()).build();
- } catch (UserStoreException ex) {
- log.error(ex.getMessage(), ex);
- return Response.status(500).entity(ex.getMessage()).build();
+ return Response.status(Response.Status.BAD_REQUEST).entity(ex.getMessage()).build();//bad request
+ } catch (DeviceManagementException | JWTClientException | APIManagerException | IOException
+ | UserStoreException ex) {
+ log.error("Unable to download sketch", ex);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build();
}
}
/**
- * Register device into device management service
+ * Register device into device management service.
*
- * @param deviceId unique identifier for given device type instance
- * @param name name for the device type instance
- * @return check whether device is installed into cdmf
+ * @param deviceId unique identifier for given device type instance.
+ * @param name name for the device type instance.
+ * @return whether device is installed into cdmf or not.
*/
- private boolean register(String deviceId, String name) {
- try {
- DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
- deviceIdentifier.setId(deviceId);
- deviceIdentifier.setType(DeviceTypeConstants.DEVICE_TYPE);
- if (APIUtil.getDeviceManagementService().isEnrolled(deviceIdentifier)) {
- return false;
- }
- Device device = new Device();
- device.setDeviceIdentifier(deviceId);
- EnrolmentInfo enrolmentInfo = new EnrolmentInfo();
- enrolmentInfo.setDateOfEnrolment(new Date().getTime());
- enrolmentInfo.setDateOfLastUpdate(new Date().getTime());
- enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE);
- enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD);
- device.setName(name);
- device.setType(DeviceTypeConstants.DEVICE_TYPE);
- enrolmentInfo.setOwner(APIUtil.getAuthenticatedUser());
- device.setEnrolmentInfo(enrolmentInfo);
- boolean added = APIUtil.getDeviceManagementService().enrollDevice(device);
- if (added) {
- APIUtil.registerApiAccessRoles(APIUtil.getAuthenticatedUser());
- }
- return added;
- } catch (DeviceManagementException e) {
- log.error(e.getMessage(), e);
+ private boolean register(String deviceId, String name) throws DeviceManagementException {
+ DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
+ deviceIdentifier.setId(deviceId);
+ deviceIdentifier.setType(DeviceTypeConstants.DEVICE_TYPE);
+ if (APIUtil.getDeviceManagementService().isEnrolled(deviceIdentifier)) {
return false;
}
+ Device device = new Device();
+ device.setDeviceIdentifier(deviceId);
+ EnrolmentInfo enrolmentInfo = new EnrolmentInfo();
+ enrolmentInfo.setDateOfEnrolment(new Date().getTime());
+ enrolmentInfo.setDateOfLastUpdate(new Date().getTime());
+ enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE);
+ enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD);
+ device.setName(name);
+ device.setType(DeviceTypeConstants.DEVICE_TYPE);
+ enrolmentInfo.setOwner(APIUtil.getAuthenticatedUser());
+ device.setEnrolmentInfo(enrolmentInfo);
+ boolean added = APIUtil.getDeviceManagementService().enrollDevice(device);
+ if (added) {
+ APIUtil.registerApiAccessRoles(APIUtil.getAuthenticatedUser());
+ }
+ return added;
}
+ /**
+ * Generates zip archive with the device agent.
+ *
+ * @param owner of the device.
+ * @param deviceName given to the device.
+ * @param sketchType of the device.
+ * @return zip archive to download.
+ * @throws DeviceManagementException
+ * @throws JWTClientException
+ * @throws APIManagerException
+ * @throws UserStoreException
+ */
private ZipArchive createDownloadFile(String owner, String deviceName, String sketchType)
throws DeviceManagementException, JWTClientException, APIManagerException,
UserStoreException {
@@ -412,8 +394,9 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
JWTClient jwtClient = APIUtil.getJWTClientManagerService().getJWTClient();
String scopes = "device_type_" + DeviceTypeConstants.DEVICE_TYPE + " device_" + deviceId;
AccessTokenInfo accessTokenInfo = jwtClient.getAccessToken(apiApplicationKey.getConsumerKey(),
- apiApplicationKey.getConsumerSecret(), owner + "@" + APIUtil.getAuthenticatedUserTenantDomain(), scopes);
-
+ apiApplicationKey.getConsumerSecret(),
+ owner + "@" + APIUtil.getAuthenticatedUserTenantDomain(),
+ scopes);
//create token
String accessToken = accessTokenInfo.getAccessToken();
String refreshToken = accessTokenInfo.getRefreshToken();
@@ -423,9 +406,8 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
throw new DeviceManagementException(msg);
}
ZipUtil ziputil = new ZipUtil();
- ZipArchive zipFile = ziputil.createZipFile(owner, APIUtil.getTenantDomainOftheUser(), sketchType,
- deviceId, deviceName, accessToken, refreshToken);
- return zipFile;
+ return ziputil.createZipFile(owner, APIUtil.getTenantDomainOftheUser(), sketchType,
+ deviceId, deviceName, accessToken, refreshToken);
}
-}
+}
diff --git a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/DeviceJSON.java b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/DeviceJSON.java
index 74395100..55a3a237 100644
--- a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/DeviceJSON.java
+++ b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/DeviceJSON.java
@@ -19,6 +19,7 @@
package org.homeautomation.watertank.api.dto;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@@ -28,10 +29,12 @@ import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@JsonIgnoreProperties(ignoreUnknown = true)
public class DeviceJSON {
+
@XmlElement(required = true)
public String owner;
@XmlElement(required = true)
public String deviceId;
@XmlElement(required = true)
public Float sensorValue;
+
}
diff --git a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/SensorRecord.java b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/SensorRecord.java
index c4aa657d..7e0075a4 100644
--- a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/SensorRecord.java
+++ b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/dto/SensorRecord.java
@@ -38,14 +38,14 @@ public class SensorRecord {
private Map values;
/**
- * Unique identifier for each recode
+ * Unique identifier for each recode.
*/
@XmlElement(required = false, name = "id")
private String id;
/**
* Gets the values.
- * @return the values
+ * @return the values.
*/
public Map getValues() {
return values;
@@ -53,23 +53,23 @@ public class SensorRecord {
/**
* Sets the values.
- * @param values
+ * @param values of the sensor readings.
*/
public void setValues(Map values) {
this.values = values;
}
/**
- * Gets the id.
- * @return the id
+ * Gets the sensor id.
+ * @return the sensor id.
*/
public String getId() {
return id;
}
/**
- * Sets the id.
- * @param id set unique identifier
+ * Sets sensor unique identifier.
+ * @param id of the sensor.
*/
public void setId(String id) {
this.id = id;
@@ -77,12 +77,11 @@ public class SensorRecord {
@Override
public String toString() {
- List valueList = new ArrayList();
+ List valueList = new ArrayList<>();
for (Map.Entry entry : values.entrySet()) {
valueList.add(entry.getKey() + ":" + entry.getValue());
}
return valueList.toString();
-
}
}
diff --git a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/exception/DeviceTypeException.java b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/exception/DeviceTypeException.java
index c4d4f3d8..c452dd75 100644
--- a/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/exception/DeviceTypeException.java
+++ b/modules/samples/watertank/component/api/src/main/java/org/homeautomation/watertank/api/exception/DeviceTypeException.java
@@ -1,23 +1,26 @@
/*
* 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
+ * 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
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
package org.homeautomation.watertank.api.exception;
+/**
+ * Wraps device type specific exceptions
+ */
public class DeviceTypeException extends Exception {
private static final long serialVersionUID = 2736466563251105441L;
@@ -54,4 +57,5 @@ public class DeviceTypeException extends Exception {
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
+
}
diff --git a/modules/samples/watertank/component/api/src/main/webapp/META-INF/permissions.xml b/modules/samples/watertank/component/api/src/main/webapp/META-INF/permissions.xml
index a1d3123f..665aadfb 100644
--- a/modules/samples/watertank/component/api/src/main/webapp/META-INF/permissions.xml
+++ b/modules/samples/watertank/component/api/src/main/webapp/META-INF/permissions.xml
@@ -84,4 +84,4 @@
GET
watertank_device
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/api/src/main/webapp/META-INF/webapp-classloading.xml b/modules/samples/watertank/component/api/src/main/webapp/META-INF/webapp-classloading.xml
index fa446191..41e48ccb 100644
--- a/modules/samples/watertank/component/api/src/main/webapp/META-INF/webapp-classloading.xml
+++ b/modules/samples/watertank/component/api/src/main/webapp/META-INF/webapp-classloading.xml
@@ -17,7 +17,8 @@
-->
@@ -25,9 +26,9 @@
false
CXF,Carbon
diff --git a/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml b/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml
index 5a222d12..9c7fa85c 100644
--- a/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml
+++ b/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml
@@ -33,4 +33,4 @@
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/web.xml b/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/web.xml
index 612804f2..848017d2 100644
--- a/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/web.xml
+++ b/modules/samples/watertank/component/api/src/main/webapp/WEB-INF/web.xml
@@ -1,9 +1,28 @@
+
+
+
WSO2 IoT Server
WSO2 IoT Server
@@ -43,4 +62,4 @@
admin
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/plugin/pom.xml b/modules/samples/watertank/component/plugin/pom.xml
index 0f2d1a08..a9659abe 100644
--- a/modules/samples/watertank/component/plugin/pom.xml
+++ b/modules/samples/watertank/component/plugin/pom.xml
@@ -130,4 +130,4 @@
org.wso2.carbon.event.output.adapter.core
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/constants/DeviceTypeConstants.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/constants/DeviceTypeConstants.java
index 79ca70e0..f2bb8e0d 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/constants/DeviceTypeConstants.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/constants/DeviceTypeConstants.java
@@ -21,12 +21,14 @@ package org.homeautomation.watertank.plugin.constants;
import org.wso2.carbon.utils.CarbonUtils;
import java.io.File;
+/**
+ * Device type specific constants.
+ */
public class DeviceTypeConstants {
+
public final static String DEVICE_TYPE = "watertank";
public final static String DEVICE_PLUGIN_DEVICE_NAME = "DEVICE_NAME";
public final static String DEVICE_PLUGIN_DEVICE_ID = "watertank_DEVICE_ID";
- public final static String STATE_ON = "ON";
- public final static String STATE_OFF = "OFF";
//sensor events summarized table name
public final static String STREAM_RELAY = "relay";
@@ -60,4 +62,3 @@ public class DeviceTypeConstants {
public static final String MQTT_CONFIG_LOCATION = CarbonUtils.getEtcCarbonConfigDirPath() + File.separator
+ "mqtt.properties";
}
-
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/exception/DeviceMgtPluginException.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/exception/DeviceMgtPluginException.java
index 5f5283c7..dfd6b13f 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/exception/DeviceMgtPluginException.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/exception/DeviceMgtPluginException.java
@@ -18,6 +18,9 @@
package org.homeautomation.watertank.plugin.exception;
+/**
+ * Custom exception implementation to wrap device management plugin related errors.
+ */
public class DeviceMgtPluginException extends Exception {
private String errorMessage;
@@ -53,4 +56,4 @@ public class DeviceMgtPluginException extends Exception {
this.errorMessage = errorMessage;
}
-}
\ No newline at end of file
+}
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManager.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManager.java
index 4423afb3..f4b6b16b 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManager.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManager.java
@@ -18,10 +18,11 @@
package org.homeautomation.watertank.plugin.impl;
+import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.homeautomation.watertank.plugin.impl.dao.DeviceTypeDAO;
import org.homeautomation.watertank.plugin.exception.DeviceMgtPluginException;
+import org.homeautomation.watertank.plugin.impl.dao.DeviceTypeDAO;
import org.homeautomation.watertank.plugin.impl.feature.DeviceTypeFeatureManager;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
@@ -104,7 +105,7 @@ public class DeviceTypeManager implements DeviceManager {
log.warn(msg, iotDAOEx);
}
String msg = "Error while updating the enrollment of the watertank device : " +
- device.getDeviceIdentifier();
+ device.getDeviceIdentifier();
log.error(msg, e);
throw new DeviceManagementException(msg, e);
}
@@ -149,7 +150,7 @@ public class DeviceTypeManager implements DeviceManager {
}
} catch (DeviceMgtPluginException e) {
String msg = "Error while checking the enrollment status of watertank device : " +
- deviceId.getId();
+ deviceId.getId();
log.error(msg, e);
throw new DeviceManagementException(msg, e);
}
@@ -164,7 +165,8 @@ public class DeviceTypeManager implements DeviceManager {
@Override
public boolean setActive(DeviceIdentifier deviceId, boolean status)
throws DeviceManagementException {
- return true;
+ //Status is not implemented for this device type.
+ throw new NotImplementedException();
}
@Override
@@ -186,7 +188,8 @@ public class DeviceTypeManager implements DeviceManager {
@Override
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType)
throws DeviceManagementException {
- return true;
+ //Ownership changing is not implemented for this device type.
+ throw new NotImplementedException();
}
public boolean isClaimable(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
@@ -196,17 +199,20 @@ public class DeviceTypeManager implements DeviceManager {
@Override
public boolean setStatus(DeviceIdentifier deviceId, String currentOwner,
EnrolmentInfo.Status status) throws DeviceManagementException {
- return false;
+ //Status is not implemented for this device type.
+ throw new NotImplementedException();
}
@Override
public License getLicense(String s) throws LicenseManagementException {
- return null;
+ //License is not implemented for this device type.
+ throw new NotImplementedException();
}
@Override
public void addLicense(License license) throws LicenseManagementException {
-
+ //License is not implemented for this device type.
+ throw new NotImplementedException();
}
@Override
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManagerService.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManagerService.java
index 4f4fb04f..a874aa9d 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManagerService.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/DeviceTypeManagerService.java
@@ -19,14 +19,15 @@
package org.homeautomation.watertank.plugin.impl;
import org.homeautomation.watertank.plugin.constants.DeviceTypeConstants;
-import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.DeviceManager;
+import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
public class DeviceTypeManagerService implements DeviceManagementService {
+
private DeviceManager deviceManager;
@Override
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/DeviceTypeDAO.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/DeviceTypeDAO.java
index bfb32394..92c052d6 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/DeviceTypeDAO.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/DeviceTypeDAO.java
@@ -32,6 +32,9 @@ import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
+/**
+ * Device type data transfer object implementation.
+ */
public class DeviceTypeDAO {
private static final Log log = LogFactory.getLog(DeviceTypeDAO.class);
@@ -42,6 +45,9 @@ public class DeviceTypeDAO {
initDeviceTypeDAO();
}
+ /**
+ * Initialize the device type.
+ */
public static void initDeviceTypeDAO() {
try {
Context ctx = new InitialContext();
@@ -52,6 +58,11 @@ public class DeviceTypeDAO {
}
}
+ /**
+ * Begin transactions with data sources.
+ *
+ * @throws DeviceMgtPluginException
+ */
public static void beginTransaction() throws DeviceMgtPluginException {
try {
Connection conn = dataSource.getConnection();
@@ -62,6 +73,12 @@ public class DeviceTypeDAO {
}
}
+ /**
+ * Get connection to the datasource.
+ *
+ * @return the datasource connection.
+ * @throws DeviceMgtPluginException
+ */
public static Connection getConnection() throws DeviceMgtPluginException {
if (currentConnection.get() == null) {
try {
@@ -74,6 +91,11 @@ public class DeviceTypeDAO {
return currentConnection.get();
}
+ /**
+ * Commit transaction after editing.
+ *
+ * @throws DeviceMgtPluginException
+ */
public static void commitTransaction() throws DeviceMgtPluginException {
try {
Connection conn = currentConnection.get();
@@ -92,6 +114,11 @@ public class DeviceTypeDAO {
}
}
+ /**
+ * Close current connection with the datasource.
+ *
+ * @throws DeviceMgtPluginException
+ */
public static void closeConnection() throws DeviceMgtPluginException {
Connection con = currentConnection.get();
@@ -105,6 +132,11 @@ public class DeviceTypeDAO {
currentConnection.remove();
}
+ /**
+ * Rollback transactions to recover from failure.
+ *
+ * @throws DeviceMgtPluginException
+ */
public static void rollbackTransaction() throws DeviceMgtPluginException {
try {
Connection conn = currentConnection.get();
@@ -123,6 +155,11 @@ public class DeviceTypeDAO {
}
}
+ /**
+ * Get device type specific data object.
+ *
+ * @return device type specific data object.
+ */
public DeviceTypeDAOImpl getDeviceTypeDAO() {
return new DeviceTypeDAOImpl();
}
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/impl/DeviceTypeDAOImpl.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/impl/DeviceTypeDAOImpl.java
index 24e7e3c6..67bbaaf4 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/impl/DeviceTypeDAOImpl.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/dao/impl/DeviceTypeDAOImpl.java
@@ -43,16 +43,22 @@ public class DeviceTypeDAOImpl {
private static final Log log = LogFactory.getLog(DeviceTypeDAOImpl.class);
+ /**
+ * Get device from the database.
+ *
+ * @param deviceId to retive the device.
+ * @return device object.
+ * @throws DeviceMgtPluginException
+ */
public Device getDevice(String deviceId) throws DeviceMgtPluginException {
- Connection conn = null;
+ Connection conn;
PreparedStatement stmt = null;
Device iotDevice = null;
ResultSet resultSet = null;
try {
conn = DeviceTypeDAO.getConnection();
String selectDBQuery =
- "SELECT watertank_DEVICE_ID, DEVICE_NAME" +
- " FROM watertank_DEVICE WHERE watertank_DEVICE_ID = ?";
+ "SELECT watertank_DEVICE_ID, DEVICE_NAME FROM watertank_DEVICE WHERE watertank_DEVICE_ID = ?";
stmt = conn.prepareStatement(selectDBQuery);
stmt.setString(1, deviceId);
resultSet = stmt.executeQuery();
@@ -77,6 +83,13 @@ public class DeviceTypeDAOImpl {
return iotDevice;
}
+ /**
+ * Add new device.
+ *
+ * @param device to be added.
+ * @return added or not.
+ * @throws DeviceMgtPluginException
+ */
public boolean addDevice(Device device) throws DeviceMgtPluginException {
boolean status = false;
Connection conn;
@@ -107,9 +120,16 @@ public class DeviceTypeDAOImpl {
return status;
}
+ /**
+ * Update existing device.
+ *
+ * @param device to be updated.
+ * @return updated or not.
+ * @throws DeviceMgtPluginException
+ */
public boolean updateDevice(Device device) throws DeviceMgtPluginException {
boolean status = false;
- Connection conn = null;
+ Connection conn;
PreparedStatement stmt = null;
try {
conn = DeviceTypeDAO.getConnection();
@@ -140,14 +160,20 @@ public class DeviceTypeDAOImpl {
return status;
}
+ /**
+ * Delete device.
+ *
+ * @param deviceId of the device to be deleted.
+ * @return deleted or not.
+ * @throws DeviceMgtPluginException
+ */
public boolean deleteDevice(String deviceId) throws DeviceMgtPluginException {
boolean status = false;
- Connection conn = null;
+ Connection conn;
PreparedStatement stmt = null;
try {
conn = DeviceTypeDAO.getConnection();
- String deleteDBQuery =
- "DELETE FROM watertank_DEVICE WHERE watertank_DEVICE_ID = ?";
+ String deleteDBQuery = "DELETE FROM watertank_DEVICE WHERE watertank_DEVICE_ID = ?";
stmt = conn.prepareStatement(deleteDBQuery);
stmt.setString(1, deviceId);
int rows = stmt.executeUpdate();
@@ -168,8 +194,14 @@ public class DeviceTypeDAOImpl {
return status;
}
+ /**
+ * Get all watertank devices.
+ *
+ * @return list of devices.
+ * @throws DeviceMgtPluginException
+ */
public List getAllDevices() throws DeviceMgtPluginException {
- Connection conn = null;
+ Connection conn;
PreparedStatement stmt = null;
ResultSet resultSet = null;
Device device;
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/feature/DeviceTypeFeatureManager.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/feature/DeviceTypeFeatureManager.java
index bd1ecb97..f42b3bf3 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/feature/DeviceTypeFeatureManager.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/feature/DeviceTypeFeatureManager.java
@@ -15,6 +15,7 @@
*/
package org.homeautomation.watertank.plugin.impl.feature;
+import org.apache.commons.lang.NotImplementedException;
import org.homeautomation.watertank.plugin.constants.DeviceTypeConstants;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.Feature;
@@ -26,12 +27,14 @@ import java.util.List;
public class DeviceTypeFeatureManager implements FeatureManager {
@Override
public boolean addFeature(Feature feature) throws DeviceManagementException {
- return false;
+ //Features are not used for this device type.
+ throw new NotImplementedException();
}
@Override
public boolean addFeatures(List features) throws DeviceManagementException {
- return false;
+ //Features are not used for this device type.
+ throw new NotImplementedException();
}
@Override
@@ -48,7 +51,8 @@ public class DeviceTypeFeatureManager implements FeatureManager {
@Override
public boolean removeFeature(String name) throws DeviceManagementException {
- return false;
+ //Features are not used for this device type.
+ throw new NotImplementedException();
}
@Override
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceSchemaInitializer.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceSchemaInitializer.java
index 512d63a6..45779375 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceSchemaInitializer.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceSchemaInitializer.java
@@ -28,22 +28,23 @@ import java.io.File;
/**
* Provides methods for initializing the database script.
*/
-public class DeviceSchemaInitializer extends DatabaseCreator{
+public class DeviceSchemaInitializer extends DatabaseCreator {
- private static final Log log = LogFactory.getLog(DeviceSchemaInitializer.class);
- private static final String setupSQLScriptBaseLocation = CarbonUtils.getCarbonHome() + File.separator + "dbscripts"
- + File.separator + "cdm" + File.separator + "plugins" + File.separator;
+ private static final Log log = LogFactory.getLog(DeviceSchemaInitializer.class);
+ private static final String setupSQLScriptBaseLocation = CarbonUtils.getCarbonHome() + File.separator + "dbscripts"
+ + File.separator + "cdm" + File.separator + "plugins"
+ + File.separator;
- public DeviceSchemaInitializer(DataSource dataSource) {
- super(dataSource);
- }
+ public DeviceSchemaInitializer(DataSource dataSource) {
+ super(dataSource);
+ }
- @Override
- protected String getDbScriptLocation(String databaseType) {
- String scriptName = databaseType + ".sql";
- if (log.isDebugEnabled()) {
- log.debug("Loading database script from :" + scriptName);
- }
- return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName;
- }
+ @Override
+ protected String getDbScriptLocation(String databaseType) {
+ String scriptName = databaseType + ".sql";
+ if (log.isDebugEnabled()) {
+ log.debug("Loading database script from :" + scriptName);
+ }
+ return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName;
+ }
}
diff --git a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceTypeUtils.java b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceTypeUtils.java
index a69aa5b3..bc9afc5b 100644
--- a/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceTypeUtils.java
+++ b/modules/samples/watertank/component/plugin/src/main/java/org/homeautomation/watertank/plugin/impl/util/DeviceTypeUtils.java
@@ -18,11 +18,11 @@
package org.homeautomation.watertank.plugin.impl.util;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.homeautomation.watertank.plugin.constants.DeviceTypeConstants;
import org.homeautomation.watertank.plugin.exception.DeviceMgtPluginException;
import org.homeautomation.watertank.plugin.internal.DeviceTypeManagementDataHolder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.base.ServerConfiguration;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.core.util.Utils;
@@ -52,7 +52,7 @@ public class DeviceTypeUtils {
private static Log log = LogFactory.getLog(DeviceTypeUtils.class);
- public static void cleanupResources(Connection conn, PreparedStatement stmt, ResultSet rs) {
+ private static void cleanupResources(Connection conn, PreparedStatement stmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
@@ -95,24 +95,26 @@ public class DeviceTypeUtils {
log.error("Error while looking up the data source: " + DeviceTypeConstants.DATA_SOURCE_NAME);
} catch (Exception e) {
throw new DeviceMgtPluginException("Error occurred while initializing Iot Device " +
- "Management database schema", e);
+ "Management database schema", e);
}
}
public static String replaceMqttProperty(String urlWithPlaceholders) {
String MQTT_BROKER_HOST = null;
String MQTT_PORT = null;
- if(!DeviceTypeConstants.MQTT_BROKER_HOST.startsWith("$")){
+ if (!DeviceTypeConstants.MQTT_BROKER_HOST.startsWith("$")) {
MQTT_BROKER_HOST = "\\$".concat(DeviceTypeConstants.MQTT_BROKER_HOST);
}
- if(!DeviceTypeConstants.MQTT_PORT.startsWith("$")){
+ if (!DeviceTypeConstants.MQTT_PORT.startsWith("$")) {
MQTT_PORT = "\\$".concat(DeviceTypeConstants.MQTT_PORT);
}
urlWithPlaceholders = Utils.replaceSystemProperty(urlWithPlaceholders);
urlWithPlaceholders = urlWithPlaceholders.replaceAll(MQTT_PORT, "" +
- (DeviceTypeConstants.DEFAULT_MQTT_PORT + getPortOffset()));
+ (DeviceTypeConstants.DEFAULT_MQTT_PORT
+ + getPortOffset()));
urlWithPlaceholders = urlWithPlaceholders.replaceAll(MQTT_BROKER_HOST,
- System.getProperty(DeviceTypeConstants.DEFAULT_CARBON_LOCAL_IP_PROPERTY, "localhost"));
+ System.getProperty(DeviceTypeConstants.DEFAULT_CARBON_LOCAL_IP_PROPERTY,
+ "localhost"));
return urlWithPlaceholders;
}
@@ -131,10 +133,10 @@ public class DeviceTypeUtils {
}
}
- public static void setupMqttOutputAdapter() throws IOException {
+ static void setupMqttOutputAdapter() throws IOException {
OutputEventAdapterConfiguration outputEventAdapterConfiguration =
createMqttOutputEventAdapterConfiguration(DeviceTypeConstants.MQTT_ADAPTER_NAME,
- DeviceTypeConstants.MQTT_ADAPTER_TYPE, MessageType.TEXT);
+ DeviceTypeConstants.MQTT_ADAPTER_TYPE, MessageType.TEXT);
try {
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
@@ -157,7 +159,8 @@ public class DeviceTypeUtils {
* @return OutputEventAdapterConfiguration instance for given configuration
*/
private static OutputEventAdapterConfiguration createMqttOutputEventAdapterConfiguration(String name, String type,
- String msgFormat) throws IOException {
+ String msgFormat)
+ throws IOException {
OutputEventAdapterConfiguration outputEventAdapterConfiguration = new OutputEventAdapterConfiguration();
outputEventAdapterConfiguration.setName(name);
outputEventAdapterConfiguration.setType(type);
diff --git a/modules/samples/watertank/component/pom.xml b/modules/samples/watertank/component/pom.xml
index 52befd69..87109c10 100644
--- a/modules/samples/watertank/component/pom.xml
+++ b/modules/samples/watertank/component/pom.xml
@@ -1,21 +1,22 @@
-
+
+
@@ -53,4 +54,4 @@
ui
analytics
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/ui/pom.xml b/modules/samples/watertank/component/ui/pom.xml
index 9b6a6d42..28de3b95 100644
--- a/modules/samples/watertank/component/ui/pom.xml
+++ b/modules/samples/watertank/component/ui/pom.xml
@@ -16,6 +16,7 @@
~ specific language governing permissions and limitations
~ under the License.
-->
+
@@ -53,4 +54,4 @@
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/analytics-view.js b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/analytics-view.js
index 9a6b1620..b0721f26 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/analytics-view.js
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/analytics-view.js
@@ -19,23 +19,23 @@
function onRequest(context) {
var devices = context.unit.params.devices;
var deviceType = context.uriParams.deviceType;
- var deviceId = request.getParameter("deviceId");
+ var deviceId = request.getParameter('deviceId');
if (devices) {
return {
- "devices": stringify(devices),
- "backendApiUri": devicemgtProps["httpsURL"] + "/watertank/device/stats/"
+ 'devices': stringify(devices),
+ 'backendApiUri': devicemgtProps['httpsURL'] + '/watertank/device/stats/'
};
- } else if (deviceType != null && deviceType != undefined && deviceId != null && deviceId != undefined) {
- var deviceModule = require("/app/modules/device.js").deviceModule;
+ } else if (deviceType && deviceId) {
+ var deviceModule = require('/app/modules/device.js').deviceModule;
var device = deviceModule.viewDevice(deviceType, deviceId);
- if (device && device.status != "error") {
+ if (device && device.status != 'error') {
return {
- "device": device,
- "backendApiUrl": devicemgtProps["httpsURL"] + "/watertank/device/stats/" + deviceId + "/sensors/"
+ 'device': device,
+ 'backendApiUrl': devicemgtProps['httpsURL'] + '/watertank/device/stats/' + deviceId + '/sensors/'
};
} else {
- response.sendError(404, "Device Id " + deviceId + " of type " + deviceType + " cannot be found!");
+ response.sendError(404, 'Device Id ' + deviceId + ' of type ' + deviceType + ' cannot be found!');
exit();
}
}
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/public/js/watertank.js b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/public/js/watertank.js
index a92554f8..bfb10015 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/public/js/watertank.js
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.analytics-view/public/js/watertank.js
@@ -16,15 +16,15 @@
* under the License.
*/
-var palette = new Rickshaw.Color.Palette({scheme: "classic9"});
+var palette = new Rickshaw.Color.Palette({scheme: 'classic9'});
var graphMap = {};
function drawGraph_watertank(from, to) {
- var devices = $("#watertank-details").data("devices");
+ var devices = $('#watertank-details').data('devices');
var tzOffset = new Date().getTimezoneOffset() * 60;
var streamIndex = 0;
- var streams = ["temperature", "humidity"];
+ var streams = ['temperature', 'humidity'];
populateGraph();
@@ -34,12 +34,12 @@ function drawGraph_watertank(from, to) {
}
function clearContent(type) {
- $("#y_axis-" + type).html("");
- $("#smoother-" + type).html("");
- $("#legend-" + type).html("");
- $("#chart-" + type).html("");
- $("#x_axis-" + type).html("");
- $("#slider-" + type).html("");
+ $('#y_axis-' + type).html('');
+ $('#smoother-' + type).html('');
+ $('#legend-' + type).html('');
+ $('#chart-' + type).html('');
+ $('#x_axis-' + type).html('');
+ $('#slider-' + type).html('');
}
function initGraph(type) {
@@ -47,16 +47,16 @@ function drawGraph_watertank(from, to) {
return graphMap[type];
}
- var chartWrapperElmId = "#watertank-div-chart";
+ var chartWrapperElmId = '#watertank-div-chart';
var graphWidth = $(chartWrapperElmId).width() - 50;
var graphConfig = {
- element: document.getElementById("chart-" + type),
+ element: document.getElementById('chart-' + type),
width: graphWidth,
height: 400,
strokeWidth: 2,
renderer: 'line',
- interpolation: "linear",
+ interpolation: 'linear',
unstack: true,
stack: false,
xScale: d3.time.scale(),
@@ -84,7 +84,7 @@ function drawGraph_watertank(from, to) {
x: parseInt(new Date().getTime() / 1000),
y: 0
}],
- 'name': $("#watertank-details").data("devicename")
+ 'name': $('#watertank-details').data('devicename')
});
}
@@ -99,7 +99,7 @@ function drawGraph_watertank(from, to) {
var yAxis = new Rickshaw.Graph.Axis.Y({
graph: graph,
orientation: 'left',
- element: document.getElementById("y_axis-" + type),
+ element: document.getElementById('y_axis-' + type),
width: 40,
height: 410
});
@@ -107,12 +107,12 @@ function drawGraph_watertank(from, to) {
var slider = new Rickshaw.Graph.RangeSlider.Preview({
graph: graph,
- element: document.getElementById("slider-" + type)
+ element: document.getElementById('slider-' + type)
});
var legend = new Rickshaw.Graph.Legend({
graph: graph,
- element: document.getElementById("legend-" + type)
+ element: document.getElementById('legend-' + type)
});
var hoverDetail = new Rickshaw.Graph.HoverDetail({
@@ -122,7 +122,7 @@ function drawGraph_watertank(from, to) {
moment((x + tzOffset) * 1000).format('Do MMM YYYY h:mm:ss a') + '';
var swatch = '';
- return swatch + series.name + ": " + parseInt(y) + '
' + date;
+ return swatch + series.name + ': ' + parseInt(y) + '
' + date;
}
});
@@ -159,7 +159,7 @@ function drawGraph_watertank(from, to) {
if (devices) {
getData();
} else {
- var backendApiUrl = $("#watertank-div-chart").data("backend-api-url") + type + "?from=" + from + "&to=" + to;
+ var backendApiUrl = $('#watertank-div-chart').data('backend-api-url') + type + '?from=' + from + '&to=' + to;
var successCallback = function (data) {
if (data) {
drawLineGraph(JSON.parse(data));
@@ -175,8 +175,8 @@ function drawGraph_watertank(from, to) {
if (deviceIndex >= devices.length) {
return;
}
- var backendApiUrl = $("#watertank-div-chart").data("backend-api-url") + devices[deviceIndex].deviceIdentifier
- + "/sensors/" + type + "?from=" + from + "&to=" + to;
+ var backendApiUrl = $('#watertank-div-chart').data('backend-api-url') + devices[deviceIndex].deviceIdentifier
+ + '/sensors/' + type + '?from=' + from + '&to=' + to;
var successCallback = function (data) {
if (data) {
drawLineGraph(JSON.parse(data));
@@ -214,10 +214,10 @@ function drawGraph_watertank(from, to) {
function getFieldData(data, type) {
var columnData;
switch (type) {
- case "temperature" :
+ case 'temperature' :
columnData = data.values.temperature;
break;
- case "humidity" :
+ case 'humidity' :
columnData = data.values.humidity;
break;
}
@@ -225,4 +225,4 @@ function drawGraph_watertank(from, to) {
return columnData;
}
-}
\ No newline at end of file
+}
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.device-view/device-view.js b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.device-view/device-view.js
index 422e9002..6262ee17 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.device-view/device-view.js
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.device-view/device-view.js
@@ -17,24 +17,24 @@
*/
function onRequest(context) {
- var log = new Log("cdmf.unit.device.type.watertank.device-view.js");
+ var log = new Log('cdmf.unit.device.type.watertank.device-view.js');
var deviceType = context.uriParams.deviceType;
- var deviceId = request.getParameter("id");
+ var deviceId = request.getParameter('id');
var autoCompleteParams = [
- {"name": "deviceId", "value": deviceId}
+ {'name': 'deviceId', 'value': deviceId}
];
- if (deviceType != null && deviceType != undefined && deviceId != null && deviceId != undefined) {
- var deviceModule = require("/app/modules/device.js").deviceModule;
+ if (deviceType && deviceId) {
+ var deviceModule = require('/app/modules/device.js').deviceModule;
var device = deviceModule.viewDevice(deviceType, deviceId);
- if (device && device.status != "error") {
+ if (device && device.status != 'error') {
return {
- "device": device,
- "backendApiUri": devicemgtProps["httpsURL"] + "/" + deviceType + "/",
- "autoCompleteParams": autoCompleteParams
+ 'device': device,
+ 'backendApiUri': devicemgtProps['httpsURL'] + '/' + deviceType + '/',
+ 'autoCompleteParams': autoCompleteParams
};
} else {
- response.sendError(404, "Device Id " + deviceId + " of type " + deviceType + " cannot be found!");
+ response.sendError(404, 'Device Id ' + deviceId + ' of type ' + deviceType + ' cannot be found!');
exit();
}
}
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/analytics-view.js b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/analytics-view.js
index d231140b..e79125f2 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/analytics-view.js
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/analytics-view.js
@@ -19,14 +19,14 @@
function onRequest(context) {
var device = context.unit.params.device;
var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
- var constants = require("/app/modules/constants.js");
- var websocketEndpoint = devicemgtProps["httpsURL"].replace("https", "wss");
+ var constants = require('/app/modules/constants.js');
+ var websocketEndpoint = devicemgtProps['httpsURL'].replace('https', 'wss');
var tokenPair = session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER);
- var token = "";
+ var token = '';
if (tokenPair) {
token = tokenPair.accessToken;
}
- websocketEndpoint = websocketEndpoint + "/secured-outputui/org.wso2.iot.watertank/1.0.0?" +
- "token=" + token + "&deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type;
- return {"device": device, "websocketEndpoint": websocketEndpoint};
+ websocketEndpoint = websocketEndpoint + '/secured-outputui/org.wso2.iot.watertank/1.0.0?' +
+ 'token=' + token + '&deviceId=' + device.deviceIdentifier + '&deviceType=' + device.type;
+ return {'device': device, 'websocketEndpoint': websocketEndpoint};
}
\ No newline at end of file
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/public/js/device-stats.js b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/public/js/device-stats.js
index a9376c2e..d898fe08 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/public/js/device-stats.js
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.realtime.analytics-view/public/js/device-stats.js
@@ -17,10 +17,9 @@
*/
var ws;
-var coffee_amount = 0;
$(window).load(function () {
- var websocketUrl = $("#div-chart").data("websocketurl");
+ var websocketUrl = $('#div-chart').data('websocketurl');
connect(websocketUrl);
});
@@ -55,8 +54,8 @@ function disconnect() {
}
function updateWaterLevel(newValue) {
- var waterLevel = document.getElementById("water");
- waterLevel.innerHTML = (newValue | 0) + "%";
+ var waterLevel = document.getElementById('water');
+ waterLevel.innerHTML = (newValue | 0) + '%';
if (newValue == 0) {
waterLevel.style.height = (newValue * 3) + 'px';
waterLevel.style.paddingTop = 0;
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/private/config.json b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/private/config.json
index 621d28cf..8d03a51f 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/private/config.json
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/private/config.json
@@ -4,4 +4,4 @@
"category": "iot",
"downloadAgentUri": "watertank/device/download"
}
-}
\ No newline at end of file
+}
diff --git a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/public/js/download.js b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/public/js/download.js
index 8a5ff91e..36df1d7d 100644
--- a/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/public/js/download.js
+++ b/modules/samples/watertank/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.watertank.type-view/public/js/download.js
@@ -16,10 +16,10 @@
* under the License.
*/
-var modalPopup = ".wr-modalpopup";
-var modalPopupContainer = modalPopup + " .modalpopup-container";
-var modalPopupContent = modalPopup + " .modalpopup-content";
-var body = "body";
+var modalPopup = '.wr-modalpopup';
+var modalPopupContainer = modalPopup + ' .modalpopup-container';
+var modalPopupContent = modalPopup + ' .modalpopup-content';
+var body = 'body';
/*
* set popup maximum height function.
@@ -50,9 +50,9 @@ function showPopup() {
$('label[for=deviceName]').remove();
}
});
- var deviceType = "";
+ var deviceType = '';
$('.deviceType').each(function () {
- if (this.value != "") {
+ if (this.value != '') {
deviceType = this.value;
}
});
@@ -81,17 +81,17 @@ function attachEvents() {
* when a user clicks on "Download" link
* on Device Management page in WSO2 DC Console.
*/
- $("a.download-link").click(function () {
- var sketchType = $(this).data("sketchtype");
- var deviceType = $(this).data("devicetype");
- var downloadDeviceAPI = "/devicemgt/api/devices/sketch/generate_link";
- var payload = {"sketchType": sketchType, "deviceType": deviceType};
+ $('a.download-link').click(function () {
+ var sketchType = $(this).data('sketchtype');
+ var deviceType = $(this).data('devicetype');
+ var downloadDeviceAPI = '/devicemgt/api/devices/sketch/generate_link';
+ var payload = {'sketchType': sketchType, 'deviceType': deviceType};
$(modalPopupContent).html($('#download-device-modal-content').html());
showPopup();
var deviceName;
- $("a#download-device-download-link").click(function () {
+ $('a#download-device-download-link').click(function () {
$('.new-device-name').each(function () {
- if (this.value != "") {
+ if (this.value != '') {
deviceName = this.value;
}
});
@@ -121,7 +121,7 @@ function attachEvents() {
}
});
- $("a#download-device-cancel-link").click(function () {
+ $('a#download-device-cancel-link').click(function () {
hidePopup();
});
});
@@ -130,11 +130,11 @@ function attachEvents() {
function downloadAgent() {
var deviceName;
$('.new-device-name').each(function () {
- if (this.value != "") {
+ if (this.value != '') {
deviceName = this.value;
}
});
- var deviceNameFormat = /^[^~?!#$:;%^*`+={}\[\]\\()|<>,'"]{1,30}$/;
+ var deviceNameFormat = /^[^~?!#$:;%^*`+={}\[\]\\()|<>,""]{1,30}$/;
if (deviceName && deviceNameFormat.test(deviceName)) {
$('#downloadForm').submit();
hidePopup();
@@ -144,8 +144,8 @@ function downloadAgent() {
hidePopup();
}, 1000);
} else {
- $("#invalid-username-error-msg span").text("Invalid device name");
- $("#invalid-username-error-msg").removeClass("hidden");
+ $('#invalid-username-error-msg span').text('Invalid device name');
+ $('#invalid-username-error-msg').removeClass('hidden');
}
}
@@ -155,29 +155,29 @@ function doAction(data) {
document.write(data);
}
- if (data.status == "200") {
+ if (data.status == 200) {
$(modalPopupContent).html($('#download-device-modal-content-links').html());
- $("input#download-device-url").val(data.responseText);
- $("input#download-device-url").focus(function () {
+ $('input#download-device-url').val(data.responseText);
+ $('input#download-device-url').focus(function () {
$(this).select();
});
showPopup();
- } else if (data.status == "401") {
+ } else if (data.status == 401) {
$(modalPopupContent).html($('#device-401-content').html());
- $("#device-401-link").click(function () {
- window.location = "/devicemgt/login";
+ $('#device-401-link').click(function () {
+ window.location = '/devicemgt/login';
});
showPopup();
- } else if (data == "403") {
+ } else if (data == 403) {
$(modalPopupContent).html($('#device-403-content').html());
- $("#device-403-link").click(function () {
- window.location = "/devicemgt/login";
+ $('#device-403-link').click(function () {
+ window.location = '/devicemgt/login';
});
showPopup();
} else {
$(modalPopupContent).html($('#device-unexpected-error-content').html());
- $("a#device-unexpected-error-link").click(function () {
+ $('a#device-unexpected-error-link').click(function () {
hidePopup();
});
}
-}
\ No newline at end of file
+}
diff --git a/modules/samples/watertank/feature/pom.xml b/modules/samples/watertank/feature/pom.xml
index 2bfb0fa7..b05dab2b 100644
--- a/modules/samples/watertank/feature/pom.xml
+++ b/modules/samples/watertank/feature/pom.xml
@@ -16,6 +16,7 @@
~ specific language governing permissions and limitations
~ under the License.
-->
+
@@ -31,4 +32,4 @@
feature
-
\ No newline at end of file
+
diff --git a/modules/samples/watertank/pom.xml b/modules/samples/watertank/pom.xml
index 916e81a2..ac31232c 100644
--- a/modules/samples/watertank/pom.xml
+++ b/modules/samples/watertank/pom.xml
@@ -16,6 +16,7 @@
~ specific language governing permissions and limitations
~ under the License.
-->
+
@@ -415,4 +416,5 @@
3.3.100.v20120522-1822
3.6.100.v20120522-1841
-
\ No newline at end of file
+
+