Revision 47739

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/MapContextManager.java
96 96
    public MapContext createMapContext();
97 97

  
98 98
    public boolean registerLayer(
99
            Class<? extends DataStore> dataStoreClass,
99
            Class theClass, // DataStoreClass, DataParametersClass
100 100
            Class<? extends FLayer> layerClass);
101 101

  
102 102
    /**
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/impl/DefaultMapContextManager.java
125 125

  
126 126
    private final Map<String, Map<Class<ILegend>,Class<ILegendWriter>>> legendWriters = new LinkedHashMap<>();
127 127
    
128
    private final Map<Class<? extends DataStore>,Class<? extends FLayer>> layerClassFromStoreClass = new HashMap<>();
128
    private final Map<Class,Class<? extends FLayer>> layerClassFromStoreClass = new HashMap<>();
129 129

  
130 130
    private final Map<String,String> iconLayers = new HashMap(); //  (Map<String storeProviderName, String iconName>)
131 131

  
......
685 685

  
686 686
    @Override
687 687
    public boolean registerLayer(
688
        Class<? extends DataStore> dataStoreClass,
688
        Class theClass,
689 689
        Class<? extends FLayer> layerClass) 
690 690
    {
691
        this.layerClassFromStoreClass.put(dataStoreClass, layerClass);
691
        this.layerClassFromStoreClass.put(theClass, layerClass);
692 692
        return true;
693 693
    }    
694 694
    
695
    private Class<? extends FLayer> getLayerClassFromDataStoreClass(
696
            Class<? extends DataStore> dataStoreClass) {
697
        Class<? extends FLayer> layerClass = this.layerClassFromStoreClass.get(dataStoreClass);
695
    private Class<? extends FLayer> getLayerClass(
696
            Class keyClass) {
697
        Class<? extends FLayer> layerClass = this.layerClassFromStoreClass.get(keyClass);
698 698
        if( layerClass!=null ) {
699 699
            return layerClass;
700 700
        }
701
        for (Map.Entry<Class<? extends DataStore>, Class<? extends FLayer>> entry : layerClassFromStoreClass.entrySet()) {
702
            Class<? extends DataStore>  currentDataStoreClass = entry.getKey();
701
        for (Map.Entry<Class, Class<? extends FLayer>> entry : layerClassFromStoreClass.entrySet()) {
702
            Class  currentKeyClass = entry.getKey();
703 703
            layerClass = entry.getValue();
704
            if( currentDataStoreClass.isAssignableFrom(dataStoreClass) ) {
704
            if( currentKeyClass.isAssignableFrom(keyClass) ) {
705 705
                return layerClass;
706 706
            }
707 707
        }
......
749 749
                );
750 750
                return this.createLayer(layerName, dataStore, parameters);
751 751
            }
752
            Class<? extends FLayer> layerClass = this.getLayerClassFromDataStoreClass(FeatureStore.class);
752
            Class<? extends FLayer> layerClass = this.getLayerClass(FeatureStore.class);
753 753
            if (layerClass == null) {
754 754
                throw new CantRetrieveLayerByStoreException(layerName, FeatureStore.class.getName());
755 755
            }
......
815 815
                }
816 816
            }
817 817
            
818
            Class<? extends FLayer> layerClass = this.getLayerClassFromDataStoreClass(dataStore.getClass());
818
            Class<? extends FLayer> layerClass = this.getLayerClass(dataStore.getParameters().getClass());
819 819
            if (layerClass == null) {
820
                throw new CantRetrieveLayerByStoreException(layerName, dataStore.getName());
820
                layerClass = this.getLayerClass(dataStore.getProviderFactory().getClass());
821
                if (layerClass == null) {
822
                    layerClass = this.getLayerClass(dataStore.getClass());
823
                }
824
                if (layerClass == null) {
825
                    throw new CantRetrieveLayerByStoreException(layerName, dataStore.getName());
826
                }
821 827
            }
822 828
            FLayer layer;
823 829
            try {

Also available in: Unified diff