Ignore:
Timestamp:
Apr 24, 2015, 4:57:59 PM (9 years ago)
Author:
djay
Message:

Integrate a basic SAGA-GIS support into the ZOO-Kernel.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-project/zoo-kernel/service_internal.c

    r633 r634  
    22492249    if(e!=NULL){
    22502250      if(strncasecmp(e->format,"LiteralOutput",strlen(e->format))==0)
    2251          nc3=xmlNewNode(ns_wps, BAD_CAST "LiteralData");
     2251        nc3=xmlNewNode(ns_wps, BAD_CAST "LiteralData");
    22522252      else
    22532253        if(strncasecmp(e->format,"ComplexOutput",strlen(e->format))==0)
    2254                    nc3=xmlNewNode(ns_wps, BAD_CAST "ComplexData");
    2255           else if(strncasecmp(e->format,"BoundingBoxOutput",strlen(e->format))==0)
    2256             nc3=xmlNewNode(ns_wps, BAD_CAST "BoundingBoxData");
    2257           else
    2258             nc3=xmlNewNode(ns_wps, BAD_CAST e->format);
     2254          nc3=xmlNewNode(ns_wps, BAD_CAST "ComplexData");
     2255        else if(strncasecmp(e->format,"BoundingBoxOutput",strlen(e->format))==0)
     2256          nc3=xmlNewNode(ns_wps, BAD_CAST "BoundingBoxData");
     2257        else
     2258          nc3=xmlNewNode(ns_wps, BAD_CAST e->format);
    22592259    }
    22602260    else {
    22612261      map* tmpV=getMapFromMaps(m,"format","value");
    22622262      if(tmpV!=NULL)
    2263             nc3=xmlNewNode(ns_wps, BAD_CAST tmpV->value);
     2263        nc3=xmlNewNode(ns_wps, BAD_CAST tmpV->value);
    22642264      else
    2265             nc3=xmlNewNode(ns_wps, BAD_CAST "LiteralData");
     2265        nc3=xmlNewNode(ns_wps, BAD_CAST "LiteralData");
    22662266    }
    22672267    tmp=m->content;
     
    22692269    while(tmp!=NULL){
    22702270      if(strcasecmp(tmp->name,"mimeType")==0 ||
    2271              strcasecmp(tmp->name,"encoding")==0 ||
    2272              strcasecmp(tmp->name,"schema")==0 ||
    2273              strcasecmp(tmp->name,"datatype")==0 ||
    2274              strcasecmp(tmp->name,"uom")==0) {
    2275 
    2276             xmlNewProp(nc3,BAD_CAST tmp->name,BAD_CAST tmp->value);
     2271         strcasecmp(tmp->name,"encoding")==0 ||
     2272         strcasecmp(tmp->name,"schema")==0 ||
     2273         strcasecmp(tmp->name,"datatype")==0 ||
     2274         strcasecmp(tmp->name,"uom")==0) {
     2275
     2276        xmlNewProp(nc3,BAD_CAST tmp->name,BAD_CAST tmp->value);
    22772277      }
    22782278      tmp=tmp->next;
     
    22822282      map* bb=getMap(m->content,"value");
    22832283      if(bb!=NULL) {
    2284             map* tmpRes=parseBoundingBox(bb->value);
    2285             printBoundingBox(ns_ows,nc3,tmpRes);
    2286             freeMap(&tmpRes);
    2287             free(tmpRes);
    2288       }
    2289     }
    2290         else {
     2284        map* tmpRes=parseBoundingBox(bb->value);
     2285        printBoundingBox(ns_ows,nc3,tmpRes);
     2286        freeMap(&tmpRes);
     2287        free(tmpRes);
     2288      }
     2289    }
     2290    else {
    22912291      if(e!=NULL)
    2292             tmp=getMap(e->defaults->content,"mimeType");
     2292        tmp=getMap(e->defaults->content,"mimeType");
    22932293      else
    2294             tmp=NULL;
     2294        tmp=NULL;
    22952295       
    2296         map* tmp1=getMap(m->content,"encoding");
    2297         map* tmp2=getMap(m->content,"mimeType");
    2298         map* tmp3=getMap(m->content,"value");
    2299         int hasValue=1;
    2300         if(tmp3==NULL){
    2301               tmp3=createMap("value","");
    2302               hasValue=-1;
    2303         }
    2304 
    2305        if( ( tmp1 != NULL && strncmp(tmp1->value,"base64",6) == 0 )  // if encoding is base64
    2306                 ||                                                           // or if
    2307                 ( tmp2 != NULL && ( strstr(tmp2->value,"text") == NULL //  mime type is not text
    2308                                     &&                                   //  nor
    2309                                                             strstr(tmp2->value,"xml") == NULL  //  xml
    2310                                                                 &&                                          // nor
    2311                                                                 strstr(tmp2->value,"javascript") == NULL  // javascript
    2312                                                                 &&
    2313                                                                 strstr(tmp2->value,"json") == NULL
    2314                                                                 &&
    2315                                                                 strstr(tmp2->value,"ecmascript") == NULL
    2316                                                                 &&
    2317                                                                 // include for backwards compatibility,
    2318                                                                 // although correct mime type is ...kml+xml:
    2319                                                                 strstr(tmp2->value,"google-earth.kml") == NULL                                                         
    2320                                                           )
    2321                 )
    2322                   ) {                                                      // then     
    2323               map* rs=getMap(m->content,"size");                       // obtain size
    2324               bool isSized=true;
    2325               if(rs==NULL){
    2326                 char tmp1[1024];
    2327                 sprintf(tmp1,"%ld",strlen(tmp3->value));
    2328                 rs=createMap("size",tmp1);
    2329                 isSized=false;
    2330               }
    2331 
    2332             xmlAddChild(nc3,xmlNewText(BAD_CAST base64(tmp3->value, atoi(rs->value))));  // base 64 encode in XML
     2296      map* tmp1=getMap(m->content,"encoding");
     2297      map* tmp2=getMap(m->content,"mimeType");
     2298      map* tmp3=getMap(m->content,"value");
     2299      int hasValue=1;
     2300      if(tmp3==NULL){
     2301        tmp3=createMap("value","");
     2302        hasValue=-1;
     2303      }
     2304
     2305      if( ( tmp1 != NULL && strncmp(tmp1->value,"base64",6) == 0 )     // if encoding is base64
     2306          ||                                                           // or if
     2307          ( tmp2 != NULL && ( strstr(tmp2->value,"text") == NULL       //  mime type is not text
     2308                              &&                                       //  nor
     2309                              strstr(tmp2->value,"xml") == NULL        //  xml
     2310                              &&                                       // nor
     2311                              strstr(tmp2->value,"javascript") == NULL // javascript
     2312                              &&
     2313                              strstr(tmp2->value,"json") == NULL
     2314                              &&
     2315                              strstr(tmp2->value,"ecmascript") == NULL
     2316                              &&
     2317                              // include for backwards compatibility,
     2318                              // although correct mime type is ...kml+xml:
     2319                              strstr(tmp2->value,"google-earth.kml") == NULL                                                    )
     2320            )
     2321          ) {                                                    // then       
     2322        map* rs=getMap(m->content,"size");                       // obtain size
     2323        bool isSized=true;
     2324        if(rs==NULL){
     2325          char tmp1[1024];
     2326          sprintf(tmp1,"%ld",strlen(tmp3->value));
     2327          rs=createMap("size",tmp1);
     2328          isSized=false;
     2329        }
     2330         
     2331        xmlAddChild(nc3,xmlNewText(BAD_CAST base64(tmp3->value, atoi(rs->value))));  // base 64 encode in XML
    23332332               
    2334             if(tmp1==NULL || (tmp1!=NULL && strncmp(tmp1->value,"base64",6)!=0)) {
    2335                xmlAttrPtr ap = xmlHasProp(nc3, BAD_CAST "encoding");
    2336                if (ap != NULL) {
    2337                   xmlRemoveProp(ap);
    2338                }                       
    2339                xmlNewProp(nc3,BAD_CAST "encoding",BAD_CAST "base64");
    2340                 }
     2333        if(tmp1==NULL || (tmp1!=NULL && strncmp(tmp1->value,"base64",6)!=0)) {
     2334          xmlAttrPtr ap = xmlHasProp(nc3, BAD_CAST "encoding");
     2335          if (ap != NULL) {
     2336            xmlRemoveProp(ap);
     2337          }                     
     2338          xmlNewProp(nc3,BAD_CAST "encoding",BAD_CAST "base64");
     2339        }
    23412340               
    2342             if(!isSized){
    2343               freeMap(&rs);
    2344               free(rs);
    2345             }
     2341        if(!isSized){
     2342          freeMap(&rs);
     2343          free(rs);
     2344        }
    23462345      }
    23472346      else if (tmp2!=NULL) {                                 // else (text-based format)
    2348             if(strstr(tmp2->value, "javascript") != NULL ||      //    if javascript put code in CDATA block
    2349                strstr(tmp2->value, "json") != NULL ||            //    (will not be parsed by XML reader)
    2350                strstr(tmp2->value, "ecmascript") != NULL
    2351                   ) {
    2352                xmlAddChild(nc3,xmlNewCDataBlock(doc,BAD_CAST tmp3->value,strlen(tmp3->value)));
    2353                 }   
    2354             else {                                                     // else
    2355                if (strstr(tmp2->value, "xml") != NULL ||                 // if XML-based format
    2356                            // include for backwards compatibility,
    2357                            // although correct mime type is ...kml+xml:           
    2358                    strstr(tmp2->value, "google-earth.kml") != NULL
    2359                           ) {
     2347        if(strstr(tmp2->value, "javascript") != NULL ||      //    if javascript put code in CDATA block
     2348           strstr(tmp2->value, "json") != NULL ||            //    (will not be parsed by XML reader)
     2349           strstr(tmp2->value, "ecmascript") != NULL
     2350           ) {
     2351          xmlAddChild(nc3,xmlNewCDataBlock(doc,BAD_CAST tmp3->value,strlen(tmp3->value)));
     2352        }   
     2353        else {                                                     // else
     2354          if (strstr(tmp2->value, "xml") != NULL ||                 // if XML-based format
     2355              // include for backwards compatibility,
     2356              // although correct mime type is ...kml+xml:                 
     2357              strstr(tmp2->value, "google-earth.kml") != NULL
     2358              ) {
    23602359                         
    2361                   int li=zooXmlAddDoc(tmp3->value);
    2362                   xmlDocPtr doc = iDocs[li];
    2363                   xmlNodePtr ir = xmlDocGetRootElement(doc);
    2364                   xmlAddChild(nc3,ir);
    2365                }
    2366                else                                                     // else
    2367                   xmlAddChild(nc3,xmlNewText(BAD_CAST tmp3->value));    //   add text node
    2368             }
    2369             xmlAddChild(nc2,nc3);
     2360            int li=zooXmlAddDoc(tmp3->value);
     2361            xmlDocPtr doc = iDocs[li];
     2362            xmlNodePtr ir = xmlDocGetRootElement(doc);
     2363            xmlAddChild(nc3,ir);
     2364          }
     2365          else                                                     // else     
     2366            xmlAddChild(nc3,xmlNewText(BAD_CAST tmp3->value));    //   add text node
     2367        }
     2368        xmlAddChild(nc2,nc3);
    23702369      }
    23712370      else {
    2372             xmlAddChild(nc3,xmlNewText(BAD_CAST tmp3->value));
     2371        xmlAddChild(nc3,xmlNewText(BAD_CAST tmp3->value));
    23732372      }
    23742373         
    23752374      if(hasValue<0) {
    2376             freeMap(&tmp3);
    2377             free(tmp3);
     2375        freeMap(&tmp3);
     2376        free(tmp3);
    23782377      }
    23792378    }
     
    23872386      xmlNewNsProp(nc3,ns_xlink,BAD_CAST "href",BAD_CAST tmpMap->value);
    23882387   
    2389         tmp=m->content;
     2388    tmp=m->content;
    23902389    while(tmp!=NULL) {
    23912390      if(strcasecmp(tmp->name,"mimeType")==0 ||
    2392              strcasecmp(tmp->name,"encoding")==0 ||
    2393              strcasecmp(tmp->name,"schema")==0 ||
    2394              strcasecmp(tmp->name,"datatype")==0 ||
    2395              strcasecmp(tmp->name,"uom")==0){
    2396 
    2397             if(strcasecmp(tmp->name,"datatype")==0)
    2398               xmlNewProp(nc3,BAD_CAST "mimeType",BAD_CAST "text/plain");
    2399             else
    2400               xmlNewProp(nc3,BAD_CAST tmp->name,BAD_CAST tmp->value);
     2391         strcasecmp(tmp->name,"encoding")==0 ||
     2392         strcasecmp(tmp->name,"schema")==0 ||
     2393         strcasecmp(tmp->name,"datatype")==0 ||
     2394         strcasecmp(tmp->name,"uom")==0){
     2395
     2396        if(strcasecmp(tmp->name,"datatype")==0)
     2397          xmlNewProp(nc3,BAD_CAST "mimeType",BAD_CAST "text/plain");
     2398        else
     2399          xmlNewProp(nc3,BAD_CAST tmp->name,BAD_CAST tmp->value);
    24012400      }
    24022401      tmp=tmp->next;
     
    26602659  free(tmpMap1->value);
    26612660  tmpMap1->value=(char*) malloc((count+1)*sizeof(char)); 
    2662   fread(tmpMap1->value,count,sizeof(char),file);
     2661  fread(tmpMap1->value,1,count,file);
     2662  tmpMap1->value[count]=0;
    26632663  fclose(file);
    2664   char rsize[100];
     2664  char rsize[1000];
    26652665  sprintf(rsize,"%ld",count);
    26662666  addToMap(content,"size",rsize);
     
    28332833              map* size=getMap(tmpI->content,"size");
    28342834              if(size!=NULL && toto!=NULL)
    2835                 fwrite(toto->value,1,atoi(size->value)*sizeof(char),ofile);
     2835                fwrite(toto->value,1,(atoi(size->value))*sizeof(char),ofile);
    28362836              else
    28372837                if(toto!=NULL && toto->value!=NULL)
     
    30443044  bmem = BIO_new(BIO_s_mem());
    30453045  b64 = BIO_push(b64, bmem);
    3046   BIO_write(b64, input, length+1);
     3046  BIO_write(b64, input, length);
    30473047  BIO_flush(b64);
    30483048  BIO_get_mem_ptr(b64, &bptr);
     
    30503050  char *buff = (char *)malloc((bptr->length+1)*sizeof(char));
    30513051  memcpy(buff, bptr->data, bptr->length);
    3052   buff[bptr->length-1] = 0;
     3052  buff[bptr->length] = 0;
    30533053
    30543054  BIO_free_all(b64);
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