/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2010, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotoolkit.sos;
import java.net.URL;
import org.geotoolkit.client.AbstractClient;
import org.geotoolkit.client.ClientFactory;
import org.geotoolkit.parameter.Parameters;
import org.geotoolkit.security.ClientSecurity;
import org.geotoolkit.sos.v100.*;
import org.geotoolkit.sos.xml.SOSVersion;
import org.geotoolkit.storage.DataStores;
import org.opengis.parameter.ParameterValueGroup;
/**
* SOS server.
*
* @author Cédric Briançon (Geomatys)
* @module
*/
public class SensorObservationServiceClient extends AbstractClient {
public SensorObservationServiceClient(final URL serverURL, final String version) {
this(serverURL,null,version);
}
public SensorObservationServiceClient(final URL serverURL, final ClientSecurity security, final String version) {
super(create(SOSClientFactory.PARAMETERS, serverURL, security));
if (version.equals("1.0.0")){
Parameters.getOrCreate(SOSClientFactory.VERSION, parameters).setValue(version);
} else {
throw new IllegalArgumentException("unknowned version : "+ version);
}
}
public SensorObservationServiceClient(final URL serverURL, final ClientSecurity security, final SOSVersion version) {
super(create(SOSClientFactory.PARAMETERS, serverURL, security));
if(version == null){
throw new IllegalArgumentException("unknowned version : "+ version);
}
}
public SensorObservationServiceClient(ParameterValueGroup params) {
super(params);
}
@Override
public ClientFactory getFactory() {
return (ClientFactory) DataStores.getFactoryById(SOSClientFactory.NAME);
}
/**
* Returns the currently used version for this server
*/
public SOSVersion getVersion() {
return SOSVersion.fromCode(Parameters.value(SOSClientFactory.VERSION, parameters));
}
/**
* Creates and returns a describeFeatureType request.
*/
public DescribeFeatureTypeRequest createDescribeFeatureType() {
switch (getVersion()) {
case v100:
return new DescribeFeatureType100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a describeObservationType request.
*/
public DescribeObservationTypeRequest createDescribeObservationType() {
switch (getVersion()) {
case v100:
return new DescribeObservationType100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a describeResultModel request.
*/
public DescribeResultModelRequest createDescribeResultModel() {
switch (getVersion()) {
case v100:
return new DescribeResultModel100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a describeSensor request.
*/
public DescribeSensorRequest createDescribeSensor() {
switch (getVersion()) {
case v100:
return new DescribeSensor100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a getCapabilities request.
*/
public GetCapabilitiesRequest createGetCapabilities() {
switch (getVersion()) {
case v100:
return new GetCapabilities100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a getFeatureOfInterest request.
*/
public GetFeatureOfInterestRequest createGetFeatureOfInterest() {
switch (getVersion()) {
case v100:
return new GetFeatureOfInterest100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a getFeatureOfInterestTime request.
*/
public GetFeatureOfInterestTimeRequest createGetFeatureOfInterestTime() {
switch (getVersion()) {
case v100:
return new GetFeatureOfInterestTime100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a getObservation request.
*/
public GetObservationRequest createGetObservation() {
switch (getVersion()) {
case v100:
return new GetObservation100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a getObservationById request.
*/
public GetObservationByIdRequest createGetObservationById() {
switch (getVersion()) {
case v100:
return new GetObservationById100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
/**
* Creates and returns a describeRecord request.
*/
public GetResultRequest createGetResult() {
switch (getVersion()) {
case v100:
return new GetResult100(this);
default:
throw new IllegalArgumentException("Version was not defined");
}
}
}