MCPcopy Index your code
hub / github.com/MapServer/MapServer / FLTGetFeatureIdCommonExpression

Function FLTGetFeatureIdCommonExpression

mapogcfiltercommon.c:613–673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

611}
612
613char *FLTGetFeatureIdCommonExpression(FilterEncodingNode *psFilterNode, layerObj *lp)
614{
615
616 char *pszExpression = NULL;
617 int nTokens = 0, i=0, bString=0;
618 char **tokens = NULL;
619 const char *pszAttribute=NULL;
620
621#if defined(USE_WMS_SVR) || defined (USE_WFS_SVR) || defined (USE_WCS_SVR) || defined(USE_SOS_SVR)
622 if (psFilterNode->pszValue)
623 {
624 pszAttribute = msOWSLookupMetadata(&(lp->metadata), "OFG", "featureid");
625 if (pszAttribute)
626 {
627 tokens = msStringSplit(psFilterNode->pszValue,',', &nTokens);
628 if (tokens && nTokens > 0)
629 {
630 for (i=0; i<nTokens; i++)
631 {
632 char *pszTmp = NULL;
633 int bufferSize = 0;
634
635 if (i == 0)
636 {
637 if(FLTIsNumeric(tokens[0]) == MS_FALSE)
638 bString = 1;
639 }
640
641
642 if (bString)
643 {
644 bufferSize = 11+strlen(tokens[i])+strlen(pszAttribute)+1;
645 pszTmp = (char *)msSmallMalloc(bufferSize);
646 snprintf(pszTmp, bufferSize, "(\"[%s]\" ==\"%s\")" , pszAttribute, tokens[i]);
647 }
648 else
649 {
650 bufferSize = 8+strlen(tokens[i])+strlen(pszAttribute)+1;
651 pszTmp = (char *)msSmallMalloc(bufferSize);
652 snprintf(pszTmp, bufferSize, "([%s] == %s)" , pszAttribute, tokens[i]);
653 }
654
655 if (pszExpression != NULL)
656 pszExpression = msStringConcatenate(pszExpression, " OR ");
657 else
658 pszExpression = msStringConcatenate(pszExpression, "(");
659 pszExpression = msStringConcatenate(pszExpression, pszTmp);
660 msFree(pszTmp);
661 }
662
663 msFreeCharArray(tokens, nTokens);
664 }
665 }
666 /*opening and closing brackets are needed for mapserver expressions*/
667 if (pszExpression)
668 pszExpression = msStringConcatenate(pszExpression, ")");
669 }
670#endif

Callers 1

FLTGetCommonExpressionFunction · 0.85

Calls 7

msOWSLookupMetadataFunction · 0.85
msStringSplitFunction · 0.85
FLTIsNumericFunction · 0.85
msSmallMallocFunction · 0.85
msStringConcatenateFunction · 0.85
msFreeFunction · 0.85
msFreeCharArrayFunction · 0.85

Tested by

no test coverage detected