cond->value2.i = atoi(tmps);
}
break;
- case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
- case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
case EDG_WLL_QUERY_ATTR_TIME:
cond->value.t.tv_sec = StrToTime(tmps);
if ( cond->op == EDG_WLL_QUERY_OP_WITHIN )
fprintf(stderr,"%s: invalid status value (%s)\n", myname, tmps);
return 0;
}
- break;
+ break;
+
+ case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
+ case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+ cond->value.t.tv_sec = StrToTime(tmps);
+ if ( cond->op == EDG_WLL_QUERY_OP_WITHIN )
+ {
+ if ( !(s = get_attr_value(s, tmps, 500)) ) return NULL;
+ if ( tmps[0] == '\0' )
+ {
+ fprintf(stderr,"%s: second interval boundary not set\n", myname);
+ return NULL;
+ }
+ cond->value2.t.tv_sec = StrToTime(tmps);
+ }
+ break;
default:
break;
break;
case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
if (conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN) {
- edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", edg_wll_StatToString(conditions[row][i].attr_id.state), "state", -1);
- edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, conditions[row][i].value2.t.tv_sec, "stateentertime", edg_wll_StatToString(conditions[row][i].attr_id.state), "state", -1);
+ edg_wll_add_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", -1);
+ edg_wll_add_time_t_to_XMLBody(&pomValue, conditions[row][i].value2.t.tv_sec, "stateentertime", -1);
}
else
- edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", edg_wll_StatToString(conditions[row][i].attr_id.state), "state", -1);
+ edg_wll_add_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", -1);
break;
case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
if (conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN) {
else
edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value.t.tv_sec, "time", edg_wll_StatToString(event_conditions[row][i].attr_id.state), "state", -1);
break;
+ case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+ if (event_conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN) {
+ edg_wll_add_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value.t.tv_sec, "stateentertime", -1);
+ edg_wll_add_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value2.t.tv_sec, "stateentertime", -1);
+ }
+ else
+ edg_wll_add_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value.t.tv_sec, "stateentertime", -1);
+ break;
case EDG_WLL_QUERY_ATTR_LEVEL:
edg_wll_add_int_to_XMLBody(&pomValue, event_conditions[row][i].value.i, "level", -1);
if (event_conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN)
if (strcmp(attr[0],"name")) { unexp() break;}
XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.tag = strdup(attr[1]);
}
- else if ( ((i+1) == EDG_WLL_QUERY_ATTR_TIME) ||
- ((i+1) == EDG_WLL_QUERY_ATTR_STATEENTERTIME)) {
+ else if ( (i+1) == EDG_WLL_QUERY_ATTR_TIME ) {
if (!attr[0] || !attr[1]) { unexp() break;}
if (attr[0] && strcmp(attr[0],"state")) { unexp() break;}
XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.state = edg_wll_StringToStat(attr[1]);
if (attr[0] && strcmp(attr[0],"name")) { unexp() break;}
XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.tag = strdup(attr[1]);
}
- else if ( ((i+1) == EDG_WLL_QUERY_ATTR_TIME) ||
- ((i+1) == EDG_WLL_QUERY_ATTR_STATEENTERTIME)) {
+ else if ( (i+1) == EDG_WLL_QUERY_ATTR_TIME ) {
if (!attr[0] || !attr[1]) { unexp() break;}
if (attr[0] && strcmp(attr[0],"state")) { unexp() break;}
XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.state = edg_wll_StringToStat(attr[1]);
if (attr[0] && strcmp(attr[0],"name")) { unexp() break;}
XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position].attr_id.tag = strdup(attr[1]);
}
- else if ( ((i+1) == EDG_WLL_QUERY_ATTR_TIME) ||
- ((i+1) == EDG_WLL_QUERY_ATTR_STATEENTERTIME)) {
+ else if ( (i+1) == EDG_WLL_QUERY_ATTR_TIME ) {
if (!attr[0] || !attr[1]) { unexp() break;}
if (attr[0] && strcmp(attr[0],"state")) { unexp() break;}
XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position].attr_id.state = edg_wll_StringToStat(attr[1]);
XMLCtx->event_conditions[XMLCtx->row2] != NULL) {
switch (XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position2].attr) {
case EDG_WLL_QUERY_ATTR_TIME:
- case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
if ( !XMLCtx->bound )
{
XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position2].value.t.tv_sec =
edg_wll_query_attrToString(ctx->job_index[i][j].attr),
"attribute", NULL);
- if ((ctx->job_index[i][j].attr == EDG_WLL_QUERY_ATTR_TIME) ||
- (ctx->job_index[i][j].attr == EDG_WLL_QUERY_ATTR_STATEENTERTIME))
+ if ( ctx->job_index[i][j].attr == EDG_WLL_QUERY_ATTR_TIME )
edg_wll_add_string_to_XMLBody(&pomA,
edg_wll_StatToString(ctx->job_index[i][j].attr_id.state),
"state", NULL);
* Any op allowed - but be careful
*/
case EDG_WLL_QUERY_ATTR_TIME:
+ case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+ case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
/* any operator allowed */
ct++;
break;
for ( n = 0; ec[m][n].attr; n++ ) switch ( ec[m][n].attr )
{
case EDG_WLL_QUERY_ATTR_TIME:
+ case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+ case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
glite_lbu_TimeToDB(ec[m][n].value.t.tv_sec, &dbt);
if ( conds )
{
break;
case EDG_WLL_QUERY_ATTR_TIME:
- case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
if ( jc[m][n].attr_id.state == EDG_WLL_JOB_UNDEF )
{
edg_wll_SetError(ctx, EINVAL, "Time attribut have to be associated with status specification");
case EDG_WLL_QUERY_ATTR_DONECODE:
case EDG_WLL_QUERY_ATTR_EXITCODE:
case EDG_WLL_QUERY_ATTR_STATUS:
+ case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
ct++;
break;
return 0;
or_satisfied:
+
// just for escaping from nested cycles
; /* prevent compiler to complain */
}