/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package mil.nga.giat.elasticsearch;
import java.io.IOException;
import mil.nga.giat.data.elasticsearch.ElasticDataStore;
import mil.nga.giat.data.elasticsearch.ElasticLayerConfiguration;
import static mil.nga.giat.data.elasticsearch.ElasticLayerConfiguration.KEY;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.FeatureTypeCallback;
import org.geotools.data.DataAccess;
import org.opengis.feature.Feature;
import org.opengis.feature.type.FeatureType;
import org.opengis.feature.type.Name;
/**
*
* Implementation of FeatureTypeInitializer extension point to initialize
* Elasticsearch datastore.
*
* @see {@link FeatureTypeCallback}
*
*/
public class ElasticFeatureTypeCallback implements FeatureTypeCallback {
@Override
public boolean canHandle(FeatureTypeInfo info,
DataAccess<? extends FeatureType, ? extends Feature> dataAccess) {
if (dataAccess instanceof ElasticDataStore) {
return true;
} else {
return false;
}
}
@Override
public boolean initialize(FeatureTypeInfo info,
DataAccess<? extends FeatureType, ? extends Feature> dataAccess, Name temporaryName)
throws IOException {
ElasticLayerConfiguration layerConfig;
layerConfig = (ElasticLayerConfiguration) info.getMetadata().get(KEY);
if (layerConfig == null) {
layerConfig = new ElasticLayerConfiguration(info.getName());
}
((ElasticDataStore) dataAccess).setLayerConfiguration(layerConfig);
return false;
}
@Override
public void dispose(FeatureTypeInfo info,
DataAccess<? extends FeatureType, ? extends Feature> dataAccess, Name temporaryName)
throws IOException {
ElasticLayerConfiguration layerConfig;
layerConfig = (ElasticLayerConfiguration) info.getMetadata().get(KEY);
if (layerConfig != null) {
layerConfig.getAttributes().remove(info.getName());
((ElasticDataStore) dataAccess).getDocTypes().remove(info.getQualifiedName());
}
}
@Override
public void flush(FeatureTypeInfo info,
DataAccess<? extends FeatureType, ? extends Feature> dataAccess) throws IOException {
// nothing to do
}
}