- Timestamp:
- Aug 16, 2018, 8:00:56 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/prototype-v0/zoo-project/zoo-kernel/response_print.c
r872 r877 693 693 tmp1=serv->metadata; 694 694 695 addMetadata(tmp1,doc,nc1,ns_ows,ns_xlink );695 addMetadata(tmp1,doc,nc1,ns_ows,ns_xlink,vid); 696 696 tmp1=serv->additional_parameters; 697 697 int fromDb=-1; … … 750 750 * @param ns_ows the OWS namespace 751 751 * @param ns_xlink the xlink namespace 752 */ 753 void addMetadata(map* meta,xmlDocPtr doc,xmlNodePtr nc,xmlNsPtr ns_ows,xmlNsPtr ns_xlink){ 752 * @param vid the version of WPS to use (0 for 1.0.0 and 1 for 2.0) 753 */ 754 void addMetadata(map* meta,xmlDocPtr doc,xmlNodePtr nc,xmlNsPtr ns_ows,xmlNsPtr ns_xlink,int vid){ 754 755 int hasTitle=-1; 755 756 int hasValue=-1; … … 757 758 map* oMeta=meta; 758 759 int isAdditionalParameters=-1; 759 //if(count(oMeta)>=2){760 760 int level=0; 761 761 map* test=getMap(meta,"title"); … … 770 770 if(count(oMeta)>level+1) 771 771 isAdditionalParameters=1; 772 //}773 772 char *ctitle=NULL; 774 773 while(meta!=NULL){ … … 815 814 meta=meta->next; 816 815 if(hasTitle<0){ 817 if(isAdditionalParameters)818 xmlAddChild(nc,nc1);819 816 hasValue=1; 817 if(isAdditionalParameters){ 818 if(vid==0){ 819 meta=NULL; 820 break; 821 }else 822 xmlAddChild(nc,nc1); 823 } 820 824 } 821 825 } … … 1049 1053 tmp1=serv->metadata; 1050 1054 while(tmp1!=NULL){ 1051 addMetadata(tmp1,doc,nc,ns_ows,ns_xlink); 1052 /*nc1 = xmlNewNode(ns_ows, BAD_CAST "Metadata"); 1053 xmlNewNsProp(nc1,ns_xlink,BAD_CAST tmp1->name,BAD_CAST tmp1->value); 1054 xmlAddChild(nc,nc1);*/ 1055 addMetadata(tmp1,doc,nc,ns_ows,ns_xlink,vid); 1055 1056 tmp1=tmp1->next; 1056 1057 } … … 1063 1064 }else{ 1064 1065 tmp1=serv->metadata; 1065 addMetadata(tmp1,doc,nc,ns_ows,ns_xlink );1066 addMetadata(tmp1,doc,nc,ns_ows,ns_xlink,vid); 1066 1067 addInheritedMetadata(nc,ns_ows,ns_xlink,reg,m,serv); 1067 1068 tmp1=serv->additional_parameters; 1068 addAdditionalParameters(tmp1,doc,nc,ns_ows,ns_xlink,fromDb); 1069 if(vid!=0) 1070 addAdditionalParameters(tmp1,doc,nc,ns_ows,ns_xlink,fromDb); 1069 1071 } 1070 1072 … … 1126 1128 int isAnyValue=1; 1127 1129 nc2 = xmlNewNode(NULL, BAD_CAST type); 1130 // Extract min/max Occurence information 1128 1131 if(strstr(type,"Input")!=NULL){ 1129 1132 tmp1=getMap(e->content,"minOccurs"); … … 1168 1171 //Build the (Literal/Complex/BoundingBox)Data node 1169 1172 if(strncmp(type,"Output",6)==0){ 1170 if(strncasecmp(e->format,"LITERAL DATA",strlen(e->format))==0)1173 if(strncasecmp(e->format,"LITERAL",7)==0) 1171 1174 nc3 = xmlNewNode(ns1, BAD_CAST "LiteralOutput"); 1172 1175 else if(strncasecmp(e->format,"COMPLEXDATA",strlen(e->format))==0) … … 1214 1217 strcmp(e->format,"BoundingBoxData")==0){ 1215 1218 datatype=2; 1216 nc5 = xmlNewNode(NULL, BAD_CAST "Default"); 1219 if(vid==0) 1220 nc5 = xmlNewNode(NULL, BAD_CAST "Default"); 1221 else{ 1222 xmlNodePtr nc6 = xmlNewNode(ns1, BAD_CAST "Format"); 1223 xmlNewProp(nc6,BAD_CAST "mimeType",BAD_CAST "text/xml"); 1224 xmlNewProp(nc6,BAD_CAST "default",BAD_CAST "true"); 1225 xmlAddChild(nc3,nc6); 1226 nc5 = xmlNewNode(NULL, BAD_CAST "SupportedCRS"); 1227 } 1217 1228 } 1218 1229 else{ … … 1424 1435 strncasecmp(tmp1->name,"range",5)!=0){ 1425 1436 if(datatype!=1){ 1426 char *tmp2=zCapitalize1(tmp1->name); 1427 nc9 = xmlNewNode(NULL, BAD_CAST tmp2); 1428 free(tmp2); 1437 if(datatype==2 && vid==1){ 1438 nc9 = xmlNewNode(ns, BAD_CAST "SupportedCRS"); 1439 xmlNewProp(nc9,BAD_CAST "default",BAD_CAST "true"); 1440 } 1441 else{ 1442 char *tmp2=zCapitalize1(tmp1->name); 1443 nc9 = xmlNewNode(NULL, BAD_CAST tmp2); 1444 free(tmp2); 1445 } 1429 1446 } 1430 1447 else{ … … 1435 1452 xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value)); 1436 1453 if(vid==0 || oI>=3){ 1437 if(vid==0 || oI!=4) 1438 xmlAddChild(nc5,nc9); 1454 if(vid==0 || oI!=4){ 1455 if(datatype==2 && vid==1) 1456 xmlAddChild(nc3,nc9); 1457 else 1458 xmlAddChild(nc5,nc9); 1459 } 1439 1460 if(oI==4 && vid==1){ 1440 1461 xmlNewProp(nc9,BAD_CAST "default",BAD_CAST "true"); … … 1447 1468 hasUOM1=true; 1448 1469 hasUOM=true; 1449 }else 1450 tmp1=tmp1->next; 1470 } 1451 1471 } 1452 1472 } … … 1463 1483 }else{ 1464 1484 if(hasUOM1==false && vid==0){ 1465 xmlFreeNode(nc5); 1485 if(nc5!=NULL) 1486 xmlFreeNode(nc5); 1466 1487 if(datatype==1){ 1467 1488 xmlFreeNode(nc4); 1468 1489 } 1469 1490 } 1470 else 1491 else{ 1471 1492 xmlAddChild(nc3,nc5); 1493 } 1472 1494 } 1473 1495 }else{ 1474 xmlAddChild(nc3,nc5); 1496 if(vid==0) 1497 xmlAddChild(nc3,nc5); 1498 else 1499 xmlFreeNode(nc5); 1475 1500 } 1476 1501 1477 if(datatype !=1&& default1<0){1502 if(datatype==0 && default1<0){ 1478 1503 xmlFreeNode(nc5); 1479 1504 if(datatype!=2){ … … 1530 1555 nc9 = xmlNewNode(ns_ows, BAD_CAST tmp2); 1531 1556 free(tmp2); 1532 //xmlNewProp(nc9, BAD_CAST "default", BAD_CAST "true");1533 1557 xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value)); 1534 1558 xmlAddChild(nc5,nc9); 1535 /*struct iotype * _ltmp=e->supported;1536 while(_ltmp!=NULL){1537 tmp1=getMap(_ltmp->content,"uom");1538 if(tmp1!=NULL){1539 char *tmp2=zCapitalize(tmp1->name);1540 nc9 = xmlNewNode(ns_ows, BAD_CAST tmp2);1541 free(tmp2);1542 xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value));1543 xmlAddChild(nc5,nc9);1544 }1545 _ltmp=_ltmp->next;1546 }*/1547 1548 1559 } 1549 1560 } … … 1560 1571 xmlNsPtr ns_xlink=usedNs[xlinkId]; 1561 1572 1562 //dumpMap(metadata);1563 addMetadata(metadata,doc,nc2,ns_ows,ns_xlink);1564 addAdditionalParameters(e->additional_parameters,doc,nc2,ns_ows,ns_xlink,fromDb);1573 addMetadata(metadata,doc,nc2,ns_ows,ns_xlink,vid); 1574 if(vid!=0) 1575 addAdditionalParameters(e->additional_parameters,doc,nc2,ns_ows,ns_xlink,fromDb); 1565 1576 1566 1577 } 1567 1578 1568 1579 _tmp=e->supported; 1569 if(_tmp==NULL && datatype !=1)1580 if(_tmp==NULL && datatype==0) 1570 1581 _tmp=e->defaults; 1571 1582 … … 1613 1624 strcasecmp(tmp1->name,"extension")!=0){ 1614 1625 if(datatype!=1){ 1615 char *tmp2=zCapitalize1(tmp1->name); 1616 nc6 = xmlNewNode(NULL, BAD_CAST tmp2); 1617 free(tmp2); 1626 if(datatype==2 && vid==1){ 1627 nc6 = xmlNewNode(ns, BAD_CAST "SupportedCRS"); 1628 } 1629 else{ 1630 char *tmp2=zCapitalize1(tmp1->name); 1631 nc6 = xmlNewNode(NULL, BAD_CAST tmp2); 1632 free(tmp2); 1633 } 1618 1634 } 1619 1635 else{ … … 1639 1655 } 1640 1656 if(vid==0 || oI>=3){ 1641 if(vid==0 || oI!=4) 1642 xmlAddChild(nc5,nc6); 1657 if(vid==0 || oI!=4){ 1658 if(datatype==2 && vid==1) 1659 xmlAddChild(nc3,nc6); 1660 else 1661 xmlAddChild(nc5,nc6); 1662 } 1643 1663 else{ 1644 1664 xmlFreeNode(nc6); … … 1658 1678 } 1659 1679 else{ 1660 xmlAddChild(nc3,nc5); 1680 if(datatype!=2) 1681 xmlAddChild(nc3,nc5); 1661 1682 } 1662 1683 1663 1684 }else{ 1664 if(datatype !=1)1685 if(datatype==2 && vid==0) 1665 1686 xmlAddChild(nc3,nc5); 1666 1687 } … … 1678 1699 } 1679 1700 else 1680 if(datatype !=1){1701 if(datatype==0){ 1681 1702 xmlFreeNode(nc4); 1682 1703 xmlAddChild(nc3,nc5); … … 1713 1734 xmlAddChild(nc2,nc3); 1714 1735 }else{ 1715 if(e->child!=NULL){ 1716 if(e->child!=NULL && vid!=0){ 1717 printFullDescription(doc,in,e->child,type,ns,ns_ows,nc2,vid,fromDb,NULL); 1718 } 1736 if(e->child!=NULL && vid!=0){ 1737 printFullDescription(doc,in,e->child,type,ns,ns_ows,nc2,vid,fromDb,NULL); 1719 1738 } 1720 1739 } 1721 1740 if(e->child!=NULL && vid==0){ 1722 xmlFreeNode(nc3);1723 1741 elements* children=dupElements(e->child); 1724 1742 elements* cursor=children; 1725 1743 while(cursor!=NULL){ 1726 char* tmp=strdup(cursor->name); 1727 free(cursor->name); 1728 cursor->name=(char*)malloc((strlen(tmp)+strlen(e->name)+2)*sizeof(char)); 1729 sprintf(cursor->name,"%s.%s",e->name,tmp); 1744 elements* ccursor=cursor; 1745 char* tmp=strdup(ccursor->name); 1746 free(ccursor->name); 1747 ccursor->name=(char*)malloc((strlen(tmp)+strlen(e->name)+2)*sizeof(char)); 1748 sprintf(ccursor->name,"%s.%s",e->name,tmp); 1730 1749 cursor=cursor->next; 1731 1750 } 1732 printFullDescription(doc,in,children,type,ns,ns_ows,nc2,vid,fromDb,serviceType); 1733 xmlAddChild(nc1,nc2); 1751 printFullDescription(doc,in,children,type,ns,ns_ows,nc1,vid,fromDb,serviceType); 1734 1752 freeElements(&children); 1735 1753 free(children); 1736 }else 1737 xmlAddChild(nc1,nc2); 1754 }else{ 1755 if(nc2!=NULL){ 1756 xmlAddChild(nc1,nc2); 1757 } 1758 } 1738 1759 e=e->next; 1739 1760 } … … 1966 1987 nc = xmlNewNode(ns, BAD_CAST "ProcessOutputs"); 1967 1988 } 1989 //dumpMaps(outputs); 1968 1990 maps* mcursor=outputs; 1969 1991 elements* scursor=serv->outputs; … … 1977 1999 if(testResponse==NULL || tmp0==NULL){ 1978 2000 if(vid==0) 1979 printIOType(doc,nc,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid);2001 printIOType(doc,nc,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid); 1980 2002 else 1981 printIOType(doc,n,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid);2003 printIOType(doc,n,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid); 1982 2004 } 1983 2005 else 1984 1985 2006 if(tmp0!=NULL && strncmp(tmp0->value,"true",4)==0){ 1986 2007 if(vid==0) … … 2058 2079 #endif 2059 2080 } 2081 2060 2082 printDocument(m,doc,pid); 2061 2083 … … 2699 2721 return; 2700 2722 } 2723 2724 if(res!=SERVICE_SUCCEEDED){ 2725 printProcessResponse(m,request_inputs1,cpid, 2726 s, s->name,res, // replace serviceProvider with serviceName in stored response file name 2727 request_inputs, 2728 request_outputs); 2729 return; 2730 } 2731 2701 2732 2702 2733 map *tmp1=getMapFromMaps(m,"main","tmpPath");
Note: See TracChangeset
for help on using the changeset viewer.