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

Function msSLDGetFilter

mapogcsld.c:5610–5662  ·  view source on GitHub ↗

/ msSLDGetFilter */ / Get the corresponding ogc Filter based on the class */ expression. TODO : move function to mapogcfilter.c when */ finished. */ /

Source from the content-addressed store, hash-verified

5608/* finished. */
5609/************************************************************************/
5610char *msSLDGetFilter(classObj *psClass, const char *pszWfsFilter)
5611{
5612 char *pszFilter = NULL;
5613 char szBuffer[500];
5614 char *pszOgcFilter = NULL;
5615
5616 if (psClass && psClass->expression.string)
5617 {
5618 /* string expression */
5619 if (psClass->expression.type == MS_STRING)
5620 {
5621 if (psClass->layer && psClass->layer->classitem)
5622 {
5623 if (pszWfsFilter)
5624 snprintf(szBuffer, sizeof(szBuffer), "<ogc:Filter><ogc:And>%s<ogc:PropertyIsEqualTo><ogc:PropertyName>%s</ogc:PropertyName><ogc:Literal>%s</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>\n",
5625 pszWfsFilter, psClass->layer->classitem, psClass->expression.string);
5626 else
5627 snprintf(szBuffer, sizeof(szBuffer), "<ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>%s</ogc:PropertyName><ogc:Literal>%s</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>\n",
5628 psClass->layer->classitem, psClass->expression.string);
5629 pszFilter = msStrdup(szBuffer);
5630 }
5631 }
5632 else if (psClass->expression.type == MS_EXPRESSION)
5633 {
5634 pszFilter = msSLDParseLogicalExpression(psClass->expression.string,
5635 pszWfsFilter);
5636 }
5637 else if (psClass->expression.type == MS_REGEX)
5638 {
5639 if (psClass->layer && psClass->layer->classitem && psClass->expression.string)
5640 {
5641 pszOgcFilter = msSLDConvertRegexExpToOgcIsLike(psClass->expression.string);
5642
5643 if (pszWfsFilter)
5644 snprintf(szBuffer, sizeof(szBuffer), "<ogc:Filter><ogc:And>%s<ogc:PropertyIsLike wildCard=\"*\" singleChar=\".\" escape=\"\\\"><ogc:PropertyName>%s</ogc:PropertyName><ogc:Literal>%s</ogc:Literal></ogc:PropertyIsLike></ogc:And></ogc:Filter>\n",
5645 pszWfsFilter, psClass->layer->classitem, pszOgcFilter);
5646 else
5647 snprintf(szBuffer, sizeof(szBuffer), "<ogc:Filter><ogc:PropertyIsLike wildCard=\"*\" singleChar=\".\" escape=\"\\\"><ogc:PropertyName>%s</ogc:PropertyName><ogc:Literal>%s</ogc:Literal></ogc:PropertyIsLike></ogc:Filter>\n",
5648 psClass->layer->classitem, pszOgcFilter);
5649
5650 free(pszOgcFilter);
5651
5652 pszFilter = msStrdup(szBuffer);
5653 }
5654 }
5655 }
5656 else if (pszWfsFilter)
5657 {
5658 snprintf(szBuffer, sizeof(szBuffer), "<ogc:Filter>%s</ogc:Filter>\n", pszWfsFilter);
5659 pszFilter = msStrdup(szBuffer);
5660 }
5661 return pszFilter;
5662}
5663
5664#endif

Callers 1

msSLDGenerateSLDLayerFunction · 0.85

Calls 3

msStrdupFunction · 0.85

Tested by

no test coverage detected