Ignore:
Timestamp:
Mar 31, 2014, 10:50:26 PM (10 years ago)
Author:
djay
Message:

Fix some issue in background execution on windows platform (basic array and xlink). Fix issue #89.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-project/zoo-kernel/service.h

    r454 r458  
    254254  }
    255255
    256   static char* getMapsAsKVP(maps* m,int length,int type){
    257     char *dataInputsKVP=(char*) malloc(length*sizeof(char));
    258     maps* curs=m;
    259     int i=0;
    260     while(curs!=NULL){
    261       map *inRequest=getMap(curs->content,"inRequest");
    262       if(strncasecmp(inRequest->value,"true",4)==0){
    263         if(i==0)
    264           if(type==0)
    265             sprintf(dataInputsKVP,"%s=",curs->name);
    266           else
    267             sprintf(dataInputsKVP,"%s",curs->name);
    268         else{
    269           char *temp=zStrdup(dataInputsKVP);
    270           if(type==0)
    271             sprintf(dataInputsKVP,"%s;%s=",temp,curs->name);
    272           else
    273             sprintf(dataInputsKVP,"%s;%s",temp,curs->name);
    274           free(temp);
    275         }
    276         map* icurs=curs->content;
    277         if(type==0){
    278           char *temp=zStrdup(dataInputsKVP);
    279           if(getMap(m->content,"xlink:href")!=NULL)
    280             sprintf(dataInputsKVP,"%sReference",temp);
    281           else
    282             sprintf(dataInputsKVP,"%s%s",temp,icurs->value);
    283           free(temp);
    284         }
    285         while(icurs!=NULL){
    286           if(strcasecmp(icurs->name,"value")!=0 &&
    287              strcasecmp(icurs->name,"Reference")!=0 &&
    288              strcasecmp(icurs->name,"minOccurs")!=0 &&
    289              strcasecmp(icurs->name,"maxOccurs")!=0 &&
    290              strcasecmp(icurs->name,"inRequest")!=0){
    291             char *itemp=zStrdup(dataInputsKVP);
    292             sprintf(dataInputsKVP,"%s@%s=%s",itemp,icurs->name,icurs->value);
    293             free(itemp);
    294           }
    295           icurs=icurs->next;
    296         }
    297       }
    298       curs=curs->next;
    299       i++;
    300     }
    301     return dataInputsKVP;
    302   }
    303 
    304256
    305257  static void freeMap(map** mo){
     
    909861  }
    910862
     863#ifdef WIN32
     864  extern char *url_encode(char *);
     865
     866  static char* getMapsAsKVP(maps* m,int length,int type){
     867    char *dataInputsKVP=(char*) malloc(length*sizeof(char));
     868    char *dataInputsKVPi=NULL;
     869    maps* curs=m;
     870    int i=0;
     871    while(curs!=NULL){
     872      map *inRequest=getMap(curs->content,"inRequest");
     873      map *hasLength=getMap(curs->content,"length");
     874      if((inRequest!=NULL && strncasecmp(inRequest->value,"true",4)==0) ||
     875         inRequest==NULL){
     876        if(i==0)
     877          if(type==0){
     878            sprintf(dataInputsKVP,"%s=",curs->name);
     879            if(hasLength!=NULL){
     880              dataInputsKVPi=(char*)malloc((strlen(curs->name)+2)*sizeof(char));
     881              sprintf(dataInputsKVPi,"%s=",curs->name);
     882            }
     883          }
     884          else
     885            sprintf(dataInputsKVP,"%s",curs->name);
     886        else{
     887          char *temp=zStrdup(dataInputsKVP);
     888          if(type==0)
     889            sprintf(dataInputsKVP,"%s;%s=",temp,curs->name);
     890          else
     891            sprintf(dataInputsKVP,"%s;%s",temp,curs->name);
     892        }
     893        map* icurs=curs->content;
     894        if(type==0){
     895          char *temp=zStrdup(dataInputsKVP);
     896          if(getMap(curs->content,"xlink:href")!=NULL)
     897            sprintf(dataInputsKVP,"%sReference",temp);
     898          else{
     899            if(hasLength!=NULL){
     900              for(int j=0;j<atoi(hasLength->value);j++){
     901                map* tmp0=getMapArray(curs->content,"value",j);
     902                if(j==0)
     903                  free(temp);
     904                temp=zStrdup(dataInputsKVP);
     905                if(j==0)
     906                  sprintf(dataInputsKVP,"%s%s",temp,tmp0->value);
     907                else
     908                  sprintf(dataInputsKVP,"%s;%s%s",temp,dataInputsKVPi,tmp0->value);
     909              }
     910            }
     911            else
     912              sprintf(dataInputsKVP,"%s%s",temp,icurs->value);
     913          }
     914          free(temp);
     915        }
     916        while(icurs!=NULL){
     917          if(strncasecmp(icurs->name,"value",5)!=0 &&
     918             strncasecmp(icurs->name,"mimeType_",9)!=0 &&
     919             strncasecmp(icurs->name,"dataType_",9)!=0 &&
     920             strncasecmp(icurs->name,"size",4)!=0 &&
     921             strncasecmp(icurs->name,"length",4)!=0 &&
     922             strncasecmp(icurs->name,"isArray",7)!=0 &&
     923             strcasecmp(icurs->name,"Reference")!=0 &&
     924             strcasecmp(icurs->name,"minOccurs")!=0 &&
     925             strcasecmp(icurs->name,"maxOccurs")!=0 &&
     926             strncasecmp(icurs->name,"fmimeType",9)!=0 &&
     927             strcasecmp(icurs->name,"inRequest")!=0){
     928            char *itemp=zStrdup(dataInputsKVP);
     929            if(strcasecmp(icurs->name,"xlink:href")!=0)
     930              sprintf(dataInputsKVP,"%s@%s=%s",itemp,icurs->name,icurs->value);
     931            else
     932              sprintf(dataInputsKVP,"%s@%s=%s",itemp,icurs->name,url_encode(icurs->value));
     933            free(itemp);
     934          }
     935          icurs=icurs->next;
     936        }
     937      }
     938      curs=curs->next;
     939      i++;
     940    }
     941    return dataInputsKVP;
     942  }
     943#endif
     944
    911945#ifdef __cplusplus
    912946}
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