102 |
102 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
|
103 |
103 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage.Resource;
|
104 |
104 |
import org.gvsig.tools.swing.api.TransparencySupport;
|
|
105 |
import org.gvsig.tools.util.Factory;
|
105 |
106 |
import org.slf4j.Logger;
|
106 |
107 |
import org.slf4j.LoggerFactory;
|
107 |
108 |
|
... | ... | |
125 |
126 |
|
126 |
127 |
private final Map<String, Map<Class<ILegend>,Class<ILegendWriter>>> legendWriters = new LinkedHashMap<>();
|
127 |
128 |
|
128 |
|
private final Map<Class,Class<? extends FLayer>> layerClassFromStoreClass = new HashMap<>();
|
|
129 |
private final Map<Object,Class<? extends FLayer>> layerClassFromStoreClass = new HashMap<>();
|
129 |
130 |
|
130 |
131 |
private final Map<String,String> iconLayers = new HashMap(); // (Map<String storeProviderName, String iconName>)
|
131 |
132 |
|
... | ... | |
691 |
692 |
this.layerClassFromStoreClass.put(theClass, layerClass);
|
692 |
693 |
return true;
|
693 |
694 |
}
|
|
695 |
|
|
696 |
@Override
|
|
697 |
public boolean registerLayer(Factory<FLayer> factory) {
|
|
698 |
this.layerClassFromStoreClass.put(factory, null);
|
|
699 |
return true;
|
|
700 |
}
|
694 |
701 |
|
|
702 |
private FLayer newLayer(DataStore dataStore) {
|
|
703 |
for (Map.Entry<Object, Class<? extends FLayer>> entry : layerClassFromStoreClass.entrySet()) {
|
|
704 |
Object currentKey = entry.getKey();
|
|
705 |
if( currentKey instanceof Factory ) {
|
|
706 |
Factory<FLayer> factory = (Factory<FLayer>) currentKey;
|
|
707 |
FLayer layer = factory.create(dataStore.getParameters(), dataStore);
|
|
708 |
if( layer != null ) {
|
|
709 |
return layer;
|
|
710 |
}
|
|
711 |
}
|
|
712 |
}
|
|
713 |
return null;
|
|
714 |
}
|
|
715 |
|
695 |
716 |
private Class<? extends FLayer> getLayerClass(
|
696 |
717 |
Class keyClass) {
|
697 |
718 |
Class<? extends FLayer> layerClass = this.layerClassFromStoreClass.get(keyClass);
|
698 |
719 |
if( layerClass!=null ) {
|
699 |
720 |
return layerClass;
|
700 |
721 |
}
|
701 |
|
for (Map.Entry<Class, Class<? extends FLayer>> entry : layerClassFromStoreClass.entrySet()) {
|
702 |
|
Class currentKeyClass = entry.getKey();
|
703 |
|
layerClass = entry.getValue();
|
704 |
|
if( currentKeyClass.isAssignableFrom(keyClass) ) {
|
705 |
|
return layerClass;
|
|
722 |
for (Map.Entry<Object, Class<? extends FLayer>> entry : layerClassFromStoreClass.entrySet()) {
|
|
723 |
Object currentKey = entry.getKey();
|
|
724 |
if( currentKey instanceof Class ) {
|
|
725 |
Class currentKeyClass = (Class) currentKey;
|
|
726 |
layerClass = entry.getValue();
|
|
727 |
if( currentKeyClass.isAssignableFrom(keyClass) ) {
|
|
728 |
return layerClass;
|
|
729 |
}
|
706 |
730 |
}
|
707 |
731 |
}
|
708 |
732 |
return null;
|
... | ... | |
814 |
838 |
}
|
815 |
839 |
}
|
816 |
840 |
}
|
817 |
|
|
818 |
|
Class<? extends FLayer> layerClass = this.getLayerClass(dataStore.getParameters().getClass());
|
819 |
|
if (layerClass == null) {
|
820 |
|
layerClass = this.getLayerClass(dataStore.getProviderFactory().getClass());
|
|
841 |
FLayer layer = this.newLayer(dataStore);
|
|
842 |
if( layer == null ) {
|
|
843 |
Class<? extends FLayer> layerClass = this.getLayerClass(dataStore.getParameters().getClass());
|
821 |
844 |
if (layerClass == null) {
|
822 |
|
layerClass = this.getLayerClass(dataStore.getClass());
|
|
845 |
layerClass = this.getLayerClass(dataStore.getProviderFactory().getClass());
|
|
846 |
if (layerClass == null) {
|
|
847 |
layerClass = this.getLayerClass(dataStore.getClass());
|
|
848 |
}
|
|
849 |
if (layerClass == null) {
|
|
850 |
throw new CantRetrieveLayerByStoreException(layerName, dataStore.getName());
|
|
851 |
}
|
823 |
852 |
}
|
824 |
|
if (layerClass == null) {
|
825 |
|
throw new CantRetrieveLayerByStoreException(layerName, dataStore.getName());
|
|
853 |
try {
|
|
854 |
layer = (FLayer) layerClass.newInstance();
|
|
855 |
} catch (InstantiationException | IllegalAccessException e) {
|
|
856 |
throw new LoadLayerException(layerName, e);
|
826 |
857 |
}
|
827 |
858 |
}
|
828 |
|
FLayer layer;
|
829 |
|
try {
|
830 |
|
layer = (FLayer) layerClass.newInstance();
|
831 |
|
} catch (InstantiationException | IllegalAccessException e) {
|
832 |
|
throw new LoadLayerException(layerName, e);
|
833 |
|
}
|
834 |
|
|
835 |
859 |
layer.setName(layerName);
|
836 |
860 |
((SingleLayer) layer).setDataStore(dataStore);
|
837 |
861 |
if (projection != null) {
|