Changeset 3824 in josm for trunk/src/org/openstreetmap/josm/data/validation
- Timestamp:
- 2011-01-27T21:18:27+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
r3803 r3824 26 26 import org.openstreetmap.josm.gui.mappaint.ElemStyles; 27 27 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles; 28 import org.openstreetmap.josm.gui.mappaint.StyleCache; 29 import org.openstreetmap.josm.gui.mappaint.xml.AreaPrototype; 28 30 29 31 public class MultipolygonTest extends Test { … … 53 55 public void initialize() throws Exception { 54 56 styles = MapPaintStyles.getStyles(); 55 57 } 56 58 57 59 private List<List<Node>> joinWays(Collection<Way> ways) { … … 113 115 public void visit(Way w) { 114 116 if (styles != null && !w.isClosed()) { 115 ElemStyle e = styles.getArea(w);116 if (e instanceof AreaElemStyle && !((AreaElemStyle)e).closed) {117 AreaPrototype e = styles.getAreaProto(w); 118 if (e != null && ! e.closed) { 117 119 errors.add( new TestError(this, Severity.WARNING, tr("Area style way is not closed"), NOT_CLOSED, w)); 118 120 } … … 140 142 List<List<Node>> innerWays = joinWays(polygon.getInnerWays()); // Side effect - sets nonClosedWays 141 143 List<List<Node>> outerWays = joinWays(polygon.getOuterWays()); 142 143 144 if (styles != null) { 144 ElemStyle wayStyle = styles.get(r); 145 145 StyleCache sc = styles.get(r); 146 147 AreaElemStyle area = null; 148 for (ElemStyle s : sc.getStyles()) { 149 if (s instanceof AreaElemStyle) { 150 area = (AreaElemStyle) s; 151 break; 152 } 153 } 146 154 // If area style was not found for relation then use style of ways 147 if ( !(wayStyle instanceof AreaElemStyle)) {155 if (area == null) { 148 156 errors.add( new TestError(this, Severity.OTHER, tr("No style in multipolygon relation"), 149 157 NO_STYLE_POLYGON, r)); 150 158 for (Way w : polygon.getOuterWays()) { 151 wayStyle = styles.getArea(w); 152 if(wayStyle != null) { 159 160 for (ElemStyle s : styles.getArea(w).getStyles()) { 161 if (s instanceof AreaElemStyle) { 162 area = (AreaElemStyle) s; 163 break; 164 } 165 } 166 if (area != null) { 153 167 break; 154 168 } … … 156 170 } 157 171 158 if ( wayStyle instanceof AreaElemStyle) {172 if (area != null) { 159 173 for (Way wInner : polygon.getInnerWays()) { 160 ElemStyle innerStyle = styles.get(wInner); 161 if (wayStyle != null && wayStyle.equals(innerStyle)) { 174 AreaElemStyle areaInner = null; 175 for (ElemStyle s : styles.get(wInner).getStyles()) { 176 if (s instanceof AreaElemStyle) { 177 areaInner = (AreaElemStyle) s; 178 break; 179 } 180 } 181 182 if (areaInner != null && area.equals(areaInner)) { 162 183 List<OsmPrimitive> l = new ArrayList<OsmPrimitive>(); 163 184 l.add(r); … … 168 189 } 169 190 for (Way wOuter : polygon.getOuterWays()) { 170 ElemStyle outerStyle = styles.get(wOuter); 171 if (outerStyle instanceof AreaElemStyle && !wayStyle.equals(outerStyle)) { 191 AreaElemStyle areaOuter = null; 192 for (ElemStyle s : styles.get(wOuter).getStyles()) { 193 if (s instanceof AreaElemStyle) { 194 areaOuter = (AreaElemStyle) s; 195 break; 196 } 197 } 198 if (areaOuter != null && !area.equals(areaOuter)) { 172 199 List<OsmPrimitive> l = new ArrayList<OsmPrimitive>(); 173 200 l.add(r);
Note:
See TracChangeset
for help on using the changeset viewer.