001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions.downloadtasks; 003 004import java.util.ArrayList; 005import java.util.List; 006import org.openstreetmap.josm.io.XmlWriter; 007 008/** 009 * Common abstract implementation of other download tasks 010 * @since 2322 011 */ 012public abstract class AbstractDownloadTask implements DownloadTask { 013 private List<Object> errorMessages; 014 private boolean canceled = false; 015 private boolean failed = false; 016 017 public AbstractDownloadTask() { 018 errorMessages = new ArrayList<Object>(); 019 } 020 021 public boolean isCanceled() { 022 return canceled; 023 } 024 025 public void setCanceled(boolean canceled) { 026 this.canceled = canceled; 027 } 028 029 public boolean isFailed() { 030 return failed; 031 } 032 033 public void setFailed(boolean failed) { 034 this.failed = failed; 035 } 036 037 protected void rememberErrorMessage(String message) { 038 errorMessages.add(message); 039 } 040 041 protected void rememberException(Exception exception) { 042 errorMessages.add(exception); 043 } 044 045 @Override 046 public List<Object> getErrorObjects() { 047 return errorMessages; 048 } 049 050 @Override 051 public String acceptsDocumentationSummary() { 052 StringBuilder buf = new StringBuilder("<tr><td>"); 053 buf.append(getTitle()); 054 buf.append(":</td><td>"); 055 String[] patterns = getPatterns(); 056 if (patterns.length>0) { 057 buf.append("<ul>"); 058 for (String pattern: patterns) { 059 buf.append("<li>"); 060 buf.append(XmlWriter.encode(pattern)); 061 buf.append("</li>"); 062 } 063 buf.append("</ul>"); 064 } 065 buf.append("</td></tr>"); 066 return buf.toString(); 067 } 068 069 // Can be overridden for more complex checking logic 070 @Override 071 public boolean acceptsUrl(String url) { 072 if (url==null) return false; 073 for (String p: getPatterns()) { 074 if (url.matches(p)) { 075 return true; 076 } 077 } 078 return false; 079 } 080 081 // Default name to keep old plugins compatible 082 @Override 083 public String getTitle() { 084 return getClass().getName(); 085 } 086 087 // Default pattern to keep old plugins compatible 088 @Override 089 public String[] getPatterns() { 090 return new String[]{}; 091 } 092 093}