Rule constructor

Rule(
  1. int index,
  2. XmlElement ruleXmlElement
)

Implementation

Rule(this.index, this.ruleXmlElement) {
  var ruleName = _findSingleElement(ruleXmlElement, RULE_NAME);

  var innerText = ruleName?.innerText;
  if (innerText == null || innerText.isEmpty) {
    innerText = "Rule $index";
  }
  name = innerText;

  var pointSymbolizersList =
      ruleXmlElement.findElements(POINTSYMBOLIZER, namespace: DEF_NSP);
  for (var pointSymbolizer in pointSymbolizersList) {
    PointSymbolizer ps = PointSymbolizer(pointSymbolizer);
    pointSymbolizers.add(ps);
  }
  var lineSymbolizersList =
      ruleXmlElement.findElements(LINESYMBOLIZER, namespace: DEF_NSP);
  for (var lineSymbolizer in lineSymbolizersList) {
    LineSymbolizer ls = LineSymbolizer(lineSymbolizer);
    lineSymbolizers.add(ls);
  }
  var polygonSymbolizersList =
      ruleXmlElement.findElements(POLYGONSYMBOLIZER, namespace: DEF_NSP);
  for (var polygonSymbolizer in polygonSymbolizersList) {
    PolygonSymbolizer ls = PolygonSymbolizer(polygonSymbolizer);
    polygonSymbolizers.add(ls);
  }
  var textSymbolizersList =
      ruleXmlElement.findElements(TEXTSYMBOLIZER, namespace: DEF_NSP);
  for (var textSymbolizer in textSymbolizersList) {
    TextSymbolizer ts = TextSymbolizer(textSymbolizer);
    textSymbolizers.add(ts);
  }

  // find filters
  var filtersList = ruleXmlElement.findElements(FILTER, namespace: DEF_NSP);
  if (filtersList.isNotEmpty) {
    filter = Filter();
    filtersList.forEach((element) {
      // check unique filter, right now only a simple is supported
      var pEquals = _findSingleElement(element, PROPERTY_IS_EQUAL_TO);
      if (pEquals != null) {
        var pName = _findSingleElement(pEquals, PROPERTY_NAME);
        var literal = _findSingleElement(pEquals, LITERAL);
        if (pName != null && literal != null) {
          var fieldName = pName.text;
          var fieldValue = literal.text;
          filter!.uniqueValueKey = fieldName;
          filter!.uniqueValueValue = fieldValue;
        }
      }
    });
  }
}