~ubuntu-branches/ubuntu/saucy/opendrim-lmp-simpleidentitymanagement/saucy

« back to all changes in this revision

Viewing changes to OpenDRIM_Group/OpenDRIM_GroupProvider.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Guillaume BOTTEX
  • Date: 2010-06-21 15:54:00 UTC
  • Revision ID: james.westby@ubuntu.com-20100621155400-myesv5hd2f3s8x9y
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*################################################################################
 
2
# Linux Management Providers (LMP), Simple Identity Management provider package
 
3
# Copyright (C) 2007 Frederic Desmons, ETRI <desmons@etri.re.kr, desmons_frederic@yahoo.fr>
 
4
 
5
# This program is being developed under the "OpenDRIM" project.
 
6
# The "OpenDRIM" project web page: http://opendrim.sourceforge.net
 
7
# The "OpenDRIM" project mailing list: opendrim@googlegroups.com
 
8
 
9
# This program is free software; you can redistribute it and/or
 
10
# modify it under the terms of the GNU General Public License
 
11
# as published by the Free Software Foundation; version 2
 
12
# of the License.
 
13
 
14
# This program is distributed in the hope that it will be useful,
 
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
# GNU General Public License for more details.
 
18
 
19
# You should have received a copy of the GNU General Public License
 
20
# along with this program; if not, write to the Free Software
 
21
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
22
#################################################################################
 
23
 
 
24
#################################################################################
 
25
# To contributors, please leave your contact information in this section
 
26
# AND comment your changes in the source code.
 
27
 
28
# Modified by 2009 Khahramon NURIDDINOV, TUIT <qahramon0786@gmail.com>
 
29
# Modified by 2009 Guillaume BOTTEX, ETRI <guillaumebottex@etri.re.kr>
 
30
################################################################################*/
 
31
 
 
32
#include "cmpiOpenDRIM_Group.h"
 
33
#include "OpenDRIM_GroupAccess.h"
 
34
 
 
35
static const CMPIBroker * _broker;
 
36
 
 
37
#ifdef CMPI_VER_100
 
38
#define Simple_Identity_Management_OpenDRIM_GroupProviderSetInstance Simple_Identity_Management_OpenDRIM_GroupProviderModifyInstance
 
39
#endif
 
40
 
 
41
int Simple_Identity_Management_OpenDRIM_Group_init(const CMPIBroker* broker);
 
42
 
 
43
int Simple_Identity_Management_OpenDRIM_Group_finalize();
 
44
 
 
45
/* ---------------------------------------------------------------------------*/
 
46
/*                      Instance Provider Interface                           */
 
47
/* ---------------------------------------------------------------------------*/
 
48
 
 
49
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderCleanup(CMPIInstanceMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
 
50
        _E_;
 
51
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_finalize();
 
52
        CMPIStatus rc;
 
53
        CMSetStatus(&rc, (CMPIrc) errorCode);
 
54
        _L_;
 
55
        return rc;
 
56
}
 
57
 
 
58
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderEnumInstanceNames(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref) {
 
59
        _E_;
 
60
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
61
        vector<OpenDRIM_Group> instances;
 
62
        string errorMessage;
 
63
        
 
64
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_retrieve(_broker, ctx, instances, NULL, errorMessage, "ein");
 
65
        if (errorCode != OK) {
 
66
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
67
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
68
                return rc;
 
69
        }
 
70
        for (size_t i=0; i < instances.size(); i++) {
 
71
                CMPIObjectPath* op = Simple_Identity_Management_OpenDRIM_Group_toCMPIObjectPath(_broker, instances[i]);
 
72
                CMReturnObjectPath(rslt, op);
 
73
        }
 
74
        CMReturnDone(rslt);
 
75
        _L_;
 
76
        return rc;
 
77
}
 
78
 
 
79
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderEnumInstances(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char** properties) {
 
80
        _E_;
 
81
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
82
        vector<OpenDRIM_Group> instances;
 
83
        string errorMessage;
 
84
        
 
85
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_retrieve(_broker, ctx, instances, properties, errorMessage, "ei");
 
86
        if (errorCode != OK) {
 
87
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
88
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
89
                return rc;
 
90
        }
 
91
        for (size_t i=0; i < instances.size(); i++) {
 
92
                CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_Group_toCMPIInstance(_broker, instances[i]);
 
93
                CMReturnInstance(rslt, ci);
 
94
        }
 
95
        CMReturnDone(rslt);
 
96
        _L_;
 
97
        return rc;
 
98
}
 
99
 
 
100
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderGetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char** properties) {
 
101
        _E_;
 
102
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
103
        OpenDRIM_Group instance;
 
104
        Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, cop, instance);
 
105
        string errorMessage;
 
106
        
 
107
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, properties, errorMessage);
 
108
        if (errorCode != OK) {
 
109
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
110
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
111
                return rc;
 
112
        }
 
113
        CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_Group_toCMPIInstance(_broker, instance);
 
114
        CMReturnInstance(rslt, ci);
 
115
        CMReturnDone(rslt);
 
116
        _L_;
 
117
        return rc;
 
118
}
 
119
 
 
120
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderSetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci, const char** properties) {
 
121
        _E_;
 
122
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
123
        OpenDRIM_Group newInstance, oldInstance;
 
124
        Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, ci, newInstance);
 
125
        Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, cop, oldInstance);
 
126
        string errorMessage;
 
127
        
 
128
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, oldInstance, properties, errorMessage);
 
129
        if (errorCode != OK) {
 
130
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
131
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
132
                return rc;
 
133
        }
 
134
        errorCode = Simple_Identity_Management_OpenDRIM_Group_setInstance(_broker, ctx, newInstance, oldInstance, properties, errorMessage);
 
135
        if (errorCode != OK) {
 
136
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
137
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
138
                return rc;
 
139
        }
 
140
        CMReturnDone(rslt);
 
141
        _L_;
 
142
        return rc;
 
143
}
 
144
 
 
145
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderCreateInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci) {
 
146
        _E_;
 
147
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
148
        OpenDRIM_Group instance;
 
149
        Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, ci, instance);
 
150
        string errorMessage;
 
151
        
 
152
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, NULL, errorMessage);
 
153
        if (errorCode != NOT_FOUND) {
 
154
                if (errorCode == OK)
 
155
                        errorCode = ALREADY_EXISTS;
 
156
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
157
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
158
                return rc;
 
159
        }
 
160
        errorCode = Simple_Identity_Management_OpenDRIM_Group_createInstance(_broker, ctx, instance, errorMessage);
 
161
        if (errorCode != OK) {
 
162
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
163
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
164
                return rc;
 
165
        }
 
166
        errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, NULL, errorMessage);
 
167
        if (errorCode != OK) {
 
168
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
169
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
170
                return rc;
 
171
        }
 
172
        CMPIObjectPath* _cop = Simple_Identity_Management_OpenDRIM_Group_toCMPIObjectPath(_broker, instance);
 
173
        CMReturnObjectPath(rslt, _cop);
 
174
        CMReturnDone(rslt);
 
175
        _L_;
 
176
        return rc;
 
177
}
 
178
 
 
179
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderDeleteInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop) {
 
180
        _E_;
 
181
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
182
        OpenDRIM_Group instance;
 
183
        Simple_Identity_Management_OpenDRIM_Group_toCPP(_broker, cop, instance);
 
184
        string errorMessage;
 
185
        
 
186
        int errorCode = Simple_Identity_Management_OpenDRIM_Group_getInstance(_broker, ctx, instance, NULL, errorMessage);
 
187
        if (errorCode != OK) {
 
188
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
189
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
190
                return rc;
 
191
        }
 
192
        errorCode = Simple_Identity_Management_OpenDRIM_Group_deleteInstance(_broker, ctx, instance, errorMessage);
 
193
        if (errorCode != OK) {
 
194
                errorMessage = (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
195
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
196
                return rc;
 
197
        }
 
198
        CMReturnDone(rslt);
 
199
        _L_;
 
200
        return rc;
 
201
}
 
202
 
 
203
CMPIStatus Simple_Identity_Management_OpenDRIM_GroupProviderExecQuery(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char* lang, const char* query) {
 
204
        _E_;
 
205
        CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
 
206
}
 
207
 
 
208
/* ---------------------------------------------------------------------------*/
 
209
/*                   End of Instance Provider Interface                       */
 
210
/* ---------------------------------------------------------------------------*/
 
211
 
 
212
/* ---------------------------------------------------------------------------*/
 
213
/*                              Provider Factory                              */
 
214
/* ---------------------------------------------------------------------------*/
 
215
 
 
216
int Simple_Identity_Management_OpenDRIM_Group_init(const CMPIBroker* broker) {
 
217
        _E_;
 
218
        _broker = broker;
 
219
        static bool initialized = false;
 
220
        if (!initialized) {
 
221
                string errorMessage;
 
222
                int errorCode = Simple_Identity_Management_OpenDRIM_Group_load(broker, errorMessage);
 
223
                if (errorCode != OK) {
 
224
                        errorMessage += "Simple_Identity_Management_OpenDRIM_Group_init FAILED: " + (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
225
                        string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
 
226
                        system(cmd.c_str());
 
227
                        return -1;
 
228
                }
 
229
                initialized = true;
 
230
        }
 
231
        _L_;
 
232
        return OK;
 
233
}
 
234
 
 
235
int Simple_Identity_Management_OpenDRIM_Group_finalize() {
 
236
        _E_;
 
237
        static bool finalized = false;
 
238
        if (!finalized) {
 
239
                string errorMessage;
 
240
                int errorCode = Simple_Identity_Management_OpenDRIM_Group_unload(errorMessage);
 
241
                if (errorCode != OK) {
 
242
                        errorMessage += "Simple_Identity_Management_OpenDRIM_Group_unload FAILED: " + (string) OpenDRIM_Group_classnames[0] + ": " + errorMessage;
 
243
                        string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
 
244
                        system(cmd.c_str());
 
245
                        return errorCode;
 
246
                }
 
247
                finalized = true;
 
248
        }
 
249
        _L_;
 
250
        return OK;
 
251
}
 
252
 
 
253
#define Simple_Identity_Management_OpenDRIM_Group_INIT if (Simple_Identity_Management_OpenDRIM_Group_init(_broker) < 0) return NULL
 
254
 
 
255
CMInstanceMIStub(Simple_Identity_Management_OpenDRIM_GroupProvider, Simple_Identity_Management_OpenDRIM_GroupProvider, _broker, Simple_Identity_Management_OpenDRIM_Group_INIT);
 
256
 
 
257
/* ---------------------------------------------------------------------------*/
 
258
/*                          End of Provider Factory                           */
 
259
/* ---------------------------------------------------------------------------*/