Tizen 2.1 base
[platform/framework/native/app-service.git] / inc / FApp_ConditionHandler.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file         FApp_ConditionHandler.h
20  * @brief       This is the header file of the _ConditionHandler class.
21  *
22  * This header file contains the declarations of the _ConditionManagerService class.
23  */
24
25 #ifndef _FAPP_INTERNAL_CONDITION_HANDLER_H_
26 #define _FAPP_INTERNAL_CONDITION_HANDLER_H_
27
28
29 #include <FBase.h>
30 #include <FBaseCol.h>
31 #include <FAppTypes.h>
32
33 #include <FApp_AppLaunchConditionHandlerBase.h>
34 #include "FApp_StringKeyHashMapUtil.h"
35
36 namespace Tizen { namespace Base { namespace Runtime { class Library; }}}
37 namespace Tizen { namespace App  {
38
39
40 class _ConditionHandler;
41
42 /**
43  * @class               _ConditionPlugInInfo
44  * @brief               Contains plugin info of registry.(ConditionHandlerPlugins.ini)
45  * @since 2.1
46  */
47 class _ConditionPlugInInfo :
48         public Tizen::Base::Object
49 {
50 public:
51         const Tizen::Base::String typeString;
52         const Tizen::Base::String name; // or fileName
53         const _ConditionHandler* pHandler;
54 public:
55         _ConditionPlugInInfo(const Tizen::Base::String _typeString, const Tizen::Base::String _name, const _ConditionHandler* _pHandler)
56         :typeString(_typeString), name(_name),pHandler(_pHandler) {}
57
58 };      //_ConditionPlugInInfo
59
60 typedef _AppLaunchConditionHandlerBase* (*create_plugin)(void);
61 typedef void (*destroy_plugin)(_AppLaunchConditionHandlerBase* p);
62
63 /**
64  * @class               _ConditionHandler
65  * @brief               Manages each conditional operations and handler instance.
66  * @since 2.1
67  */
68 class _ConditionHandler
69         : public Tizen::Base::Object
70         , public Tizen::App::_IAppLaunchConditionEventListener
71         , virtual public Tizen::Base::Runtime::IEventListener
72 {
73         typedef Tizen::Base::Collection::MultiHashMapT<Tizen::Base::String, _AppLaunchCondition*> _AppLaunchConditions;
74 //      typedef Tizen::Base::Collection::IMapEnumeratorT <Tizen::Base::String, _AppLaunchCondition*> _AppLaunchConditionEnumerator;
75         typedef Tizen::Base::Collection::IEnumeratorT <_AppLaunchCondition*> _AppLaunchConditionEnumerator;
76
77 public :
78         _ConditionHandler(const Tizen::Base::String& fileName,  const Tizen::Base::String& typesString);
79         virtual ~_ConditionHandler(void);
80         result Construct(void);
81         result AddCondition( _AppLaunchCondition& operation);
82         result RemoveCondition(const Tizen::Base::String& packageId, const Tizen::Base::String* pExecutableName, const Tizen::Base::String* pCondition);
83         _AppLaunchCondition* Find(const Tizen::Base::String& packageId, const Tizen::Base::String *pCondition);
84         result CreateUniqueId(Tizen::Base::String& uniqueId);
85         bool HasCondition(const Tizen::Base::String& packageId, const Tizen::Base::String& executableName, const Tizen::Base::String *pCondition) const ;
86         bool CanHandleType(const Tizen::Base::String& type ) const;
87
88         void Dump(void) const;
89
90 private:
91         _AppLaunchCondition* FindItemBySectionName(const Tizen::Base::String& sectionName) const;
92         virtual void OnAppLaunchConditionMet(const _AppLaunchCondition& operation);
93         result LoadPlugin(void);
94         _ConditionHandler(const _ConditionHandler& value);
95         _ConditionHandler& operator =(const _ConditionHandler& source);
96
97 private:
98         Tizen::Base::String __typesString;
99         Tizen::Base::String __pluginFileName;
100         _AppLaunchConditionHandlerBase* __pPluginInstance;
101         _AppLaunchConditions __conditionalOperations;
102         _StringComparerT __strComparer;
103         _StringHashMapProviderT __strHashMapProvider;
104
105         Tizen::Base::Runtime::Library* __pLib;
106         destroy_plugin __pfDestroyPlugin;
107 };      //_ConditionHandler
108
109
110 /**
111  * @class               _ConditionRegistryHelper
112  * @brief
113  * @since 2.1
114  */
115
116 class _ConditionRegistryHelper
117 {
118 public:
119                 static result AddToRegistry(const Tizen::Base::String& sectionName, const Tizen::Base::String& packageId, const Tizen::Base::String& executableName, const Tizen::Base::String& condition, const Tizen::Base::Collection::IList *pArgs);
120                 static result RemoveFromRegistry(const Tizen::Base::String& sectionName);
121                 static result GetAllParamsN(const Tizen::Base::Collection::IMap& map, Tizen::Base::String& packageId, Tizen::Base::String& executableName, Tizen::Base::String& condition, Tizen::Base::Collection::ArrayList*& pArgs);
122 };      //_ConditionRegistryHelper
123
124
125 }} //Tizen::App
126 #endif // _FAPP_INTERNAL_CONDITION_HANDLER_H_