[SSM] Fix IOT-332, 333, 334 issues
authorMinji Park <minjii.park@samsung.com>
Fri, 27 Feb 2015 05:58:00 +0000 (14:58 +0900)
committerUze Choi <uzchoi@samsung.com>
Fri, 27 Feb 2015 06:15:26 +0000 (06:15 +0000)
Modify SSM java Interface and Android sample app

1. Fix IOT 332, unregister queries continuously

2. Fix IOT 333, handling exception when registering an empty query

3. Fix IOT 334, handling exception when registering invalid queries

Change-Id: Ie4bb94c19634c18f6484313de16a49c1ac5f46d1
Signed-off-by: Minji Park <minjii.park@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/418
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/CoreController.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/DataReader.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/IReportReceiver.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/ModelData.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/QueryEngine.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/SSMInterface.java
service/soft-sensor-manager/SampleApp/android/SSMTesterApp/src/org/iotivity/service/ssm/sample/MainActivity.java

index d0c2e55..35ad502 100644 (file)
@@ -2,70 +2,82 @@ package org.iotivity.service.ssm;
 
 import java.util.List;
 
-public class CoreController 
-{
-       static
-       {
-               try
-               {
-                       String workingPath = System.getProperty( "user.dir" );
-                       
+public class CoreController {
+       static {
+               try {
+                       String workingPath = System.getProperty("user.dir");
+
                        // for android: not complete method
-                       if(System.getProperty("os.name").toLowerCase().equals("linux"))
-                       {
-                               //System.out.println("System load Android library");
-                           System.loadLibrary("oc_logger");
-                           System.loadLibrary("coap");
-                           System.loadLibrary("octbstack");
-                           System.loadLibrary("oc");
-                           System.loadLibrary("SSMCore");
-                       }
-                       else
-                       {
-                               //System.out.println("System load 32bit library");                              
-                               System.load( workingPath + "SSMCore_Windows.dll");
+                       if (System.getProperty("os.name").toLowerCase().equals("linux")) {
+                               // System.out.println("System load Android library");
+                               System.loadLibrary("oc_logger");
+                               System.loadLibrary("coap");
+                               System.loadLibrary("octbstack");
+                               System.loadLibrary("oc");
+                               System.loadLibrary("SSMCore");
+                       } else {
+                               // System.out.println("System load 32bit library");
+                               System.load(workingPath + "SSMCore_Windows.dll");
                        }
-               }
-               catch(UnsatisfiedLinkError e)
-               {
+               } catch (UnsatisfiedLinkError e) {
                        System.out.println(e.getMessage());
                }
        }
-       
+
        static private CoreController coreController;
-       
-       public static CoreController getInstance()
-       {
-               if(coreController == null)
+
+       public static CoreController getInstance() {
+               if (coreController == null)
                        coreController = new CoreController();
-               
+
                return coreController;
        }
-       
-       public native void InitializeSSMCore(String xmlDescription);
-       public native void StartSSMCore();
-       public native void StopSSMCore();
-       public native void TerminateSSMCore();
-       public native QueryEngine CreateQueryEngine();
+
+       public native void InitializeSSMCore(String xmlDescription)
+                       throws Exception;
+
+       public native void StartSSMCore() throws Exception;
+
+       public native void StopSSMCore() throws Exception;
+
+       public native void TerminateSSMCore() throws Exception;
+
+       public native QueryEngine CreateQueryEngine() throws Exception;
+
        public native int ReleaseQueryEngine(QueryEngine queryEngine);
-       
+
        // QueryEngine
-       public native int ExecuteContextQuery(int pQueryEngineInstance, String contextQuery);
-       public native void RegisterQueryEvent(int pQueryEngineInstance, IQueryEngineEvent queryEngineEvent);
-       public native void KillContextQuery(int pQueryEngineInstance, int cqid);        
-               
-       //public native void UnregiterQueryEvent(int pQueryEngineInstance, IQueryEngineEvent queryEngineEvent);
-
-       //IModelData
-       public native int GetDataId(int pIModelDataInstance);   
+       public native int ExecuteContextQuery(int pQueryEngineInstance,
+                       String contextQuery) throws Exception;
+
+       public native void RegisterQueryEvent(int pQueryEngineInstance,
+                       IQueryEngineEvent queryEngineEvent);
+
+       public native void KillContextQuery(int pQueryEngineInstance, int cqid)
+                       throws Exception;
+
+       // public native void UnregiterQueryEvent(int pQueryEngineInstance,
+       // IQueryEngineEvent queryEngineEvent);
+
+       // IModelData
+       public native int GetDataId(int pIModelDataInstance);
+
        public native int GetPropertyCount(int pIModelDataInstance);
-       public native String GetPropertyName(int pIModelDataInstance, int propertyIndex);
-       public native String GetPropertyValue(int pIModelDataInstance, int propertyIndex);
-               
-       //IDataReader
+
+       public native String GetPropertyName(int pIModelDataInstance,
+                       int propertyIndex);
+
+       public native String GetPropertyValue(int pIModelDataInstance,
+                       int propertyIndex);
+
+       // IDataReader
        public native List<String> GetAffectedModels(int pDataReaderInstance);
-       public native int GetModelDataCount(int pDataReaderInstance, String modelName);
-       public native ModelData GetModelData(int pDataReaderInstance, String modelName, int dataIndex);
-       
+
+       public native int GetModelDataCount(int pDataReaderInstance,
+                       String modelName) throws Exception;
+
+       public native ModelData GetModelData(int pDataReaderInstance,
+                       String modelName, int dataIndex) throws Exception;
+
        public native void RegisterReportReceiver(IReportReceiver reportReceiver);
 }
\ No newline at end of file
index c963a25..5d552b2 100644 (file)
@@ -5,24 +5,24 @@ import java.util.List;
 public class DataReader {
 
        private int pDataReaderInstance;
-       
-       public DataReader(int dataReaderInstance)
-       {
+
+       public DataReader(int dataReaderInstance) {
                pDataReaderInstance = dataReaderInstance;
        }
-       
-       public List<String> GetAffectedModels()
-       {
-               return CoreController.getInstance().GetAffectedModels(pDataReaderInstance);
+
+       public List<String> GetAffectedModels() {
+               return CoreController.getInstance().GetAffectedModels(
+                               pDataReaderInstance);
        }
-       
-       public int GetModelDataCount(String modelName)
-       {
-               return CoreController.getInstance().GetModelDataCount(pDataReaderInstance, modelName);
+
+       public int GetModelDataCount(String modelName) throws Exception {
+               return CoreController.getInstance().GetModelDataCount(
+                               pDataReaderInstance, modelName);
        }
-       
+
        public ModelData GetModelData(String modelName, int dataIndex)
-       {
-               return CoreController.getInstance().GetModelData(pDataReaderInstance, modelName, dataIndex);
+                       throws Exception {
+               return CoreController.getInstance().GetModelData(pDataReaderInstance,
+                               modelName, dataIndex);
        }
 }
index e14adf7..9fc66c8 100644 (file)
@@ -2,4 +2,4 @@ package org.iotivity.service.ssm;
 
 public abstract class IReportReceiver {
        public abstract void OnMessageReceived(String tag, String msg);
-}
+}
\ No newline at end of file
index c43e1df..885d797 100644 (file)
@@ -1,31 +1,29 @@
 package org.iotivity.service.ssm;
 
 public class ModelData {
-       
+
        private int pIModelDataInstance;
-       
-       public ModelData(int iModelDataInstance)
-       {
+
+       public ModelData(int iModelDataInstance) {
                pIModelDataInstance = iModelDataInstance;
        }
-       
-       public int GetDataId()
-       {
+
+       public int GetDataId() {
                return CoreController.getInstance().GetDataId(pIModelDataInstance);
        }
-       
-       public int GetPropertyCount()
-       {
-               return CoreController.getInstance().GetPropertyCount(pIModelDataInstance);
+
+       public int GetPropertyCount() {
+               return CoreController.getInstance().GetPropertyCount(
+                               pIModelDataInstance);
        }
-       
-       public String GetPropertyName(int propertyIndex)
-       {
-               return CoreController.getInstance().GetPropertyName(pIModelDataInstance, propertyIndex);
+
+       public String GetPropertyName(int propertyIndex) {
+               return CoreController.getInstance().GetPropertyName(
+                               pIModelDataInstance, propertyIndex);
        }
-       
-       public String GetPropertyValue(int propertyIndex)
-       {
-               return CoreController.getInstance().GetPropertyValue(pIModelDataInstance, propertyIndex);
+
+       public String GetPropertyValue(int propertyIndex) {
+               return CoreController.getInstance().GetPropertyValue(
+                               pIModelDataInstance, propertyIndex);
        }
 }
\ No newline at end of file
index a14e640..050f99d 100644 (file)
@@ -1,31 +1,28 @@
 package org.iotivity.service.ssm;
 
-public class QueryEngine
-{
+public class QueryEngine {
        private int pQueryEngineInstance;
-       
-       public QueryEngine(int queryEngineInstance)
-       {
+
+       public QueryEngine(int queryEngineInstance) {
                pQueryEngineInstance = queryEngineInstance;
        }
-       
-       public int GetQueryEngineInstance()
-       {
+
+       public int GetQueryEngineInstance() {
                return pQueryEngineInstance;
        }
-       
-       public int ExecuteContextQuery(String contextQuery)
-       {
-               return CoreController.getInstance().ExecuteContextQuery(pQueryEngineInstance, contextQuery);
+
+       public int ExecuteContextQuery(String contextQuery) throws Exception {
+               return CoreController.getInstance().ExecuteContextQuery(
+                               pQueryEngineInstance, contextQuery);
        }
-       
-       public void RegisterQueryEvent(IQueryEngineEvent queryEngineEvent)
-       {
-               CoreController.getInstance().RegisterQueryEvent(pQueryEngineInstance, queryEngineEvent);
+
+       public void RegisterQueryEvent(IQueryEngineEvent queryEngineEvent) {
+               CoreController.getInstance().RegisterQueryEvent(pQueryEngineInstance,
+                               queryEngineEvent);
        }
-       
-       public void KillContextQuery(int cqid)
-       {
-               CoreController.getInstance().KillContextQuery(pQueryEngineInstance, cqid);
+
+       public void KillContextQuery(int cqid) throws Exception {
+               CoreController.getInstance().KillContextQuery(pQueryEngineInstance,
+                               cqid);
        }
 }
\ No newline at end of file
index 914f8c2..904febc 100644 (file)
@@ -8,65 +8,54 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
 public class SSMInterface {
-       private class QueryEngineEventReceiver extends IQueryEngineEvent
-       {
-        private Lock                                                           mMtxListener = new ReentrantLock();
-               private Map<Integer, IQueryEngineEvent>         mMapListener = new HashMap<Integer, IQueryEngineEvent>();
-               
-               public void OnQueryEngineEvent(int cqid, DataReader result)
-               {
+       private class QueryEngineEventReceiver extends IQueryEngineEvent {
+               private Lock mMtxListener = new ReentrantLock();
+               private Map<Integer, IQueryEngineEvent> mMapListener = new HashMap<Integer, IQueryEngineEvent>();
+
+               public void OnQueryEngineEvent(int cqid, DataReader result) {
                        mMtxListener.lock();
 
                        mMapListener.get(cqid).OnQueryEngineEvent(cqid, result);
-            
+
                        mMtxListener.unlock();
                }
-               void lockListener()
-        {
+
+               void lockListener() {
                        mMtxListener.lock();
-        }
-
-        void unlockListener()
-        {
-               mMtxListener.unlock();
-        }
-
-        void addListener(int cqid, IQueryEngineEvent engineEvent)
-        {
-               mMapListener.put(cqid, engineEvent);
-        }
-
-        void removeListener(int cqid)
-        {
-               mMapListener.remove(cqid);
-        }
+               }
+
+               void unlockListener() {
+                       mMtxListener.unlock();
+               }
+
+               void addListener(int cqid, IQueryEngineEvent engineEvent) {
+                       mMapListener.put(cqid, engineEvent);
+               }
+
+               void removeListener(int cqid) {
+                       mMapListener.remove(cqid);
+               }
        };
-       
-       private CoreController                          mSSMCore = null;
-       private QueryEngine                                     mQueryEngine = null;
-       private QueryEngineEventReceiver        mQueryEngineEventListenerReceiver = new QueryEngineEventReceiver();
-       private List<Integer>                           mRunningCQLs = new ArrayList<Integer>();
-       
-       public SSMInterface()
-       {               
+
+       private CoreController mSSMCore = null;
+       private QueryEngine mQueryEngine = null;
+       private QueryEngineEventReceiver mQueryEngineEventListenerReceiver = new QueryEngineEventReceiver();
+       private List<Integer> mRunningCQLs = new ArrayList<Integer>();
+
+       public SSMInterface() {
        }
-       
-       public void startSSMCore(String initConfig) throws Exception
-       {
+
+       public void startSSMCore(String initConfig) throws Exception {
                mSSMCore = CoreController.getInstance();
-        mSSMCore.InitializeSSMCore(initConfig);
-        mSSMCore.StartSSMCore();
-        
-        mQueryEngine = mSSMCore.CreateQueryEngine();
-        
-        if(mQueryEngine == null)
-               throw new Exception("Create Query Engine failed");
-        
-        mQueryEngine.RegisterQueryEvent(mQueryEngineEventListenerReceiver);
+               mSSMCore.InitializeSSMCore(initConfig);
+               mSSMCore.StartSSMCore();
+
+               mQueryEngine = mSSMCore.CreateQueryEngine();
+
+               mQueryEngine.RegisterQueryEvent(mQueryEngineEventListenerReceiver);
        }
-       
-       public void stopSSMCore()
-       {
+
+       public void stopSSMCore() throws Exception {
                mQueryEngine.RegisterQueryEvent(null);
                mSSMCore.ReleaseQueryEngine(mQueryEngine);
                mQueryEngineEventListenerReceiver = null;
@@ -74,26 +63,35 @@ public class SSMInterface {
                mSSMCore.StopSSMCore();
                mSSMCore.TerminateSSMCore();
        }
-       
+
        public int registerQuery(String contextQuery, IQueryEngineEvent listener)
-       {
-               int cqid;
-               
-               mQueryEngineEventListenerReceiver.lockListener();
-               cqid = mQueryEngine.ExecuteContextQuery(contextQuery);
-               mQueryEngineEventListenerReceiver.addListener(cqid, listener);
-               mRunningCQLs.add(cqid);
-               mQueryEngineEventListenerReceiver.unlockListener();
-               
+                       throws Exception {
+               int cqid = 0;
+
+               try {
+                       mQueryEngineEventListenerReceiver.lockListener();
+                       cqid = mQueryEngine.ExecuteContextQuery(contextQuery);
+                       mQueryEngineEventListenerReceiver.addListener(cqid, listener);
+                       mRunningCQLs.add(cqid);
+               } catch (Exception e) {
+                       throw e;
+               } finally {
+                       mQueryEngineEventListenerReceiver.unlockListener();
+               }
+
                return cqid;
        }
-       
-       public void unregisterQuery(int cqid)
-       {
-               mQueryEngineEventListenerReceiver.lockListener();
-               mQueryEngine.KillContextQuery(cqid);
-               mQueryEngineEventListenerReceiver.removeListener(cqid);
-               mRunningCQLs.remove(cqid);
-               mQueryEngineEventListenerReceiver.unlockListener();
+
+       public void unregisterQuery(int cqid) throws Exception {
+               try {
+                       mQueryEngineEventListenerReceiver.lockListener();
+                       mQueryEngine.KillContextQuery(cqid);
+                       mQueryEngineEventListenerReceiver.removeListener(cqid);
+                       mRunningCQLs.remove((Object) cqid);
+               } catch (Exception e) {
+                       throw e;
+               } finally {
+                       mQueryEngineEventListenerReceiver.unlockListener();
+               }
        }
 }
\ No newline at end of file
index dbb3c10..609d1ef 100644 (file)
@@ -9,7 +9,11 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.UUID;
 
-import org.iotivity.service.ssm.*;
+import org.iotivity.service.ssm.DataReader;
+import org.iotivity.service.ssm.IQueryEngineEvent;
+import org.iotivity.service.ssm.ModelData;
+import org.iotivity.service.ssm.R;
+import org.iotivity.service.ssm.SSMInterface;
 
 import android.app.Activity;
 import android.content.Context;
@@ -20,264 +24,259 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
-//import android.view.Menu;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
 public class MainActivity extends Activity {
-       
+
        private SSMInterface SoftSensorManager = null;
-       private List<Integer>   mRunningQueries = new ArrayList<Integer>();
-               
-       private IQueryEngineEvent mQueryEngineEventListener = new IQueryEngineEvent()
-       {
+       private ArrayList<Integer> mRunningQueries = new ArrayList<Integer>();
+
+       private IQueryEngineEvent mQueryEngineEventListener = new IQueryEngineEvent() {
                @Override
-               public void OnQueryEngineEvent(int cqid, DataReader result)
-               {
+               public void OnQueryEngineEvent(int cqid, DataReader result) {
                        Log.i("[SSM]", "event received! cqid=" + cqid);
                        PrintLog("Event from cqid " + cqid + " has received");
-                                               
+
                        List<String> models = result.GetAffectedModels();
-                       
-                       for(String modelName : models)
-                       {
+
+                       for (String modelName : models) {
                                PrintLog("Model: " + modelName);
-                               int dataCount = result.GetModelDataCount(modelName);
-                               for(int i=0; i < dataCount; i++)
-                               {
-                                       ModelData modelData = 
-                                                       result.GetModelData(modelName, i);
-                                       for(int j=0; j < modelData.GetPropertyCount(); j++)
-                                       {
-                                               PrintLog("Name: " + modelData.GetPropertyName(j) + 
-                                                               " Value: " + modelData.GetPropertyValue(j));
+                               try {
+                                       int dataCount = result.GetModelDataCount(modelName);
+                                       for (int i = 0; i < dataCount; i++) {
+                                               ModelData modelData = result.GetModelData(modelName, i);
+                                               for (int j = 0; j < modelData.GetPropertyCount(); j++) {
+                                                       PrintLog("Name: " + modelData.GetPropertyName(j)
+                                                                       + " Value: "
+                                                                       + modelData.GetPropertyValue(j));
+                                               }
                                        }
+                               } catch (Exception e) {
+                                       e.printStackTrace();
+                                       PrintLog("Receiving Event from cqid " + cqid + " failed");
                                }
                        }
                }
        };
-       
-       void PrintLog(String log)
-       {
+
+       void PrintLog(String log) {
                Message msg = new Message();
                Bundle data = new Bundle();
                data.putString("Log", log);
                msg.setData(data);
                logHandler.sendMessage(msg);
        }
-       
-       private Handler logHandler = new Handler()
-       {
+
+       private Handler logHandler = new Handler() {
                @Override
-               public void handleMessage(Message msg)
-               {
+               public void handleMessage(Message msg) {
                        tvLog.append(msg.getData().getString("Log") + "\n");
                        svLog.fullScroll(ScrollView.FOCUS_DOWN);
                }
        };
-       
-       private TextView        tvLog = null;
-       private ScrollView      svLog = null;
-       private EditText        edtQuery = null;
-       private EditText        edtUnregisterQuery = null;
-    
-    View.OnClickListener clickHandler = new View.OnClickListener() {
-               
-               public void onClick(View v)
-               {
-                       switch(v.getId())
-                       {
+
+       private TextView tvLog = null;
+       private ScrollView svLog = null;
+       private EditText edtQuery = null;
+       private EditText edtUnregisterQuery = null;
+
+       View.OnClickListener clickHandler = new View.OnClickListener() {
+
+               public void onClick(View v) {
+                       switch (v.getId()) {
                        case R.id.btnRegisterQuery:
-                               int cqid = SoftSensorManager.registerQuery(edtQuery.getText().toString(), mQueryEngineEventListener);
-                               mRunningQueries.add(cqid);
-                               PrintLog(edtQuery.getText().toString() + " has executed, cqid=" + cqid);
+                               int cqid = 0;
+                               try {
+                                       cqid = SoftSensorManager.registerQuery(edtQuery.getText()
+                                                       .toString(), mQueryEngineEventListener);
+                                       mRunningQueries.add(cqid);
+                                       PrintLog(edtQuery.getText().toString()
+                                                       + " has executed, cqid=" + cqid);
+                               } catch (Exception e) {
+                                       PrintLog("Register Query failed");
+                               }
+
                                break;
-                               
+
                        case R.id.btnUnregisterQuery:
                                Iterator<Integer> it = mRunningQueries.iterator();
-                               while(it.hasNext())
-                               {
-                                       if(it.next() == Integer.parseInt(edtUnregisterQuery.getText().toString()))
-                                       {
-                                               SoftSensorManager.unregisterQuery(Integer.parseInt(edtUnregisterQuery.getText().toString()));
-                                               PrintLog("Unregister Query has executed, cqid=" + Integer.parseInt(edtUnregisterQuery.getText().toString()));
-                                               it.remove();
+
+                               while (it.hasNext()) {
+                                       if (it.next() == Integer.parseInt(edtUnregisterQuery
+                                                       .getText().toString())) {
+                                               try {
+                                                       SoftSensorManager.unregisterQuery(Integer
+                                                                       .parseInt(edtUnregisterQuery.getText()
+                                                                                       .toString()));
+                                                       PrintLog("Unregister Query has executed, cqid="
+                                                                       + Integer.parseInt(edtUnregisterQuery
+                                                                                       .getText().toString()));
+                                                       it.remove();
+                                               } catch (NumberFormatException e) {
+                                                       PrintLog("Invalid Query Id");
+                                               } catch (Exception e) {
+                                                       PrintLog("UnRegister Query failed");
+                                               }
+                                               break;
                                        }
                                }
                                break;
-                               
+
                        case R.id.btPlus:
-                               int queryNum = Integer.parseInt(edtUnregisterQuery.getText().toString()) + 1;
+                               int queryNum = Integer.parseInt(edtUnregisterQuery.getText()
+                                               .toString()) + 1;
                                edtUnregisterQuery.setText(queryNum + "");
                                break;
-                               
+
                        case R.id.btMinus:
-                               queryNum = Integer.parseInt(edtUnregisterQuery.getText().toString()) - 1;
+                               queryNum = Integer.parseInt(edtUnregisterQuery.getText()
+                                               .toString()) - 1;
                                edtUnregisterQuery.setText(queryNum + "");
                                break;
                        }
                }
        };
-       
-        View.OnClickListener textAddHandler = new View.OnClickListener() {
-                       
-                       public void onClick(View v)
-                       {
-                               switch(v.getId())
-                               {
-                               case R.id.btClear :
-                                       edtQuery.setText("");
-                                       break;
-                               
-                               case R.id.btLogClear :
-                                       tvLog.setText("");
-                                       break;
-                               
-                               case R.id.btFullDevice:
-                                       edtQuery.setText("subscribe Device if Device.dataId != 0");
-                                       break;
-                               
-                               case R.id.btDiscomfortIndex:
-                                       edtQuery.setText("subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0");
-                                       break;
-                               }
+
+       View.OnClickListener textAddHandler = new View.OnClickListener() {
+
+               public void onClick(View v) {
+                       switch (v.getId()) {
+                       case R.id.btClear:
+                               edtQuery.setText("");
+                               break;
+
+                       case R.id.btLogClear:
+                               tvLog.setText("");
+                               break;
+
+                       case R.id.btFullDevice:
+                               edtQuery.setText("subscribe Device if Device.dataId != 0");
+                               break;
+
+                       case R.id.btDiscomfortIndex:
+                               edtQuery.setText("subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0");
+                               break;
                        }
-               };
-               
-    @Override
-    public void onCreate(Bundle savedInstanceState) 
-    {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-        
-        tvLog = (TextView)findViewById(R.id.txtLog);
-        svLog = (ScrollView)findViewById(R.id.sclLog);
-        edtQuery = (EditText)findViewById(R.id.editQuery);
-        edtUnregisterQuery = (EditText)findViewById(R.id.editUnregisterQuery);
-        
-        findViewById(R.id.btnRegisterQuery).setOnClickListener(clickHandler);     
-        findViewById(R.id.btnUnregisterQuery).setOnClickListener(clickHandler);      
-        findViewById(R.id.btFullDevice).setOnClickListener(textAddHandler);       
-        findViewById(R.id.btDiscomfortIndex).setOnClickListener(textAddHandler);
-        findViewById(R.id.btPlus).setOnClickListener(clickHandler);        
-        findViewById(R.id.btMinus).setOnClickListener(clickHandler);
-        findViewById(R.id.btClear).setOnClickListener(textAddHandler);
-        findViewById(R.id.btLogClear).setOnClickListener(textAddHandler);
-        
+               }
+       };
+
+       @Override
+       public void onCreate(Bundle savedInstanceState) {
+               super.onCreate(savedInstanceState);
+               setContentView(R.layout.activity_main);
+
+               tvLog = (TextView) findViewById(R.id.txtLog);
+               svLog = (ScrollView) findViewById(R.id.sclLog);
+               edtQuery = (EditText) findViewById(R.id.editQuery);
+               edtUnregisterQuery = (EditText) findViewById(R.id.editUnregisterQuery);
+
+               findViewById(R.id.btnRegisterQuery).setOnClickListener(clickHandler);
+               findViewById(R.id.btnUnregisterQuery).setOnClickListener(clickHandler);
+               findViewById(R.id.btFullDevice).setOnClickListener(textAddHandler);
+               findViewById(R.id.btDiscomfortIndex).setOnClickListener(textAddHandler);
+               findViewById(R.id.btPlus).setOnClickListener(clickHandler);
+               findViewById(R.id.btMinus).setOnClickListener(clickHandler);
+               findViewById(R.id.btClear).setOnClickListener(textAddHandler);
+               findViewById(R.id.btLogClear).setOnClickListener(textAddHandler);
+
                copyFiles("lib");
-        
-        SoftSensorManager = new SSMInterface();
-        
-        String initConfig = "<SSMCore>" +
-                       "<Device>" +
-                               "<UDN>"+getUUID()+"</UDN>" +
-                               "<Name>MyMobile</Name>" +
-                               "<Type>Mobile</Type>" +
-                               "</Device>" +
-                               "<Config>" +
-                               "<SoftSensorRepository>/data/data/" +  getPackageName() + "/files/</SoftSensorRepository>" +
-                               "<SoftSensorDescription>/data/data/" + getPackageName() + "/files/SoftSensorDescription.xml</SoftSensorDescription>" + 
-                               "</Config>" +
-                               "</SSMCore>";
-        
-        try 
-        {
+
+               SoftSensorManager = new SSMInterface();
+
+               String initConfig = "<SSMCore>" + "<Device>" + "<UDN>" + getUUID()
+                               + "</UDN>" + "<Name>MyMobile</Name>" + "<Type>Mobile</Type>"
+                               + "</Device>" + "<Config>"
+                               + "<SoftSensorRepository>/data/data/" + getPackageName()
+                               + "/files/</SoftSensorRepository>"
+                               + "<SoftSensorDescription>/data/data/" + getPackageName()
+                               + "/files/SoftSensorDescription.xml</SoftSensorDescription>"
+                               + "</Config>" + "</SSMCore>";
+
+               try {
                        SoftSensorManager.startSSMCore(initConfig);
-               } 
-        catch (Exception e) 
-        {
-                       // TODO Auto-generated catch block
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+       }
+
+       @Override
+       protected void onDestroy() {
+               try {
+                       SoftSensorManager.stopSSMCore();
+               } catch (Exception e) {
                        e.printStackTrace();
                }
-    }
-      
-    @Override
-    protected void onDestroy()
-    {
-       SoftSensorManager.stopSSMCore();
-       
-       super.onDestroy();
-    }
-    
-       private String getUUID() 
-       {
-               String  PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
-               SharedPreferences sharedPrefs = getSharedPreferences(PREF_UNIQUE_ID, Context.MODE_PRIVATE);
+
+               super.onDestroy();
+       }
+
+       private String getUUID() {
+               String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
+               SharedPreferences sharedPrefs = getSharedPreferences(PREF_UNIQUE_ID,
+                               Context.MODE_PRIVATE);
                String uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
-           
-               if (uniqueID == null) 
-               {
-              uniqueID = UUID.randomUUID().toString();
-              Editor editor = sharedPrefs.edit();
-              editor.putString(PREF_UNIQUE_ID, uniqueID);
-              editor.commit();
-           }
-           
+
+               if (uniqueID == null) {
+                       uniqueID = UUID.randomUUID().toString();
+                       Editor editor = sharedPrefs.edit();
+                       editor.putString(PREF_UNIQUE_ID, uniqueID);
+                       editor.commit();
+               }
+
                return uniqueID;
        }
-               
-       private void copyFiles(String path)
-    {           
+
+       private void copyFiles(String path) {
                AssetManager assetManager = getAssets();
-           String assets[] = null;
-           
-           try 
-           {
-               assets = assetManager.list(path);
-               
-               if (assets.length == 0) 
-               {                       
-                   copyFile(path);
-               } 
-               else 
-               {
-                   String fullPath = "/data/data/" + this.getClass().getPackage().toString() + "/" + path;
-                   File dir = new File(fullPath);
-                   
-                   if (!dir.exists())
-                       dir.mkdir();
-                   for (int i = 0; i < assets.length; ++i) 
-                   {
-                       copyFiles(path + "/" + assets[i]);
-                   }
-               }
-           }
-           catch (IOException ex) 
-           {   
-               Log.e("tag", "I/O Exception", ex);
-           }
+               String assets[] = null;
+
+               try {
+                       assets = assetManager.list(path);
+
+                       if (assets.length == 0) {
+                               copyFile(path);
+                       } else {
+                               String fullPath = "/data/data/"
+                                               + this.getClass().getPackage().toString() + "/" + path;
+                               File dir = new File(fullPath);
+
+                               if (!dir.exists())
+                                       dir.mkdir();
+                               for (int i = 0; i < assets.length; ++i) {
+                                       copyFiles(path + "/" + assets[i]);
+                               }
+                       }
+               } catch (IOException ex) {
+                       Log.e("tag", "I/O Exception", ex);
+               }
        }
-           
-       private void copyFile(String filename) 
-       {
-           AssetManager assetManager = getAssets();
-           InputStream in = null;
-           OutputStream out = null;
-           
-           try 
-           {
-               in = assetManager.open(filename);
-               out = openFileOutput(filename.split("/")[1], Context.MODE_PRIVATE);
-              
-               byte[] buffer = new byte[1024];
-               int read;
-
-               while ((read = in.read(buffer)) != -1) 
-               {
-                   out.write(buffer, 0, read);
-               }
-               
-               in.close();
-               in = null;
-               out.flush();
-               out.close();
-               out = null;
-           }
-           catch (Exception e)
-           {
-               Log.e("tag", e.getMessage());
-           }
+
+       private void copyFile(String filename) {
+               AssetManager assetManager = getAssets();
+               InputStream in = null;
+               OutputStream out = null;
+
+               try {
+                       in = assetManager.open(filename);
+                       out = openFileOutput(filename.split("/")[1], Context.MODE_PRIVATE);
+
+                       byte[] buffer = new byte[1024];
+                       int read;
+
+                       while ((read = in.read(buffer)) != -1) {
+                               out.write(buffer, 0, read);
+                       }
+
+                       in.close();
+                       in = null;
+                       out.flush();
+                       out.close();
+                       out = null;
+               } catch (Exception e) {
+                       Log.e("tag", e.getMessage());
+               }
        }
 }