Change the name of soft sensor sample bundle
[platform/upstream/iotivity.git] / service / resource-manipulation / modules / resourceContainer / examples / SoftSensorSampleBundle / src / SoftSensorBundleActivator.cpp
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 #include "SoftSensorBundleActivator.h"
22 #include "DiscomfortIndexSensorResource.h"
23
24 SoftSensorBundleActivator *bundle;
25
26 SoftSensorBundleActivator::SoftSensorBundleActivator()
27 {
28 }
29
30 SoftSensorBundleActivator::~SoftSensorBundleActivator()
31 {
32 }
33
34 void SoftSensorBundleActivator::activateBundle(ResourceContainerBundleAPI *resourceContainer,
35         std::string bundleId)
36 {
37     std::cout << "SoftSensorSampleBundle::activateBundle called" << std::endl;
38
39     m_pResourceContainer = resourceContainer;
40     m_bundleId = bundleId;
41
42     vector<resourceInfo> resourceConfig;
43
44     resourceContainer->getResourceConfiguration(m_bundleId, &resourceConfig);
45
46     for (vector<resourceInfo>::iterator itor = resourceConfig.begin();
47          itor != resourceConfig.end(); itor++)
48     {
49         createResource(*itor);
50     }
51 }
52
53 void SoftSensorBundleActivator::deactivateBundle()
54 {
55     std::cout << "SoftSensorSampleBundle::deactivateBundle called" << std::endl;
56
57     for (std::vector<BundleResource *>::iterator itor = m_vecResources.begin();
58          itor != m_vecResources.end(); itor++)
59     {
60         destroyResource(*itor);
61     }
62 }
63
64 void SoftSensorBundleActivator::createResource(resourceInfo resourceInfo)
65 {
66     std::cout << "SoftSensorSampleBundle::createResource called" << std::endl;
67
68     static int discomfortIndexSensorCount = 0;
69
70     std::vector< std::map< std::string, std::string > >::iterator itor_vec;
71     std::map< std::string, std::string >::iterator itor_map;
72     std::vector <std::string> inputs;
73
74     for (itor_vec = resourceInfo.resourceProperty["input"].begin();
75          itor_vec != resourceInfo.resourceProperty["input"].end(); itor_vec++)
76     {
77         for (itor_map = (*itor_vec).begin(); itor_map != (*itor_vec).end(); itor_map++)
78         {
79             inputs.push_back(itor_map->second);
80         }
81     }
82     std::cout << "SoftSensorSampleBundle::creating new discomfort index sensor " << std::endl;
83     // create DISensor resource
84     DiscomfortIndexSensorResource *newResource = new DiscomfortIndexSensorResource(inputs);
85
86     newResource->m_uri = "/softsensor/discomfortIndex/" + std::to_string(
87                              discomfortIndexSensorCount++);
88     newResource->m_resourceType = resourceInfo.resourceType;
89     newResource->m_mapResourceProperty = resourceInfo.resourceProperty;
90
91     // setting input Attributes count
92     newResource->inputCount = newResource->m_mapResourceProperty["input"].size();
93
94     m_pResourceContainer->registerResource(newResource);
95     m_vecResources.push_back(newResource);
96 }
97
98 void SoftSensorBundleActivator::destroyResource(BundleResource *resource)
99 {
100     std::cout << "SoftSensorSampleBundle::destroyResource called" << std::endl;
101
102     std::vector <BundleResource *>::iterator itor;
103
104     itor = std::find(m_vecResources.begin(), m_vecResources.end(), resource);
105
106     if (itor != m_vecResources.end())
107         m_vecResources.erase(itor);
108
109     // check
110     //delete resource;
111
112     m_pResourceContainer->unregisterResource(resource);
113 }
114
115 extern "C" void externalActivateBundle(ResourceContainerBundleAPI *resourceContainer,
116                                        std::string bundleId)
117 {
118     bundle = new SoftSensorBundleActivator();
119     bundle->activateBundle(resourceContainer, bundleId);
120 }
121
122 extern "C" void externalDeactivateBundle()
123 {
124     if (!bundle)
125     {
126         bundle->deactivateBundle();
127     }
128 }