Changeset 2569 in josm for trunk/src/org/openstreetmap/josm/io/ChangesetClosedException.java
- Timestamp:
- 2009-12-04T15:53:55+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/io/ChangesetClosedException.java
r2512 r2569 12 12 import java.util.regex.Pattern; 13 13 14 /** 15 * A ChangesetClosedException is thrown if the server replies with a HTTP 16 * return code 409 (Conflict) with the error header {@see #ERROR_HEADER_PATTERN}. 17 * 18 * Depending on the context the exception is thrown in we have to react differently. 19 * <ul> 20 * <li>if it is thrown when we try to update a changeset, the changeset was most 21 * likely closed before, either explicitly by the user or because of a timeout</li> 22 * <li>if it is thrown when we try to upload data to the changeset, the changeset 23 * was most likely closed because we reached the servers capability limit for the size 24 * of a changeset.</li> 25 * </ul> 26 */ 14 27 public class ChangesetClosedException extends OsmTransferException { 28 /** the error header pattern for in case of HTTP response 409 indicating 29 * that a changeset was closed 30 */ 31 final static public String ERROR_HEADER_PATTERN = "The changeset (\\d+) was closed at (.*)"; 32 33 static enum Source { 34 /** 35 * The exception was thrown when a changeset was updated. This most likely means 36 * that the changeset was closed before. 37 */ 38 UPDATE_CHANGESET, 39 /** 40 * The exception was thrown when data was uploaded to the changeset. This most 41 * likely means that the servers capability limits for a changeset have been 42 * exceeded. 43 */ 44 UPLOAD_DATA, 45 /** 46 * Unspecified source 47 */ 48 UNSPECIFIED 49 } 50 51 /** 52 * Replies true if <code>errorHeader</code> matches with {@see #ERROR_HEADER_PATTERN} 53 * 54 * @param errorHeader the error header 55 * @return true if <code>errorHeader</code> matches with {@see #ERROR_HEADER_PATTERN} 56 */ 57 static public boolean errorHeaderMatchesPattern(String errorHeader) { 58 if (errorHeader == null) 59 return false; 60 Pattern p = Pattern.compile(ERROR_HEADER_PATTERN); 61 Matcher m = p.matcher(errorHeader); 62 return m.matches(); 63 } 15 64 16 65 /** the changeset id */ … … 18 67 /** the date on which the changeset was closed */ 19 68 private Date closedOn; 69 /** the source */ 70 private Source source; 20 71 21 72 protected void parseErrorHeader(String errorHeader) { 22 String pattern = "The changeset (\\d+) was closed at (.*)"; 23 Pattern p = Pattern.compile(pattern); 73 Pattern p = Pattern.compile(ERROR_HEADER_PATTERN); 24 74 Matcher m = p.matcher(errorHeader); 25 75 if (m.matches()) { … … 39 89 } 40 90 91 /** 92 * Creates the exception with the given <code>errorHeader</code> 93 * 94 * @param errorHeader the error header 95 */ 41 96 public ChangesetClosedException(String errorHeader) { 42 97 super(errorHeader); 43 98 parseErrorHeader(errorHeader); 99 this.source = Source.UNSPECIFIED; 44 100 } 45 101 102 /** 103 * Creates the exception with the given error header and the given 104 * source. 105 * 106 * @param errorHeader the error header 107 * @param source the source for the exception 108 */ 109 public ChangesetClosedException(String errorHeader, Source source) { 110 super(errorHeader); 111 parseErrorHeader(errorHeader); 112 this.source = source == null ? Source.UNSPECIFIED : source; 113 } 114 115 /** 116 * Replies the id of the changeset which was closed 117 * 118 * @return the id of the changeset which was closed 119 */ 46 120 public long getChangesetId() { 47 121 return changesetId; 48 122 } 49 123 124 /** 125 * Replies the date the changeset was closed 126 * 127 * @return the date the changeset was closed. May be null if the date isn't known. 128 */ 50 129 public Date getClosedOn() { 51 130 return closedOn; 52 131 } 132 133 /** 134 * Replies the source where the exception was thrown 135 * 136 * @return the source 137 */ 138 public Source getSource() { 139 return source; 140 } 53 141 }
Note:
See TracChangeset
for help on using the changeset viewer.