Changeset 65 for trunk/zoo-kernel


Ignore:
Timestamp:
Jan 8, 2011, 2:12:24 PM (14 years ago)
Author:
djay
Message:

Add support for multiple outputs format for DescribeProcess? and Execute requests. Note that currently if RawDataOutput? is asked, then only first output can be returned.

Location:
trunk/zoo-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-kernel/service_conf.y

    r60 r65  
    203203        dumpElements(my_service->inputs);
    204204        dumpService(my_service);
    205 #endif
     205#endif 
    206206        if(my_service->inputs==NULL){
    207207          my_service->inputs=dupElements(current_element);
     
    238238      wait_outputs=true;
    239239      current_data=2;
    240       previous_data=1;
     240      previous_data=2;
    241241    }
    242242    else
     
    587587    else
    588588      if(current_data==2){
    589         if(wait_inputs==true){
     589        wait_outputs=true;
     590        if(wait_inputs){
    590591          if(current_element!=NULL && current_element->name!=NULL){
    591             if(my_service->inputs==NULL){
    592               my_service->inputs=dupElements(current_element);
    593               my_service->inputs->next=NULL;
     592            if(my_service->outputs==NULL){
     593              my_service->outputs=dupElements(current_element);
     594              my_service->outputs->next=NULL;
    594595            }
    595596            else{
     
    597598              fprintf(stderr,"LAST NAME IN %s (current - %s)\n",$1,current_element->name);
    598599#endif
    599               addToElements(&my_service->inputs,current_element);
     600              addToElements(&my_service->outputs,current_element);
    600601            }
    601602#ifdef DEBUG_SERVICE_CONF
     
    624625#endif
    625626            char *cen=strdup($1);
    626             current_element->name=(char*)malloc((strlen(cen)-1)*sizeof(char*));
     627            current_element->name=(char*)malloc((strlen(cen)-1)*sizeof(char));
    627628            cen[strlen(cen)-1]=0;
    628629            cen+=1;
     
    637638            current_element->next=NULL;
    638639          }
    639           wait_inputs=false;
     640
    640641          current_content=NULL;
    641642        }
    642643        else
    643           if(current_element->name==NULL){
     644          if(current_element!=NULL && current_element->name!=NULL){
     645            if(my_service->outputs==NULL)
     646              my_service->outputs=dupElements(current_element);
     647            else
     648              addToElements(&my_service->outputs,current_element);
     649            fprintf(stderr,"ADD TO OUTPUTS Elements\n");
     650            dupElements(current_element);
     651
     652            freeElements(&current_element);
     653            free(current_element);
     654            current_element=NULL;
     655          }
     656          else{
    644657#ifdef DEBUG_SERVICE_CONF
    645658            fprintf(stderr,"NAME OUT %s\n",$1);
     
    663676            current_element->next=NULL;
    664677          }
     678        wait_inputs=false;
    665679        wait_outputs=true;
     680        //wait_outputs=true;
    666681      }
    667682  }
     
    724739  int resultatYYParse = srparse() ;
    725740 
    726   if(wait_outputs==true && current_element!=NULL && current_element->name!=NULL){
     741  if(wait_outputs && current_element!=NULL && current_element->name!=NULL){
    727742    if(my_service->outputs==NULL){     
    728743#ifdef DEBUG_SERVICE_CONF
  • trunk/zoo-kernel/service_internal.c

    r64 r65  
    11261126    int i;
    11271127    maps* mcursor=inputs;
    1128     elements* scursor=serv->inputs;
     1128    elements* scursor=NULL;
    11291129    while(mcursor!=NULL /*&& scursor!=NULL*/){
     1130      scursor=getElements(serv->inputs,mcursor->name);
    11301131      printIOType(doc,nc,ns,ns_ows,scursor,mcursor,"Input");
    11311132      mcursor=mcursor->next;
    1132       //scursor=scursor->next;
    11331133    }
    11341134    xmlAddChild(n,nc);
     
    11401140    nc = xmlNewNode(ns, BAD_CAST "OutputDefinitions");
    11411141    mcursor=outputs;
    1142     scursor=serv->outputs;
    1143     while(mcursor!=NULL /*&& scursor!=NULL*/){
     1142    scursor=NULL;
     1143    while(mcursor!=NULL){
     1144      scursor=getElements(serv->outputs,mcursor->name);
    11441145      printOutputDefinitions1(doc,nc,ns,ns_ows,scursor,mcursor,"Output");
    11451146      mcursor=mcursor->next;
    1146       //scursor=scursor->next;
    11471147    }
    11481148    xmlAddChild(n,nc);
     
    11601160    elements* scursor=serv->outputs;
    11611161    while(mcursor!=NULL){
     1162      scursor=getElements(serv->outputs,mcursor->name);
    11621163      printIOType(doc,nc,ns,ns_ows,scursor,mcursor,"Output");
    11631164      mcursor=mcursor->next;
     
    12641265  xmlNodePtr nc1,nc2,nc3;
    12651266  nc1=xmlNewNode(ns_wps, BAD_CAST type);
    1266   map *tmp=e->content;
     1267  map *tmp=NULL;
     1268  if(e!=NULL)
     1269    tmp=e->content;
     1270  else
     1271    tmp=m->content;
    12671272#ifdef DEBUG
    12681273  dumpMap(tmp);
     
    12701275#endif
    12711276  nc2=xmlNewNode(ns_ows, BAD_CAST "Identifier");
    1272   nc3=xmlNewText(BAD_CAST e->name);
     1277  if(e!=NULL)
     1278    nc3=xmlNewText(BAD_CAST e->name);
     1279  else
     1280    nc3=xmlNewText(BAD_CAST m->name);
    12731281  xmlAddChild(nc2,nc3);
    12741282  xmlAddChild(nc1,nc2);
    12751283  xmlAddChild(nc,nc1);
    12761284  // Extract Title required to be first element in the ZCFG file !
    1277   nc2=xmlNewNode(ns_ows, BAD_CAST tmp->name);
    1278   nc3=xmlNewText(BAD_CAST _ss(tmp->value));
    1279   xmlAddChild(nc2,nc3); 
    1280   xmlAddChild(nc1,nc2);
    1281   // Extract Abstract required to be second element in the ZCFG file !
    1282   // For GRASS it can be empty ...
    1283   if(tmp->next!=NULL){
    1284     tmp=tmp->next;
     1285  bool isTitle=true;
     1286  if(e!=NULL)
     1287    tmp=getMap(e->content,"Title");
     1288  else
     1289    tmp=getMap(m->content,"Title");
     1290 
     1291  if(tmp!=NULL){
     1292    nc2=xmlNewNode(ns_ows, BAD_CAST tmp->name);
     1293    nc3=xmlNewText(BAD_CAST _ss(tmp->value));
     1294    xmlAddChild(nc2,nc3); 
     1295    xmlAddChild(nc1,nc2);
     1296  }
     1297
     1298  if(e!=NULL)
     1299    tmp=getMap(e->content,"Abstract");
     1300  else
     1301    tmp=getMap(m->content,"Abstract");
     1302  if(tmp!=NULL){
    12851303    nc2=xmlNewNode(ns_ows, BAD_CAST tmp->name);
    12861304    nc3=xmlNewText(BAD_CAST _ss(tmp->value));
     
    12881306    xmlAddChild(nc1,nc2);
    12891307    xmlAddChild(nc,nc1);
    1290     tmp=tmp->next;
    12911308  }
    12921309
     
    13001317  if(tmpMap==NULL){
    13011318    nc2=xmlNewNode(ns_wps, BAD_CAST "Data");
    1302     if(strncasecmp(e->format,"LITERALOUTPUT",strlen(e->format))==0)
    1303       nc3=xmlNewNode(ns_wps, BAD_CAST "LiteralData");
    1304     else
    1305       if(strncasecmp(e->format,"COMPLEXOUTPUT",strlen(e->format))==0)
    1306         nc3=xmlNewNode(ns_wps, BAD_CAST "ComplexData");
     1319    if(e!=NULL){
     1320      if(strncasecmp(e->format,"LITERALOUTPUT",strlen(e->format))==0)
     1321        nc3=xmlNewNode(ns_wps, BAD_CAST "LiteralData");
    13071322      else
    1308         nc3=xmlNewNode(ns_wps, BAD_CAST e->format);
     1323        if(strncasecmp(e->format,"COMPLEXOUTPUT",strlen(e->format))==0)
     1324          nc3=xmlNewNode(ns_wps, BAD_CAST "ComplexData");
     1325        else
     1326          nc3=xmlNewNode(ns_wps, BAD_CAST e->format);
     1327    }
     1328    else{
     1329      map* tmpV=getMapFromMaps(m,"format","value");
     1330      if(tmpV!=NULL)
     1331        nc3=xmlNewNode(ns_wps, BAD_CAST tmpV->value);
     1332      else
     1333        nc3=xmlNewNode(ns_wps, BAD_CAST "LitteralData");
     1334    }
    13091335    tmp=m->content;
    13101336    while(tmp!=NULL){
     
    13141340         strncasecmp(tmp->name,"status",strlen(tmp->name))!=0 &&
    13151341         strncasecmp(tmp->name,"storeExecuteResponse",strlen(tmp->name))!=0 &&
    1316          strncasecmp(tmp->name,"extension",strlen(tmp->name))!=0)
     1342         strncasecmp(tmp->name,"extension",strlen(tmp->name))!=0 &&
     1343         strncasecmp(tmp->name,"format",strlen(tmp->name))!=0 &&
     1344         strncasecmp(tmp->name,"Title",strlen(tmp->name))!=0 &&
     1345         strncasecmp(tmp->name,"Abstract",strlen(tmp->name))!=0 &&
     1346         strncasecmp(tmp->name,"size",strlen(tmp->name))!=0)
    13171347        xmlNewProp(nc3,BAD_CAST tmp->name,BAD_CAST tmp->value);
    13181348      tmp=tmp->next;
    13191349      xmlAddChild(nc2,nc3);
    13201350    }
    1321     tmp=getMap(e->defaults->content,"mimeType");
     1351    if(e!=NULL)
     1352      tmp=getMap(e->defaults->content,"mimeType");
     1353    else
     1354      tmp=NULL;
    13221355    map* tmp1=getMap(m->content,"encoding");
    13231356    map* tmp2=getMap(m->content,"mimeType");
     
    13571390    while(tmp!=NULL){
    13581391      if(strncasecmp(tmp->name,"value",strlen(tmp->name))!=0 &&
    1359          strncasecmp(tmp->name,"reference",strlen(tmp->name))!=0 &&
    13601392         strncasecmp(tmp->name,"extension",strlen(tmp->name))!=0 &&
    1361          strncasecmp(tmp->name,"abstract",strlen(tmp->name))!=0 &&
     1393         strncasecmp(tmp->name,"asReference",strlen(tmp->name))!=0 &&
    13621394         strncasecmp(tmp->name,"status",strlen(tmp->name))!=0 &&
    13631395         strncasecmp(tmp->name,"storeExecuteResponse",strlen(tmp->name))!=0 &&
    1364          strncasecmp(tmp->name,"asReference",strlen(tmp->name))!=0)
     1396         strncasecmp(tmp->name,"extension",strlen(tmp->name))!=0 &&
     1397         strncasecmp(tmp->name,"format",strlen(tmp->name))!=0 &&
     1398         strncasecmp(tmp->name,"Title",strlen(tmp->name))!=0 &&
     1399         strncasecmp(tmp->name,"Abstract",strlen(tmp->name))!=0 &&
     1400         strncasecmp(tmp->name,"size",strlen(tmp->name))!=0)
    13651401        xmlNewProp(nc3,BAD_CAST tmp->name,BAD_CAST tmp->value);
    13661402      tmp=tmp->next;
Note: See TracChangeset for help on using the changeset viewer.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png