Ignore:
Timestamp:
2009-01-01T17:17:44+01:00 (15 years ago)
Author:
stoecker
Message:

add error handling for multipolygon drawing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

    r1197 r1200  
    33
    44import static org.openstreetmap.josm.tools.I18n.marktr;
     5import static org.openstreetmap.josm.tools.I18n.tr;
    56
    67import java.awt.BasicStroke;
     
    212213    }
    213214
    214     public Collection<Way> joinWays(Collection<Way> join)
     215    public Collection<Way> joinWays(Collection<Way> join, OsmPrimitive errs)
    215216    {
    216217        Collection<Way> res = new LinkedList<Way>();
     
    290291            if(!w.isClosed())
    291292            {
    292 System.out.println("ERROR: multipolygon way is not closed." + w);
     293                if(errs != null)
     294                {
     295                    errs.putError(tr("multipolygon way ''{0}'' is not closed.",
     296                    w.getName()), true);
     297                }
    293298            }
    294299            res.add(w);
     
    296301
    297302        return res;
     303    }
     304
     305    public void drawSelectedRelation(Relation r)
     306    {
     307        for (RelationMember m : r.members)
     308        {
     309            if (!m.member.incomplete && !m.member.deleted
     310            && !(m.member instanceof Relation))
     311            {
     312                /* nodes drawn on second call */
     313                if(!(m.member instanceof Node))
     314                    drawSelected(m.member, styles.get(m.member), true, true);
     315                alreadyDrawn.add(m.member);
     316            }
     317        }
    298318    }
    299319
     
    348368        {
    349369            if(r.selected)
    350             {
    351                 for (RelationMember m : r.members)
    352                 {
    353                     if (!m.member.incomplete && !m.member.deleted
    354                     && !(m.member instanceof Relation))
    355                     {
    356                         /* nodes drawn on second call */
    357                         if(!(m.member instanceof Node))
    358                             drawSelected(m.member, styles.get(m.member), true, true);
    359                         alreadyDrawn.add(m.member);
    360                     }
    361                 }
    362             }
     370                drawSelectedRelation(r);
    363371            return;
    364372        }
     
    368376        Collection<Way> innerclosed = new LinkedList<Way>();
    369377        Collection<Way> outerclosed = new LinkedList<Way>();
     378        Boolean incomplete = false;
     379
     380        r.clearErrors();
    370381
    371382        for (RelationMember m : r.members)
    372383        {
    373             if (!m.member.incomplete && !m.member.deleted)
     384            if(m.member.incomplete)
     385                incomplete = true;
     386            else if(m.member.deleted)
     387                r.putError(tr("Deleted member ''{0}'' in relation.",
     388                m.member.getName()), true);
     389            else
    374390            {
    375391                if(m.member instanceof Way)
     
    378394                    if(w.nodes.size() < 2)
    379395                    {
    380 System.out.println("ERROR: Way with less than two points " + w);
     396                        r.putError(tr("Way ''{0}'' with less than two points.",
     397                        w.getName()), true);
    381398                    }
    382399                    else if("inner".equals(m.role))
     
    386403                    else
    387404                    {
    388 System.out.println("ERROR: No useful role for Way " + w);
     405                        r.putError(tr("No useful role ''{0}'' for Way ''{1}''.",
     406                        m.role == null ? "" : m.role, w.getName()), true);
    389407                        if(m.role == null || m.role.length() == 0)
    390408                            outer.add(w);
     
    396414                {
    397415                    /* nodes drawn on second call */
    398 System.out.println("ERROR: Non-Way in multipolygon " + m.member);
     416                    r.putError(tr("Non-Way ''{0}'' in multipolygon.",
     417                    m.member.getName()), true);
    399418                }
    400419            }
     
    426445            if(join.size() != 0)
    427446            {
    428                 for(Way w : joinWays(join))
     447                for(Way w : joinWays(join, incomplete ? null : r))
    429448                    outerclosed.add(w);
    430449            }
     
    439458            if(join.size() != 0)
    440459            {
    441                 for(Way w : joinWays(join))
     460                for(Way w : joinWays(join, incomplete ? null : r))
    442461                    innerclosed.add(w);
    443462            }
     
    504523                    if(wayStyle.equals(innerStyle))
    505524                    {
    506 System.out.println("WARNING: Inner waystyle equals multipolygon for way " + wInner);
     525                        r.putError(tr("Style for inner way ''{0}'' equals multipolygon.",
     526                        wInner.getName()), false);
    507527                        if(!r.selected)
    508528                            alreadyDrawnAreas.add(wInner);
     
    528548                    && !wayStyle.equals(outerStyle))
    529549                    {
    530 System.out.println("ERROR: Outer waystyle does not match multipolygon for way " + wOuter);
     550                        r.putError(tr("Style for outer way ''{0}'' mismatches.",
     551                        wOuter.getName()), true);
    531552                    }
    532553                    if(r.selected)
     
    540561            }
    541562        }
     563        else if(r.selected)
     564            drawSelectedRelation(r);
    542565    }
    543566
Note: See TracChangeset for help on using the changeset viewer.