Ignore:
Timestamp:
2009-10-15T04:45:06+02:00 (15 years ago)
Author:
Gubaer
Message:

fixed #3719: Upload dialog still lists closed changesets after JOSM knows they've been closed
fixed #3668: Upload dialog: comment textbox buggy
Added context sensitive help to upload dialog
Improved error handling for errors due to closing already closed changesets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java

    r2246 r2289  
    1010import java.net.URL;
    1111import java.net.UnknownHostException;
     12import java.text.DateFormat;
     13import java.text.ParseException;
     14import java.text.SimpleDateFormat;
     15import java.util.Date;
    1216import java.util.regex.Matcher;
    1317import java.util.regex.Pattern;
    1418
    1519import org.openstreetmap.josm.Main;
     20import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
    1621import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1722import org.openstreetmap.josm.io.OsmApi;
     
    95100                + "dataset violates a precondition.<br>" + "The error message is:<br>" + "{0}" + "</html>", e
    96101                .getMessage().replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;"));
     102        return msg;
     103    }
     104
     105    /**
     106     * Explains an error due to a 409 conflict
     107     *
     108     * @param e the exception
     109     */
     110    public static String explainConflict(OsmApiException e) {
     111        e.printStackTrace();
     112        String msg = e.getErrorHeader();
     113        if (msg != null) {
     114            String pattern = "The changeset (\\d+) was closed at (.*)";
     115            Pattern p = Pattern.compile(pattern);
     116            Matcher m = p.matcher(msg);
     117            if (m.matches()) {
     118                long changesetId = Long.parseLong(m.group(1));
     119                // Example: Tue Oct 15 10:00:00 UTC 2009
     120                DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
     121                Date closeDate = null;
     122                try {
     123                    closeDate = formatter.parse(m.group(2));
     124                } catch(ParseException ex) {
     125                    System.err.println(tr("Failed to parse date ''{0}'' replied by server.", m.group(2)));
     126                    ex.printStackTrace();
     127                }
     128                if (closeDate == null) {
     129                    msg = tr(
     130                            "<html>Closing of changeset <strong>{0}</strong> failed <br>because it has already been closed.</html>",
     131                            changesetId
     132                    );
     133                } else {
     134                    SimpleDateFormat dateFormat = new SimpleDateFormat();
     135                    msg = tr(
     136                            "<html>Closing of changeset <strong>{0}</strong> failed<br>"
     137                            +" because it has already been closed on {1}.</html>",
     138                            changesetId,
     139                            dateFormat.format(closeDate)
     140                    );
     141                }
     142                return msg;
     143            }
     144            msg = tr(
     145                    "<html>The server reported that it has detected a conflict.<br>" +
     146                    "Error message (untranslated):<br>" +
     147                    "{0}",
     148                    msg
     149            );
     150        }
     151        msg = tr(
     152                "<html>The server reported that it has detected a conflict.</html>"
     153        );
    97154        return msg;
    98155    }
Note: See TracChangeset for help on using the changeset viewer.