/*
* Constellation - An open source and standard compliant SDI
* http://www.constellation-sdi.org
*
* Copyright 2014 Geomatys.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.constellation.provider.coveragestore;
import org.apache.sis.parameter.ParameterBuilder;
import org.constellation.provider.AbstractProviderFactory;
import org.constellation.provider.Data;
import org.constellation.provider.DataProvider;
import org.constellation.provider.DataProviderFactory;
import org.geotoolkit.storage.coverage.CoverageStoreFactory;
import org.geotoolkit.storage.coverage.CoverageStoreFinder;
import org.opengis.parameter.GeneralParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.parameter.ParameterValueGroup;
import org.opengis.util.GenericName;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import static org.constellation.provider.configuration.ProviderParameters.createDescriptor;
/**
*
* @version $Id$
*
* @author Johann Sorel (Geomatys)
*/
public class CoverageStoreProviderService extends AbstractProviderFactory
<GenericName,Data,DataProvider> implements DataProviderFactory {
private static final ParameterBuilder BUILDER = new ParameterBuilder();
/**
* Service name
*/
public static final String NAME = "coverage-store";
public static final ParameterDescriptorGroup SOURCE_CONFIG_DESCRIPTOR;
static {
final List<ParameterDescriptorGroup> descs = new ArrayList<>();
final Iterator<CoverageStoreFactory> ite = CoverageStoreFinder.getAllFactories(null).iterator();
while(ite.hasNext()){
//copy the descriptor with a minimum number of zero
final ParameterDescriptorGroup desc = ite.next().getParametersDescriptor();
final ParameterDescriptorGroup mindesc = BUILDER.addName(desc.getName())
.createGroup(0, 1, desc.descriptors().toArray(new GeneralParameterDescriptor[0]));
descs.add(mindesc);
}
SOURCE_CONFIG_DESCRIPTOR = BUILDER.addName("choice").setRequired(true)
.createGroup(descs.toArray(new GeneralParameterDescriptor[descs.size()]));
}
public static final ParameterDescriptorGroup SERVICE_CONFIG_DESCRIPTOR =
createDescriptor(SOURCE_CONFIG_DESCRIPTOR);
public CoverageStoreProviderService(){
super(NAME);
}
@Override
public ParameterDescriptorGroup getProviderDescriptor() {
return SERVICE_CONFIG_DESCRIPTOR;
}
@Override
public ParameterDescriptorGroup getStoreDescriptor() {
return SOURCE_CONFIG_DESCRIPTOR;
}
@Override
public DataProvider createProvider(String providerId, ParameterValueGroup ps) {
if(!canProcess(ps)){
return null;
}
final CoverageStoreProvider provider = new CoverageStoreProvider(providerId,this,ps);
getLogger().log(Level.INFO, "[PROVIDER]> coverage-store " + providerId + " provider created.");
return provider;
}
}