00001
00002
00003
00004
00005
00006 #include "modAVUMetadata.h"
00007 #include "reGlobalsExtern.h"
00008 #include "icatHighLevelRoutines.h"
00009
00010 int
00011 rsModAVUMetadata (rsComm_t *rsComm, modAVUMetadataInp_t *modAVUMetadataInp )
00012 {
00013 rodsServerHost_t *rodsServerHost;
00014 int status;
00015 char *myHint;
00016
00017 if (strcmp(modAVUMetadataInp->arg0,"add")==0) {
00018 myHint = modAVUMetadataInp->arg2;
00019 } else if (strcmp(modAVUMetadataInp->arg0,"adda")==0) {
00020 myHint = modAVUMetadataInp->arg2;
00021 } else if (strcmp(modAVUMetadataInp->arg0,"addw")==0) {
00022 myHint = modAVUMetadataInp->arg2;
00023 } else if (strcmp(modAVUMetadataInp->arg0,"rmw")==0) {
00024 myHint = modAVUMetadataInp->arg2;
00025 } else if (strcmp(modAVUMetadataInp->arg0,"rmi")==0) {
00026 myHint = modAVUMetadataInp->arg2;
00027 } else if (strcmp(modAVUMetadataInp->arg0,"rm")==0) {
00028 myHint = modAVUMetadataInp->arg2;
00029 } else if (strcmp(modAVUMetadataInp->arg0,"cp")==0) {
00030 myHint = modAVUMetadataInp->arg3;
00031 } else if (strcmp(modAVUMetadataInp->arg0,"mod")==0) {
00032 myHint = modAVUMetadataInp->arg2;
00033 } else if (strcmp(modAVUMetadataInp->arg0,"set")==0) {
00034 myHint = modAVUMetadataInp->arg2;
00035 } else {
00036
00037 myHint = NULL;
00038 }
00039
00040 status = getAndConnRcatHost(rsComm, MASTER_RCAT, myHint, &rodsServerHost);
00041 if (status < 0) {
00042 return(status);
00043 }
00044
00045 if (rodsServerHost->localFlag == LOCAL_HOST) {
00046 #ifdef RODS_CAT
00047 status = _rsModAVUMetadata (rsComm, modAVUMetadataInp);
00048 #else
00049 status = SYS_NO_RCAT_SERVER_ERR;
00050 #endif
00051 }
00052 else {
00053 status = rcModAVUMetadata(rodsServerHost->conn,
00054 modAVUMetadataInp);
00055 }
00056
00057 if (status < 0) {
00058 rodsLog (LOG_NOTICE,
00059 "rsModAVUMetadata: rcModAVUMetadata failed");
00060 }
00061 return (status);
00062 }
00063
00064 #ifdef RODS_CAT
00065 int
00066 _rsModAVUMetadata (rsComm_t *rsComm, modAVUMetadataInp_t *modAVUMetadataInp )
00067 {
00068 int status;
00069
00070 char *args[MAX_NUM_OF_ARGS_IN_ACTION];
00071 int i, argc;
00072 ruleExecInfo_t rei2;
00073
00074 memset ((char*)&rei2, 0, sizeof (ruleExecInfo_t));
00075 rei2.rsComm = rsComm;
00076 if (rsComm != NULL) {
00077 rei2.uoic = &rsComm->clientUser;
00078 rei2.uoip = &rsComm->proxyUser;
00079 }
00080
00081
00082
00083
00084 args[0] = modAVUMetadataInp->arg0;
00085
00086 args[1] = modAVUMetadataInp->arg1;
00087 args[2] = modAVUMetadataInp->arg2;
00088 args[3] = modAVUMetadataInp->arg3;
00089 args[4] = modAVUMetadataInp->arg4;
00090 args[5] = modAVUMetadataInp->arg5;
00091 if (args[5]) {
00092 argc = 6;
00093 } else {
00094 argc = 5;
00095 }
00096 i = applyRuleArg("acPreProcForModifyAVUMetadata",args,argc, &rei2, NO_SAVE_REI);
00097 if (i < 0) {
00098 if (rei2.status < 0) {
00099 i = rei2.status;
00100 }
00101 rodsLog (LOG_ERROR,
00102 "rsModAVUMetadata:acPreProcForModifyAVUMetadata error for %s of type %s and option %s,stat=%d",
00103 modAVUMetadataInp->arg2,modAVUMetadataInp->arg1,modAVUMetadataInp->arg0, i);
00104 return i;
00105 }
00106
00107
00108
00109 if (strcmp(modAVUMetadataInp->arg0,"add")==0) {
00110 status = chlAddAVUMetadata(rsComm, 0,
00111 modAVUMetadataInp->arg1,
00112 modAVUMetadataInp->arg2,
00113 modAVUMetadataInp->arg3,
00114 modAVUMetadataInp->arg4,
00115 modAVUMetadataInp->arg5);
00116 }
00117 else if (strcmp(modAVUMetadataInp->arg0,"adda")==0) {
00118 status = chlAddAVUMetadata(rsComm, 1,
00119 modAVUMetadataInp->arg1,
00120 modAVUMetadataInp->arg2,
00121 modAVUMetadataInp->arg3,
00122 modAVUMetadataInp->arg4,
00123 modAVUMetadataInp->arg5);
00124 }
00125 else if (strcmp(modAVUMetadataInp->arg0,"addw")==0) {
00126 status = chlAddAVUMetadataWild(rsComm, 0,
00127 modAVUMetadataInp->arg1,
00128 modAVUMetadataInp->arg2,
00129 modAVUMetadataInp->arg3,
00130 modAVUMetadataInp->arg4,
00131 modAVUMetadataInp->arg5);
00132 }
00133 else if (strcmp(modAVUMetadataInp->arg0,"rmw")==0) {
00134 status = chlDeleteAVUMetadata(rsComm, 1,
00135 modAVUMetadataInp->arg1,
00136 modAVUMetadataInp->arg2,
00137 modAVUMetadataInp->arg3,
00138 modAVUMetadataInp->arg4,
00139 modAVUMetadataInp->arg5,
00140 0);
00141 }
00142 else if (strcmp(modAVUMetadataInp->arg0,"rmi")==0) {
00143 status = chlDeleteAVUMetadata(rsComm, 2,
00144 modAVUMetadataInp->arg1,
00145 modAVUMetadataInp->arg2,
00146 modAVUMetadataInp->arg3,
00147 modAVUMetadataInp->arg4,
00148 modAVUMetadataInp->arg5,
00149 0);
00150 }
00151 else if (strcmp(modAVUMetadataInp->arg0,"rm")==0) {
00152 status = chlDeleteAVUMetadata(rsComm, 0,
00153 modAVUMetadataInp->arg1,
00154 modAVUMetadataInp->arg2,
00155 modAVUMetadataInp->arg3,
00156 modAVUMetadataInp->arg4,
00157 modAVUMetadataInp->arg5,
00158 0);
00159 }
00160 else if (strcmp(modAVUMetadataInp->arg0,"cp")==0) {
00161 status = chlCopyAVUMetadata(rsComm,
00162 modAVUMetadataInp->arg1,
00163 modAVUMetadataInp->arg2,
00164 modAVUMetadataInp->arg3,
00165 modAVUMetadataInp->arg4);
00166 }
00167 else if (strcmp(modAVUMetadataInp->arg0,"mod")==0) {
00168 status = chlModAVUMetadata(rsComm,
00169 modAVUMetadataInp->arg1,
00170 modAVUMetadataInp->arg2,
00171 modAVUMetadataInp->arg3,
00172 modAVUMetadataInp->arg4,
00173 modAVUMetadataInp->arg5,
00174 modAVUMetadataInp->arg6,
00175 modAVUMetadataInp->arg7,
00176 modAVUMetadataInp->arg8);
00177 }
00178 else if (strcmp(modAVUMetadataInp->arg0,"set")==0) {
00179 status = chlSetAVUMetadata(rsComm,
00180 modAVUMetadataInp->arg1,
00181 modAVUMetadataInp->arg2,
00182 modAVUMetadataInp->arg3,
00183 modAVUMetadataInp->arg4,
00184 modAVUMetadataInp->arg5);
00185 }
00186 else {
00187 return(CAT_INVALID_ARGUMENT);
00188 }
00189
00190 i = applyRuleArg("acPostProcForModifyAVUMetadata",args,argc, &rei2, NO_SAVE_REI);
00191 if (i < 0) {
00192 if (rei2.status < 0) {
00193 i = rei2.status;
00194 }
00195 rodsLog (LOG_ERROR,
00196 "rsModAVUMetadata:acPostProcForModifyAVUMetadata error for %s of type %s and option %s,stat=%d",
00197 modAVUMetadataInp->arg2,modAVUMetadataInp->arg1,modAVUMetadataInp->arg0, i);
00198 return i;
00199 }
00200
00201
00202 return(status);
00203
00204 }
00205 #endif