Rule constructor
Rule(
- int index,
- 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;
}
}
});
}
}