Merge branch 'upstream' into tizen
[platform/upstream/iotivity.git] / service / resource-container / examples / android / AndroidBundle / app / src / main / java / org / iotivity / service / sample / androidbundle / resources / DiscomfortIndexResource.java
1 //******************************************************************
2 //
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 package org.iotivity.service.sample.androidbundle.resources;
22
23 import android.app.Notification;
24 import android.content.Context;
25 import android.content.Intent;
26 import android.util.Log;
27
28 import org.iotivity.service.resourcecontainer.BundleSoftSensorResource;
29 import org.iotivity.service.resourcecontainer.RcsResourceAttributes;
30 import org.iotivity.service.resourcecontainer.RcsValue;
31
32 import java.util.HashMap;
33 import java.util.Vector;
34
35 import org.iotivity.service.sample.androidbundle.DummyActivity;
36 import org.iotivity.service.sample.androidbundle.R;
37
38 public class DiscomfortIndexResource extends BundleSoftSensorResource {
39     private static final String LOG_TAG = DiscomfortIndexResource.class.getSimpleName();
40
41     public DiscomfortIndexResource(Context context){
42         super(context);
43         this.setResourceType("oic.r.discomfortindex");
44         this.setName("discomfortIndex");
45         m_mapInputData = new HashMap<String, RcsValue>();
46     }
47
48     @Override
49     protected void initAttributes() {
50         this.m_attributes.put("discomfortIndex", 0);
51         this.m_attributes.put("humidity", 0);
52         this.m_attributes.put("temperature", 0);
53     }
54
55     @Override
56     protected void onUpdatedInputResource(String attributeName, Vector<RcsValue> values) {
57         m_mapInputData.put(attributeName, values.get(0));
58         executeLogic();
59     }
60
61     @Override
62     protected void executeLogic() {
63         if(m_mapInputData.get("humidity") != null && m_mapInputData.get("temperature") != null){
64             double dDI = 0.0;
65             Vector v = new Vector();
66
67             int t = m_mapInputData.get("temperature").asInt();
68             int h = m_mapInputData.get("humidity").asInt();
69             double F = (9.0 * (double) t) / 5.0 + 32.0;
70
71             // calculation of discomfortIndex
72             dDI = F - (F - 58.0) * (double)((100 - h) * 55) / 10000.0;
73
74             this.setAttribute("temperature", new RcsValue(t));
75             this.setAttribute("humidity", new RcsValue(h));
76             this.setAttribute("discomfortIndex", new RcsValue(dDI));
77
78             setAttribute("discomfortIndex",new RcsValue(dDI), true ); // notify observers
79             Log.i(LOG_TAG, "Discomfort Index" + dDI);
80             showNotification(" " + dDI, this.m_context);
81         }
82         else{
83             Log.i(LOG_TAG, "Discomfort Index input data - humidity:  " +
84                     m_mapInputData.get("humidity") + " temp: " +
85                     m_mapInputData.get("temperature") );
86         }
87     }
88
89     @Override
90     public void handleSetAttributesRequest(RcsResourceAttributes rcsResourceAttributes) {
91         this.setAttributes(rcsResourceAttributes);
92         executeLogic();
93     }
94
95     @Override
96     public RcsResourceAttributes handleGetAttributesRequest() {
97         return this.getAttributes();
98     }
99
100     private void showNotification(String eventtext, Context ctx) {
101         // Set the icon, scrolling text and timestamp
102         Log.i(LOG_TAG, "*************************************** ");
103         Log.i(LOG_TAG, "*************************************** ");
104         Log.i(LOG_TAG, "*************************************** ");
105         Log.i(LOG_TAG, eventtext);
106         Log.i(LOG_TAG, "*************************************** ");
107         Log.i(LOG_TAG, "*************************************** ");
108         Log.i(LOG_TAG, "*************************************** ");
109     }
110 }