package org.geosdi.geoplatform.gui.baselayer.store;
import org.geosdi.geoplatform.gui.factory.baselayer.GPBaseLayerCreator;
import org.geosdi.geoplatform.gui.global.baselayer.GPBaseLayerValue;
import org.gwtopenmaps.openlayers.client.layer.Layer;
import java.util.Collections;
import java.util.Map;
import java.util.logging.Logger;
import static org.geosdi.geoplatform.gui.global.enumeration.BaseLayerValue.GOOGLE_SATELLITE;
/**
* @author Giuseppe La Scaleia - CNR IMAA geoSDI Group
* @email giuseppe.lascaleia@geosdi.org
*/
public class GPBaseLayerStore extends AbstractBaseLayerStore {
private static final Logger logger = Logger.getLogger("GPBaseLayerStore");
public GPBaseLayerStore() {
for (Map.Entry<GPBaseLayerValue, GPBaseLayerCreator> entry : this.baseLayerMap.entrySet()) {
logger.info("###########################KEY : " + entry.getKey());
}
}
/**
* @return {@link Layer}
*/
@Override
public Layer getDefaultBaseLayer() {
return this.findBaseLayer(GOOGLE_SATELLITE);
}
/**
* @param theKey
* @return {@link Layer}
*/
@Override
public Layer findBaseLayer(GPBaseLayerValue theKey) {
return (baseLayerMap.get(theKey) != null)
? baseLayerMap.get(theKey).createBaseLayer() : null;
}
/**
* @return {@link Map <GPBaseLayerValue, GPBaseLayerCreator >}
*/
@Override
public Map<GPBaseLayerValue, GPBaseLayerCreator> lookupBaseLayers() {
return Collections.unmodifiableMap(this.baseLayerMap);
}
/**
* @param value
* @param layerCreator
*/
@Override
public void registerBaseLayer(GPBaseLayerValue value, GPBaseLayerCreator layerCreator) {
logger.info("@@@@@@@@@@@@@@@@@@@@@@@@@@@@REGISTER : " + baseLayerMap.containsKey(value));
this.baseLayerMap.put(value, layerCreator);
}
/**
* @param value
*/
@Override
public void removeBaseLayer(GPBaseLayerValue value) {
if (this.baseLayerMap.containsKey(value))
this.baseLayerMap.remove(value);
}
}