/*
* This file is part of the GeoLatte project. This code is licenced 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.
*
* Copyright (C) 2010 - 2010 and Ownership of code is shared by:
* Qmino bvba - Romeinsestraat 18 - 3001 Heverlee (http://www.Qmino.com)
* Geovise bvba - Generaal Eisenhowerlei 9 - 2140 Antwerpen (http://www.geovise.com)
*/
package org.geolatte.common.dataformats.json.jackson;
import com.fasterxml.jackson.core.JsonParser;
import org.geolatte.common.Feature;
import org.geolatte.common.FeatureCollection;
import java.io.IOException;
import java.util.List;
/**
* Deserializes a featurecollection into a list of features.
* <p>
* <i>Creation-Date</i>: 1-sep-2010<br>
* <i>Creation-Time</i>: 11:32:15<br>
* </p>
*
* @author Yves Vandewoude
* @author <a href="http://www.qmino.com">Qmino bvba</a>
* @since SDK1.5
*/
public class FeatureCollectionDeserializer extends GeoJsonDeserializer<FeatureCollection> {
public FeatureCollectionDeserializer(JsonMapper owner) {
super(owner, FeatureCollection.class);
}
@Override
protected FeatureCollection deserialize(JsonParser jsonParser) throws IOException {
Integer srid = getSrid();
String type = getStringParam("type", "Invalid Feature, type property required.");
// Default srd = WGS84 according to the GeoJSON specification
int sridToUse = srid == null ? 5 : srid;
if ("FeatureCollection".equals(type)) {
try {
List<Feature> features = parent.collectionFromJson(getSubJson("features", "A geometry field is required for a Feature"), Feature.class);
return new DefaultFeatureCollection(features);
} catch (JsonException e) {
throw new IOException("Problem deserializing individual features in collection", e);
}
}
else
{
throw new IOException("For a featurecollection, the type property must equal 'FeatureCollection'");
}
}
}