API for retrieving resoure configuration
authorMarkus Jung <markus.jung@samsung.com>
Thu, 17 Dec 2015 06:13:37 +0000 (15:13 +0900)
committerUze Choi <uzchoi@samsung.com>
Mon, 21 Dec 2015 09:34:23 +0000 (09:34 +0000)
Added an API to access the bundle configuration within an Android resource bundle.

Change-Id: I332d47076669b23eba4fc70f5c4b4777a9d92ded
Signed-off-by: Markus Jung <markus.jung@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/4637
Reviewed-by: Markus Jung <markus.jung85@gmail.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Madan Lanka <lanka.madan@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/resource-container/android/resource-container/src/main/java/org/iotivity/service/resourcecontainer/AndroidBundleActivator.java
service/resource-container/android/resource-container/src/main/java/org/iotivity/service/resourcecontainer/RcsResourceContainer.java
service/resource-container/android/resource-container/src/main/java/org/iotivity/service/resourcecontainer/RcsResourceContainerBundleAPI.java
service/resource-container/examples/android/AndroidBundle/app/src/main/java/org/iotivity/service/sample/androidbundle/DummyActivity.java
service/resource-container/examples/android/AndroidBundle/app/src/main/java/org/iotivity/service/sample/androidbundle/SampleActivator.java
service/resource-container/examples/android/AndroidBundle/app/src/main/java/org/iotivity/service/sample/androidbundle/resources/HumidityResource.java
service/resource-container/examples/android/AndroidBundle/app/src/main/java/org/iotivity/service/sample/androidbundle/resources/LightIntensityResource.java
service/resource-container/examples/android/AndroidBundle/app/src/main/java/org/iotivity/service/sample/androidbundle/resources/TemperatureResource.java

index 9b212fb..06c997a 100644 (file)
@@ -52,9 +52,4 @@ public abstract class AndroidBundleActivator {
      */
     public abstract void destroyResource(AndroidBundleResource resource);
 
-    /**
-     * List the configuration of the bundle resources.
-     * @return List of configuration for each resource 
-     */
-    public abstract List<ResourceConfig> getConfiguredBundleResources();
 }
\ No newline at end of file
index 39c1b94..06cd652 100644 (file)
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.Enumeration;
 import android.util.Log;
 import android.content.Context;
+import java.util.Vector;
 
 import dalvik.system.DexFile;
 import android.content.pm.ApplicationInfo;
@@ -280,6 +281,20 @@ public class RcsResourceContainer implements RcsResourceContainerBundleAPI {
                         resource.getURI(), resource.getResourceType(),
                         resource.getName());
     }
+    
+    public List<ResourceConfig> getConfiguredBundleResources(String bundleId) {
+        int configuredResources = getNumberOfConfiguredResources(bundleId);
+
+        Vector<ResourceConfig> configs = new Vector<ResourceConfig>();
+
+        for (int i = 0; i < configuredResources; i++) {
+                String[] resourceParams = getConfiguredResourceParams(bundleId, i);
+                ResourceConfig config = new ResourceConfig(resourceParams);
+                configs.add(config);
+
+        }
+        return configs;
+    }
 
     
     public void unregisterResource(AndroidBundleResource resource){
index e95ffae..075c39d 100644 (file)
@@ -26,6 +26,7 @@ package org.iotivity.service.resourcecontainer;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Vector;
 
 // TODO null check for parameters
 /**
@@ -33,13 +34,10 @@ import java.util.Map;
  * container.
  */
 public interface RcsResourceContainerBundleAPI{
-    
+
     public void registerResource(String bundleId, AndroidBundleResource resource);
-        
+
     public void unregisterResource(AndroidBundleResource resource);
-            
-    public int getNumberOfConfiguredResources(String bundleId);
-   
-    public String[] getConfiguredResourceParams(String bundleId,
-        int resId);
+
+    public List<ResourceConfig> getConfiguredBundleResources(String bundleId);
 }
index 83c9ef7..5f5cb9f 100755 (executable)
@@ -18,7 +18,6 @@
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-
 package org.iotivity.service.sample.androidbundle;
 
 import android.content.Context;
@@ -34,11 +33,10 @@ import org.iotivity.service.sample.androidbundle.resources.LightIntensityResourc
 import org.iotivity.service.sample.androidbundle.resources.TemperatureResource;
 
 import java.util.List;
+import java.util.Vector;
 
-/**
- * Created by markus.jung on 11/7/2015.
- */
 public class SampleActivator extends AndroidBundleActivator {
+    private List<AndroidBundleResource> resources = new Vector<AndroidBundleResource>();
 
     public SampleActivator(RcsResourceContainerBundleAPI bundleAPI, Context appContext){
         super(bundleAPI, appContext);
@@ -49,40 +47,70 @@ public class SampleActivator extends AndroidBundleActivator {
     public void activateBundle() {
         Log.d(SampleActivator.class.getName(), "Activate bundle called");
 
-        LightIntensityResource lightIntensityResource = new LightIntensityResource(this.appContext);
-        lightIntensityResource.setURI("/lightsensor/1");
-        bundleAPI.registerResource("oic.android.sample", lightIntensityResource);
-
-        HumidityResource humidityResource = new HumidityResource(this.appContext);
-        humidityResource.setURI("/humidity/1");
-        bundleAPI.registerResource("oic.android.sample", humidityResource);
-
-        TemperatureResource tempResource = new TemperatureResource(this.appContext);
-        tempResource.setURI("/temperature/1");
-        bundleAPI.registerResource("oic.android.sample", tempResource);
-
-        DiscomfortIndexResource diResource = new DiscomfortIndexResource(this.appContext);
-        diResource.setURI("/android/discomfortindex/1");
-        bundleAPI.registerResource("oic.android.sample", diResource);
+        List<ResourceConfig> configuredBundleResources = this.bundleAPI.
+                getConfiguredBundleResources("oic.android.sample");
+
+        for(ResourceConfig config : configuredBundleResources){
+            AndroidBundleResource resource = null;
+
+            if("oic.r.lightsensor".equals(config.getResourceType())){
+                resource =
+                        new LightIntensityResource(this.appContext);
+            } else if("oic.r.temperature".equals(config.getResourceType())){
+                resource =
+                        new TemperatureResource(this.appContext);
+            } else if("oic.r.discomfortindex".equals(config.getResourceType())){
+                resource =
+                        new DiscomfortIndexResource(this.appContext);
+            } else if ("oic.r.humidity".equals(config.getResourceType())) {
+                resource =
+                        new HumidityResource(this.appContext);
+            }
+
+            if(resource != null) {
+                resource.setURI(config.getURI());
+                resource.setName(config.getName());
+                bundleAPI.registerResource("oic.android.sample", resource);
+                resources.add(resource);
+            }
+        }
     }
 
     @Override
     public void deactivateBundle() {
-
+        for(AndroidBundleResource resource : resources){
+            bundleAPI.unregisterResource(resource);
+        }
     }
 
     @Override
-    public void createResource(ResourceConfig resourceConfig) {
-
+    public void createResource(ResourceConfig config) {
+        AndroidBundleResource resource = null;
+
+        if("oic.r.lightsensor".equals(config.getResourceType())){
+            resource =
+                    new LightIntensityResource(this.appContext);
+        } else if("oic.r.temperature".equals(config.getResourceType())){
+            resource =
+                    new TemperatureResource(this.appContext);
+        } else if("oic.r.discomfortindex".equals(config.getResourceType())){
+            resource =
+                    new DiscomfortIndexResource(this.appContext);
+        } else if ("oic.r.humidity".equals(config.getResourceType())) {
+            resource =
+                    new HumidityResource(this.appContext);
+        }
+
+        if(resource != null) {
+            resource.setURI(config.getURI());
+            resource.setName(config.getName());
+            bundleAPI.registerResource("oic.android.sample", resource);
+            resources.add(resource);
+        }
     }
 
     @Override
     public void destroyResource(AndroidBundleResource androidBundleResource) {
-
-    }
-
-    @Override
-    public List<ResourceConfig> getConfiguredBundleResources() {
-        return null;
+        bundleAPI.unregisterResource(androidBundleResource);
     }
 }
index f240134..441feaa 100755 (executable)
@@ -18,7 +18,6 @@
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-
 package org.iotivity.service.sample.androidbundle.resources;
 
 import android.content.Context;
@@ -32,6 +31,7 @@ import org.iotivity.service.resourcecontainer.AndroidBundleResource;
 import org.iotivity.service.resourcecontainer.RcsResourceAttributes;
 import org.iotivity.service.resourcecontainer.RcsValue;
 
+
 public class LightIntensityResource extends AndroidBundleResource implements SensorEventListener {
     private static final String LOG_TAG = LightIntensityResource.class.getSimpleName();
     private final SensorManager mSensorManager;
index c2a499f..05d8a34 100755 (executable)
@@ -18,7 +18,6 @@
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-
 package org.iotivity.service.sample.androidbundle.resources;
 
 import android.content.Context;
@@ -40,9 +39,9 @@ public class TemperatureResource  extends AndroidBundleResource implements Senso
     public TemperatureResource(Context context){
         super(context);
         this.setResourceType("oic.r.temperature");
-        this.setName("humiditySensor");
+        this.setName("temperatureSensor");
         mSensorManager = (SensorManager) context.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
-        temperatureSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
+        temperatureSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
         mSensorManager.registerListener(this, temperatureSensor, SensorManager.SENSOR_DELAY_NORMAL);
     }