- Timestamp:
- May 3, 2017, 12:53:06 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/prototype-v0/zoo-project/zoo-kernel/response_print.c
r821 r822 646 646 void printGetCapabilitiesForProcess(registry *reg, maps* m,xmlNodePtr nc,service* serv){ 647 647 xmlNsPtr ns,ns_ows,ns_xml,ns_xlink; 648 xmlNodePtr n=NULL,nc1,nc2 ;648 xmlNodePtr n=NULL,nc1,nc2,nc3; 649 649 map* version=getMapFromMaps(m,"main","rversion"); 650 650 int vid=getVersionId(version->value); … … 667 667 limit=7; 668 668 } 669 nc3=NULL; 669 670 for(;i<limit;i+=2){ 670 671 if(capabilities[vid][i]==NULL) … … 690 691 printDescription(nc1,ns_ows,serv->name,serv->content,vid); 691 692 tmp1=serv->metadata; 692 while(tmp1!=NULL){ 693 694 addMetadata(tmp1,nc1,ns_ows,ns_xlink); 695 696 /*while(tmp1!=NULL){ 693 697 nc2 = xmlNewNode(ns_ows, BAD_CAST "Metadata"); 694 xmlNewNsProp(nc2,ns_xlink,BAD_CAST tmp1->name,BAD_CAST tmp1->value); 695 xmlAddChild(nc1,nc2); 698 if(strcmp(tmp1->name,"title")==0 || 699 strcmp(tmp1->name,"href")==0 || 700 strcmp(tmp1->name,"role")==0 || 701 strcmp(tmp1->name,"link_type")==0){ 702 xmlNewNsProp(nc2,ns_xlink,BAD_CAST tmp1->name,BAD_CAST tmp1->value); 703 xmlAddChild(nc1,nc2); 704 }else{ 705 if(nc3==NULL) 706 nc3 = xmlNewNode(ns_ows, BAD_CAST "AdditionalParameter"); 707 xmlNodePtr nc4 = xmlNewNode(ns_ows, BAD_CAST "Name"); 708 xmlAddChild(nc4,xmlNewText(BAD_CAST tmp1->name)); 709 xmlNodePtr nc5 = xmlNewNode(ns_ows, BAD_CAST "Value"); 710 xmlAddChild(nc5,xmlNewText(BAD_CAST tmp1->value)); 711 xmlAddChild(nc3,nc4); 712 xmlAddChild(nc3,nc5); 713 } 696 714 tmp1=tmp1->next; 697 } 698 715 }*/ 716 if(nc3!=NULL) 717 xmlAddChild(nc1,nc3); 699 718 xmlAddChild(nc,nc1); 700 719 } 720 701 721 } 702 722 … … 734 754 } 735 755 } 756 } 757 758 int addMetadata(map* meta,xmlNodePtr nc,xmlNsPtr ns_ows,xmlNsPtr ns_xlink){ 759 int hasTitle=-1; 760 int hasValue=-1; 761 xmlNodePtr nc1; 762 map* oMeta=meta; 763 int isAdditionalParameters=-1; 764 //if(count(oMeta)>=2){ 765 int level=0; 766 map* test=getMap(meta,"title"); 767 if(test!=NULL) 768 level+=1; 769 test=getMap(meta,"href"); 770 if(test!=NULL) 771 level+=1; 772 test=getMap(meta,"role"); 773 if(test!=NULL) 774 level+=1; 775 if(count(oMeta)>level+1) 776 isAdditionalParameters=1; 777 //} 778 char *ctitle=NULL; 779 while(meta!=NULL){ 780 if(hasTitle<0) 781 if(isAdditionalParameters<0) 782 nc1 = xmlNewNode(ns_ows, BAD_CAST "Metadata"); 783 else 784 if(hasValue<0) 785 nc1 = xmlNewNode(ns_ows, BAD_CAST "AdditionalParameters"); 786 if(strncasecmp(meta->name,"title",5)==0 || 787 strcasecmp(meta->name,"href")==0 || 788 strcasecmp(meta->name,"role")==0 ){ 789 int index=5; 790 if(strncasecmp(meta->name,"title",5)==0){ 791 index=6; 792 hasTitle=1; 793 if(ctitle!=NULL && strcasecmp(meta->value,ctitle)!=0){ 794 xmlAddChild(nc,nc1); 795 nc1 = xmlNewNode(ns_ows, BAD_CAST "AdditionalParameters"); 796 free(ctitle); 797 ctitle=NULL; 798 } 799 if(ctitle==NULL){ 800 char *tmp=(char*)malloc((strlen(meta->name)+1)*sizeof(char)); 801 snprintf(tmp,index,"%s",meta->name); 802 xmlNewNsProp(nc1,ns_xlink,BAD_CAST tmp,BAD_CAST meta->value); 803 free(tmp); 804 } 805 if(ctitle!=NULL) 806 free(ctitle); 807 ctitle=zStrdup(meta->value); 808 } 809 }else{ 810 xmlNodePtr nc2 = xmlNewNode(ns_ows, BAD_CAST "AdditionalParameter"); 811 xmlNodePtr nc3 = xmlNewNode(ns_ows, BAD_CAST "Name"); 812 xmlAddChild(nc3,xmlNewText(BAD_CAST meta->name)); 813 xmlNodePtr nc4 = xmlNewNode(ns_ows, BAD_CAST "Value"); 814 xmlAddChild(nc4,xmlNewText(BAD_CAST meta->value)); 815 xmlAddChild(nc2,nc3); 816 xmlAddChild(nc2,nc4); 817 xmlAddChild(nc1,nc2); 818 hasTitle=-1; 819 } 820 meta=meta->next; 821 if(hasTitle<0){ 822 if(isAdditionalParameters) 823 xmlAddChild(nc,nc1); 824 hasValue=1; 825 } 826 } 827 if(oMeta!=NULL && hasValue<0 && nc1!=NULL){ 828 xmlAddChild(nc,nc1); 829 } 736 830 } 737 831 … … 843 937 tmp1=serv->metadata; 844 938 while(tmp1!=NULL){ 845 nc1 = xmlNewNode(ns_ows, BAD_CAST "Metadata"); 939 addMetadata(tmp1,nc,ns_ows,ns_xlink); 940 /*nc1 = xmlNewNode(ns_ows, BAD_CAST "Metadata"); 846 941 xmlNewNsProp(nc1,ns_xlink,BAD_CAST tmp1->name,BAD_CAST tmp1->value); 847 xmlAddChild(nc,nc1); 942 xmlAddChild(nc,nc1);*/ 848 943 tmp1=tmp1->next; 849 944 } … … 855 950 } 856 951 }else{ 952 tmp1=serv->metadata; 953 addMetadata(tmp1,nc,ns_ows,ns_xlink); 857 954 addInheritedMetadata(nc,ns_ows,ns_xlink,reg,m,serv); 858 955 } … … 1340 1437 xmlNsPtr ns_xlink=usedNs[xlinkId]; 1341 1438 1342 while(metadata!=NULL){ 1343 nc6=xmlNewNode(ns_ows, BAD_CAST "Metadata"); 1344 xmlNewNsProp(nc6,ns_xlink,BAD_CAST metadata->name,BAD_CAST metadata->value); 1345 xmlAddChild(nc2,nc6); 1346 metadata=metadata->next; 1347 } 1439 dumpMap(metadata); 1440 addMetadata(metadata,nc2,ns_ows,ns_xlink); 1348 1441 1349 1442 } … … 1982 2075 elements* ecurs=getElements(e,(e!=NULL?e->name:m->name)); 1983 2076 ecurs=ecurs->child; 1984 while(curs!=NULL ){2077 while(curs!=NULL/* && ecurs!=NULL*/){ 1985 2078 ecurs=getElements(ecurs,(curs->name)); 1986 2079 map* inRequest=getMap(curs->content,"inRequest");
Note: See TracChangeset
for help on using the changeset viewer.