00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "reGlobalsExtern.h"
00012
00013 #include "databaseObjControl.h"
00014 #include "dataObjWrite.h"
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 int
00062 msiDboExec(msParam_t *dbrName, msParam_t *dboName, msParam_t *dborName,
00063 msParam_t *options,
00064 msParam_t *inpParam1, msParam_t *inpParam2,
00065 msParam_t *inpParam3, msParam_t *inpParam4,
00066 msParam_t *inpParam5, msParam_t *inpParam6,
00067 ruleExecInfo_t *rei) {
00068 rsComm_t *rsComm;
00069 char *myDbrName;
00070 char *myDboName;
00071 char *myDborName;
00072 char *myOptions;
00073 char *p1;
00074 char *p2;
00075 char *p3;
00076 char *p4;
00077 char *p5;
00078 char *p6;
00079 databaseObjControlInp_t databaseObjControlInp;
00080 databaseObjControlOut_t *databaseObjControlOut;
00081 int status;
00082
00083 RE_TEST_MACRO (" Calling msiDboExec")
00084
00085 if (rei == NULL || rei->rsComm == NULL) {
00086 rodsLog (LOG_ERROR,
00087 "msiDboExec rei or rsComm is NULL");
00088 return (SYS_INTERNAL_NULL_INPUT_ERR);
00089 }
00090 rsComm = rei->rsComm;
00091
00092 myDbrName = parseMspForStr(dbrName);
00093 if (myDbrName == NULL) {
00094 rodsLogAndErrorMsg (LOG_ERROR, &rsComm->rError, rei->status,
00095 "msiDboExec: input dbrName is NULL");
00096 return (USER__NULL_INPUT_ERR);
00097 }
00098
00099 myDboName = parseMspForStr(dboName);
00100 if (myDboName == NULL) {
00101 rodsLogAndErrorMsg (LOG_ERROR, &rsComm->rError, rei->status,
00102 "msiDboExec: input dboName is NULL");
00103 return (USER__NULL_INPUT_ERR);
00104 }
00105
00106
00107 myDborName = parseMspForStr(dborName);
00108 if (myDborName == NULL) {
00109 rodsLogAndErrorMsg (LOG_ERROR, &rsComm->rError, rei->status,
00110 "msiDboExec: input dborName is NULL");
00111 return (USER__NULL_INPUT_ERR);
00112 }
00113
00114 myOptions = parseMspForStr(options);
00115
00116 p1 = parseMspForStr(inpParam1);
00117 p2 = parseMspForStr(inpParam2);
00118 p3 = parseMspForStr(inpParam3);
00119 p4 = parseMspForStr(inpParam4);
00120 p5 = parseMspForStr(inpParam5);
00121 p6 = parseMspForStr(inpParam6);
00122
00123 if (rei->status < 0) {
00124 rodsLogAndErrorMsg (LOG_ERROR, &rsComm->rError, rei->status,
00125 "msiDboExec: input inpParam error. status = %d", rei->status);
00126 return (rei->status);
00127 }
00128
00129 memset((void *)&databaseObjControlInp, 0, sizeof(databaseObjControlInp));
00130
00131 databaseObjControlInp.option = DBO_EXECUTE;
00132
00133 databaseObjControlInp.dbrName = myDbrName;
00134 databaseObjControlInp.dboName = myDboName;
00135 databaseObjControlInp.dborName = myDborName;
00136
00137 if (strcmp(myOptions, "force")==0) {
00138 databaseObjControlInp.subOption = 1;
00139 }
00140
00141 databaseObjControlInp.args[0] = p1;
00142 databaseObjControlInp.args[1] = p2;
00143 databaseObjControlInp.args[2] = p3;
00144 databaseObjControlInp.args[3] = p4;
00145 databaseObjControlInp.args[4] = p5;
00146 databaseObjControlInp.args[5] = p6;
00147
00148 status = rsDatabaseObjControl(rsComm, &databaseObjControlInp,
00149 &databaseObjControlOut);
00150 if (status) {
00151 return(status);
00152 }
00153 if (*databaseObjControlOut->outBuf != '\0') {
00154 int stat2;
00155 stat2 = _writeString("stdout",databaseObjControlOut->outBuf,rei);
00156 }
00157
00158 return(status);
00159 }
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192 int
00193 msiDbrCommit(msParam_t *dbrName, ruleExecInfo_t *rei)
00194 {
00195 rsComm_t *rsComm;
00196 int status;
00197
00198 databaseObjControlInp_t databaseObjControlInp;
00199 databaseObjControlOut_t *databaseObjControlOut;
00200
00201 char *myDbrName;
00202
00203 RE_TEST_MACRO (" Calling msiDboCommit")
00204
00205 if (rei == NULL || rei->rsComm == NULL) {
00206 rodsLog (LOG_ERROR,
00207 "msiDbrCommit rei or rsComm is NULL");
00208 return (SYS_INTERNAL_NULL_INPUT_ERR);
00209 }
00210 rsComm = rei->rsComm;
00211
00212 memset((void *)&databaseObjControlInp, 0, sizeof(databaseObjControlInp));
00213
00214 myDbrName = parseMspForStr(dbrName);
00215 if (myDbrName == NULL) {
00216 rodsLogAndErrorMsg (LOG_ERROR, &rsComm->rError, rei->status,
00217 "msiDbrCommit: input dbrName is NULL");
00218 return(USER__NULL_INPUT_ERR);
00219 }
00220
00221 databaseObjControlInp.dbrName = myDbrName;
00222
00223 databaseObjControlInp.option = DBR_COMMIT;
00224
00225 status = rsDatabaseObjControl(rsComm, &databaseObjControlInp,
00226 &databaseObjControlOut);
00227 return(status);
00228 }
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261 int
00262 msiDbrRollback(msParam_t *dbrName, ruleExecInfo_t *rei)
00263 {
00264 rsComm_t *rsComm;
00265 int status;
00266
00267 databaseObjControlInp_t databaseObjControlInp;
00268 databaseObjControlOut_t *databaseObjControlOut;
00269
00270 char *myDbrName;
00271
00272 RE_TEST_MACRO (" Calling msiDboRollback")
00273
00274 if (rei == NULL || rei->rsComm == NULL) {
00275 rodsLog (LOG_ERROR,
00276 "msiDbrRollback rei or rsComm is NULL");
00277 return (SYS_INTERNAL_NULL_INPUT_ERR);
00278 }
00279 rsComm = rei->rsComm;
00280
00281 memset((void *)&databaseObjControlInp, 0, sizeof(databaseObjControlInp));
00282
00283 myDbrName = parseMspForStr(dbrName);
00284 if (myDbrName == NULL) {
00285 rodsLogAndErrorMsg (LOG_ERROR, &rsComm->rError, rei->status,
00286 "msiDbrRollback: input dbrName is NULL");
00287 return(USER__NULL_INPUT_ERR);
00288 }
00289
00290 databaseObjControlInp.dbrName = myDbrName;
00291
00292 databaseObjControlInp.option = DBR_ROLLBACK;
00293
00294 status = rsDatabaseObjControl(rsComm, &databaseObjControlInp,
00295 &databaseObjControlOut);
00296 return(status);
00297
00298 }