/*
* 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.sos.factory;
import org.apache.sis.storage.DataStoreException;
import org.constellation.configuration.DataSourceType;
import org.constellation.generic.database.Automatic;
import org.constellation.metadata.io.MetadataIoException;
import org.constellation.sos.io.generic.DefaultGenericObservationReader;
import org.constellation.sos.io.generic.GenericObservationFilter;
import org.geotoolkit.observation.ObservationFilter;
import org.constellation.sos.io.ObservationReader;
import org.constellation.sos.io.ObservationWriter;
import java.util.Map;
import static org.constellation.configuration.DataSourceType.GENERIC;
/**
* A Generic implementation of the SOS O&M factory.
* it provide reader / writer / filter for observations datasource.
*
* @since 0.8
* @author Guilhem Legal (Geomatys)
*/
public class GenericSOSFactory implements OMFactory {
/**
* {@inheritDoc}
*/
@Override
public boolean factoryMatchType(DataSourceType type) {
if (type.equals(GENERIC)) {
return true;
}
return false;
}
/**
* {@inheritDoc}
*/
@Override
public ObservationFilter getObservationFilter(DataSourceType type, Automatic configuration, Map<String, Object> properties) throws DataStoreException {
return new GenericObservationFilter(configuration, properties);
}
/**
* {@inheritDoc}
*/
@Override
public ObservationFilter cloneObservationFilter(ObservationFilter omFilter) throws DataStoreException {
if (omFilter instanceof GenericObservationFilter) {
return new GenericObservationFilter((GenericObservationFilter) omFilter);
} else {
throw new IllegalArgumentException("Unknow observationFilter type: " + omFilter);
}
}
/**
* {@inheritDoc}
*/
@Override
public ObservationReader getObservationReader(DataSourceType type, Automatic configuration, Map<String, Object> properties) throws DataStoreException {
try {
return new DefaultGenericObservationReader(configuration, properties);
} catch (MetadataIoException ex) {
throw new DataStoreException(ex);
}
}
/**
* {@inheritDoc}
*/
@Override
public ObservationWriter getObservationWriter(DataSourceType type, Automatic configuration, Map<String, Object> properties) throws DataStoreException {
return null;
}
@Override
public boolean buildDatasource(Automatic configuration, Map<String, Object> parameters) {
// do nothing
return true;
}
}