Ignore:
Timestamp:
2012-03-23T21:49:59+01:00 (13 years ago)
Author:
donvip
Message:

opendata: change in handlers management (use of classes instead of objects) to allow several instances of the same handler

Location:
applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java

    r28091 r28143  
    2828import java.util.Map;
    2929
    30 import javax.swing.ImageIcon;
    3130import javax.swing.JMenu;
    3231import javax.swing.JMenuItem;
     
    6059import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleHandler;
    6160import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleInformation;
    62 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
    6361import org.openstreetmap.josm.tools.Pair;
    6462
     
    115113                Map<DataSetCategory, JMenu> catMenus = new HashMap<DataSetCategory, JMenu>();
    116114                JMenu moduleMenu = null;
    117                 for (AbstractDataSetHandler handler: module.getHandlers()) {
     115                for (AbstractDataSetHandler handler: module.getNewlyInstanciatedHandlers()) {
    118116                        if (handler.getDataURL() != null || (handler.getDataURLs() != null && !handler.getDataURLs().isEmpty())) {
    119117                                if (moduleMenu == null) {
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java

    r28113 r28143  
    6666                this.handler = null;
    6767                for (Module module : ModuleHandler.moduleList) {
    68                         for (AbstractDataSetHandler handler : module.getHandlers()) {
     68                        for (AbstractDataSetHandler handler : module.getNewlyInstanciatedHandlers()) {
    6969                                if (handler.acceptsUrl(url)) {
    7070                                        this.handler = handler;
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/AbstractImporter.java

    r28044 r28143  
    4444    protected final AbstractDataSetHandler findDataSetHandler(File file) {
    4545        for (Module module : ModuleHandler.moduleList) {
    46                         for (AbstractDataSetHandler dsh : module.getHandlers()) {
     46                        for (AbstractDataSetHandler dsh : module.getNewlyInstanciatedHandlers()) {
    4747                                if (dsh.acceptsFile(file)) {
    4848                                        return dsh;
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/AbstractModule.java

    r28044 r28143  
    3333public abstract class AbstractModule implements Module, OdConstants {
    3434
    35         protected final List<AbstractDataSetHandler> handlers = new ArrayList<AbstractDataSetHandler>();
    36        
     35        protected final List<Class<? extends AbstractDataSetHandler>> handlers = new ArrayList<Class <? extends AbstractDataSetHandler>>();
     36
     37        private final List<AbstractDataSetHandler> instanciatedHandlers = new ArrayList<AbstractDataSetHandler>();
     38
    3739        protected final ModuleInformation info;
    3840       
     
    5355         */
    5456        @Override
    55         public List<AbstractDataSetHandler> getHandlers() {
     57        public List<Class<? extends AbstractDataSetHandler>> getHandlers() {
    5658                return handlers;
    5759        }
     
    7173        public SourceProvider getMapPaintStyleSourceProvider() {
    7274                final List<SourceEntry> sources = new ArrayList<SourceEntry>();
    73                 for (AbstractDataSetHandler handler : handlers) {
     75                for (AbstractDataSetHandler handler : getInstanciatedHandlers()) {
    7476                        ExtendedSourceEntry src;
    7577                        if (handler != null && (src = handler.getMapPaintStyle()) != null) {
     
    111113        public SourceProvider getPresetSourceProvider() {
    112114                final List<SourceEntry> sources = new ArrayList<SourceEntry>();
    113                 for (AbstractDataSetHandler handler : handlers) {
     115                for (AbstractDataSetHandler handler : getInstanciatedHandlers()) {
    114116                        if (handler != null && handler.getTaggingPreset() != null) {
    115117                                sources.add(handler.getTaggingPreset());
     
    123125                };
    124126        }
     127       
     128        @Override
     129        public final List<AbstractDataSetHandler> getNewlyInstanciatedHandlers() {
     130                List<AbstractDataSetHandler> result = new ArrayList<AbstractDataSetHandler>();
     131                for (Class<? extends AbstractDataSetHandler> handlerClass : handlers) {
     132                        if (handlerClass != null) {
     133                                try {
     134                                        result.add(handlerClass.newInstance());
     135                                } catch (InstantiationException e) {
     136                                        System.err.println(e.getMessage());
     137                                } catch (IllegalAccessException e) {
     138                                        System.err.println(e.getMessage());
     139                                }
     140                        }
     141                }
     142                return result;
     143        }
     144
     145        private final List<AbstractDataSetHandler> getInstanciatedHandlers() {
     146                if (instanciatedHandlers.isEmpty()) {
     147                        instanciatedHandlers.addAll(getNewlyInstanciatedHandlers());
     148                }
     149                return instanciatedHandlers;
     150        }
    125151}
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/Module.java

    r28044 r28143  
    2525        public String getDisplayedName();
    2626
    27         public List<AbstractDataSetHandler> getHandlers();
    28        
     27        public List<Class<? extends AbstractDataSetHandler>> getHandlers();
     28
     29        public List<AbstractDataSetHandler> getNewlyInstanciatedHandlers();
     30
    2931        public SourceProvider getMapPaintStyleSourceProvider();
    3032       
Note: See TracChangeset for help on using the changeset viewer.