/*
* 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; either
* version 2.1 of the License, or (at your option) any later version.
*
* 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.data.kml;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.impl.CoordinateArraySequence;
import java.awt.Color;
import java.net.URI;
import java.util.Calendar;
import java.util.List;
import org.geotoolkit.atom.model.AtomLink;
import org.geotoolkit.atom.model.AtomPersonConstruct;
import org.geotoolkit.data.kml.model.AbstractGeometry;
import org.geotoolkit.data.kml.model.AbstractStyleSelector;
import org.geotoolkit.data.kml.model.AbstractTimePrimitive;
import org.geotoolkit.data.kml.model.AbstractView;
import org.geotoolkit.data.kml.model.Alias;
import org.geotoolkit.data.kml.model.AltitudeMode;
import org.geotoolkit.data.kml.model.DefaultAlias;
import org.geotoolkit.data.kml.model.BalloonStyle;
import org.geotoolkit.data.kml.model.DefaultBalloonStyle;
import org.geotoolkit.data.kml.model.BasicLink;
import org.geotoolkit.data.kml.model.DefaultBasicLink;
import org.geotoolkit.data.kml.model.Boundary;
import org.geotoolkit.data.kml.model.DefaultBoundary;
import org.geotoolkit.data.kml.model.Camera;
import org.geotoolkit.data.kml.model.DefaultCamera;
import org.geotoolkit.data.kml.model.Change;
import org.geotoolkit.data.kml.model.DefaultChange;
import org.geotoolkit.data.kml.model.ColorMode;
import org.geotoolkit.data.kml.model.Create;
import org.geotoolkit.data.kml.model.DefaultCreate;
import org.geotoolkit.data.kml.model.Data;
import org.geotoolkit.data.kml.model.DefaultData;
import org.geotoolkit.data.kml.model.Delete;
import org.geotoolkit.data.kml.model.DefaultDelete;
import org.geotoolkit.data.kml.model.DisplayMode;
import org.geotoolkit.data.kml.model.ExtendedData;
import org.geotoolkit.data.kml.model.DefaultExtendedData;
import org.geotoolkit.data.kml.model.GridOrigin;
import org.geotoolkit.data.kml.model.Icon;
import org.geotoolkit.data.kml.model.DefaultIcon;
import org.geotoolkit.data.kml.model.IconStyle;
import org.geotoolkit.data.kml.model.DefaultIconStyle;
import org.geotoolkit.data.kml.model.IdAttributes;
import org.geotoolkit.data.kml.model.DefaultIdAttributes;
import org.geotoolkit.data.kml.model.ImagePyramid;
import org.geotoolkit.data.kml.model.DefaultImagePyramid;
import org.geotoolkit.data.kml.model.ItemIcon;
import org.geotoolkit.data.kml.model.DefaultItemIcon;
import org.geotoolkit.data.kml.model.ItemIconState;
import org.geotoolkit.data.kml.model.Kml;
import org.geotoolkit.data.kml.model.DefaultKml;
import org.geotoolkit.data.kml.model.LabelStyle;
import org.geotoolkit.data.kml.model.DefaultLabelStyle;
import org.geotoolkit.data.kml.model.LatLonAltBox;
import org.geotoolkit.data.kml.model.DefaultLatLonAltBox;
import org.geotoolkit.data.kml.model.LatLonBox;
import org.geotoolkit.data.kml.model.DefaultLatLonBox;
import org.geotoolkit.data.kml.model.LineString;
import org.geotoolkit.data.kml.model.DefaultLineString;
import org.geotoolkit.data.kml.model.LineStyle;
import org.geotoolkit.data.kml.model.DefaultLineStyle;
import org.geotoolkit.data.kml.model.LinearRing;
import org.geotoolkit.data.kml.model.DefaultLinearRing;
import org.geotoolkit.data.kml.model.Link;
import org.geotoolkit.data.kml.model.DefaultLink;
import org.geotoolkit.data.kml.model.ListItem;
import org.geotoolkit.data.kml.model.ListStyle;
import org.geotoolkit.data.kml.model.DefaultListStyle;
import org.geotoolkit.data.kml.model.Location;
import org.geotoolkit.data.kml.model.DefaultLocation;
import org.geotoolkit.data.kml.model.Lod;
import org.geotoolkit.data.kml.model.DefaultLod;
import org.geotoolkit.data.kml.model.LookAt;
import org.geotoolkit.data.kml.model.DefaultLookAt;
import org.geotoolkit.data.kml.model.DefaultMetaData;
import org.geotoolkit.data.kml.model.Model;
import org.geotoolkit.data.kml.model.DefaultModel;
import org.geotoolkit.data.kml.model.MultiGeometry;
import org.geotoolkit.data.kml.model.DefaultMultiGeometry;
import org.geotoolkit.data.kml.model.NetworkLinkControl;
import org.geotoolkit.data.kml.model.DefaultNetworkLinkControl;
import org.geotoolkit.data.kml.model.Orientation;
import org.geotoolkit.data.kml.model.DefaultOrientation;
import org.geotoolkit.data.kml.model.Pair;
import org.geotoolkit.data.kml.model.DefaultPair;
import org.geotoolkit.data.kml.model.Point;
import org.geotoolkit.data.kml.model.DefaultPoint;
import org.geotoolkit.data.kml.model.PolyStyle;
import org.geotoolkit.data.kml.model.DefaultPolyStyle;
import org.geotoolkit.data.kml.model.Polygon;
import org.geotoolkit.data.kml.model.DefaultPolygon;
import org.geotoolkit.data.kml.model.RefreshMode;
import org.geotoolkit.data.kml.model.Region;
import org.geotoolkit.data.kml.model.DefaultRegion;
import org.geotoolkit.data.kml.model.ResourceMap;
import org.geotoolkit.data.kml.model.DefaultResourceMap;
import org.geotoolkit.data.kml.model.Scale;
import org.geotoolkit.data.kml.model.DefaultScale;
import org.geotoolkit.data.kml.model.Schema;
import org.geotoolkit.data.kml.model.SchemaData;
import org.geotoolkit.data.kml.model.DefaultSchemaData;
import org.geotoolkit.data.kml.model.DefaultSchema;
import org.geotoolkit.data.kml.model.Shape;
import org.geotoolkit.data.kml.model.SimpleData;
import org.geotoolkit.data.kml.model.DefaultSimpleData;
import org.geotoolkit.data.kml.model.SimpleField;
import org.geotoolkit.data.kml.model.DefaultSimpleField;
import org.geotoolkit.data.kml.model.Snippet;
import org.geotoolkit.data.kml.model.DefaultSnippet;
import org.geotoolkit.data.kml.model.Style;
import org.geotoolkit.data.kml.model.DefaultStyle;
import org.geotoolkit.data.kml.model.StyleMap;
import org.geotoolkit.data.kml.model.DefaultStyleMap;
import org.geotoolkit.data.kml.model.StyleState;
import org.geotoolkit.data.kml.model.TimeSpan;
import org.geotoolkit.data.kml.model.DefaultTimeSpan;
import org.geotoolkit.data.kml.model.TimeStamp;
import org.geotoolkit.data.kml.model.DefaultTimeStamp;
import org.geotoolkit.data.kml.model.Units;
import org.geotoolkit.data.kml.model.Update;
import org.geotoolkit.data.kml.model.DefaultUpdate;
import org.geotoolkit.data.kml.model.DefaultUrl;
import org.geotoolkit.data.kml.model.Vec2;
import org.geotoolkit.data.kml.model.DefaultVec2;
import org.geotoolkit.data.kml.model.ViewRefreshMode;
import org.geotoolkit.data.kml.model.ViewVolume;
import org.geotoolkit.data.kml.model.DefaultViewVolume;
import org.geotoolkit.data.kml.model.Extensions;
import org.geotoolkit.data.kml.model.KmlModelConstants;
import org.geotoolkit.data.kml.model.Metadata;
import org.geotoolkit.data.kml.model.Url;
import org.geotoolkit.data.kml.xml.KmlConstants;
import org.geotoolkit.data.kml.xsd.Cdata;
import org.geotoolkit.data.kml.xsd.DefaultCdata;
import org.geotoolkit.data.kml.xsd.DefaultSimpleTypeContainer;
import org.geotoolkit.xal.model.AddressDetails;
import org.geotoolkit.data.kml.xsd.SimpleTypeContainer;
import org.opengis.feature.Feature;
/**
*
* @author Samuel Andrés
* @module
*/
public class DefaultKmlFactory implements KmlFactory{
private static final KmlFactory KMLF = new DefaultKmlFactory();
private static final GeometryFactory GF = new GeometryFactory();
private DefaultKmlFactory(){}
public static KmlFactory getInstance(){
return KMLF;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Kml createKml(NetworkLinkControl networkLinkControl,
Feature abstractFeature,
List<SimpleTypeContainer> kmlSimpleExtensions,
List<Object> kmlObjectExtensions)
{
return new DefaultKml(networkLinkControl, abstractFeature,
kmlSimpleExtensions, kmlObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Kml createKml() {
return new DefaultKml();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Alias createAlias(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
URI targetHref, URI sourceHref,
List<SimpleTypeContainer> aliasSimpleExtensions, List<Object> aliasObjectExtensions)
{
return new DefaultAlias(objectSimpleExtensions, idAttributes,
targetHref, sourceHref, aliasSimpleExtensions, aliasObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Alias createAlias() {
return new DefaultAlias();
}
/**
*
* @{@inheritDoc }
*/
@Override
public BalloonStyle createBalloonStyle(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> subStyleSimpleExtensions, List<Object> subStyleObjectExtensions,
Color bgColor, Color textColor, Object text, DisplayMode displayMode,
List<SimpleTypeContainer> balloonStyleSimpleExtensions, List<Object> balloonStyleObjectExtensions)
{
return new DefaultBalloonStyle(objectSimpleExtensions, idAttributes,
subStyleSimpleExtensions, subStyleObjectExtensions,
bgColor, textColor, text, displayMode,
balloonStyleSimpleExtensions, balloonStyleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public BalloonStyle createBalloonStyle() {
return new DefaultBalloonStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public BasicLink createBasicLink(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String href, List<SimpleTypeContainer> basicLinkSimpleExtensions,
List<Object> basicLinkObjectExtensions)
{
return new DefaultBasicLink(objectSimpleExtensions, idAttributes,
href, basicLinkSimpleExtensions, basicLinkObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public BasicLink createBasicLink() {
return new DefaultBasicLink();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Boundary createBoundary(LinearRing linearRing,
List<SimpleTypeContainer> boundarySimpleExtensions,
List<Object> boundaryObjectExtensions)
{
return new DefaultBoundary(linearRing, boundarySimpleExtensions,
boundaryObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Boundary createBoundary() {
return new DefaultBoundary();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Camera createCamera(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractViewSimpleExtensions,
List<Object> abstractViewObjectExtensions,
double longitude, double latitude, double altitude,
double heading, double tilt, double roll, AltitudeMode altitudeMode,
List<SimpleTypeContainer> cameraSimpleExtensions,
List<Object> cameraObjectExtensions)
{
return new DefaultCamera(objectSimpleExtensions, idAttributes,
abstractViewSimpleExtensions, abstractViewObjectExtensions,
longitude, latitude, altitude, heading, tilt, roll, altitudeMode,
cameraSimpleExtensions, cameraObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Camera createCamera() {
return new DefaultCamera();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Change createChange(List<Object> objects) {
return new DefaultChange(objects);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Change createChange() {
return new DefaultChange();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Coordinate createCoordinate(String listCoordinates) {
return KmlUtilities.toCoordinate(listCoordinates);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Coordinate createCoordinate(double geodeticLongiude, double geodeticLatitude, double altitude) {
return new Coordinate(geodeticLongiude, geodeticLatitude, altitude);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Coordinate createCoordinate(double geodeticLongiude, double geodeticLatitude) {
return new Coordinate(geodeticLongiude, geodeticLatitude);
}
/**
*
* @{@inheritDoc }
*/
@Override
public CoordinateSequence createCoordinates(List<Coordinate> coordinates) {
return new CoordinateArraySequence(coordinates.toArray(new Coordinate[coordinates.size()]));
}
/**
*
* @{@inheritDoc }
*/
@Override
public Create createCreate(List<Feature> containers) {
return new DefaultCreate(containers);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Create createCreate() {
return new DefaultCreate();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Data createData(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, Object displayName, String value, List<Object> dataExtensions)
{
return new DefaultData(objectSimpleExtensions, idAttributes,
name, displayName, value, dataExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Data createData() {
return new DefaultData();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Delete createDelete(List<Feature> features) {
return new DefaultDelete(features);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Delete createDelete() {
return new DefaultDelete();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createDocument(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, boolean visibility, boolean open,
AtomPersonConstruct author, AtomLink link,
String address, AddressDetails addressDetails,
String phoneNumber, Object snippet,
Object description, AbstractView view, AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
List<SimpleTypeContainer> abstractContainerSimpleExtensions,
List<Object> abstractContainerObjectExtensions,
List<Schema> schemas, List<Feature> features,
List<SimpleTypeContainer> documentSimpleExtensions,
List<Object> documentObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_DOCUMENT.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (abstractContainerSimpleExtensions != null) {
extensions.simples(Extensions.Names.CONTAINER).addAll(abstractContainerSimpleExtensions);
}
if (abstractContainerObjectExtensions != null) {
extensions.complexes(Extensions.Names.CONTAINER).addAll(abstractContainerObjectExtensions);
}
if (documentSimpleExtensions != null) {
extensions.simples(Extensions.Names.DOCUMENT).addAll(documentSimpleExtensions);
}
if (documentObjectExtensions != null) {
extensions.complexes(Extensions.Names.DOCUMENT).addAll(documentObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_SCHEMA, schemas);
feature.setPropertyValue(KmlConstants.TAG_FEATURES, features);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createDocument() {
final Feature feature = KmlModelConstants.TYPE_DOCUMENT.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public ExtendedData createExtendedData(List<Data> datas,
List<SchemaData> schemaDatas, List<Object> anyOtherElements)
{
return new DefaultExtendedData(datas, schemaDatas, anyOtherElements);
}
/**
*
* @{@inheritDoc }
*/
@Override
public ExtendedData createExtendedData() {
return new DefaultExtendedData();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createFolder(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, boolean visibility, boolean open,
AtomPersonConstruct author, AtomLink link,
String address, AddressDetails addressDetails,
String phoneNumber, Object snippet,
Object description, AbstractView view, AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
List<SimpleTypeContainer> abstractContainerSimpleExtensions,
List<Object> abstractContainerObjectExtensions,
List<Feature> features,
List<SimpleTypeContainer> folderSimpleExtensions,
List<Object> folderObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_FOLDER.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (abstractContainerSimpleExtensions != null) {
extensions.simples(Extensions.Names.CONTAINER).addAll(abstractContainerSimpleExtensions);
}
if (abstractContainerObjectExtensions != null) {
extensions.complexes(Extensions.Names.CONTAINER).addAll(abstractContainerObjectExtensions);
}
if (folderSimpleExtensions != null) {
extensions.simples(Extensions.Names.FOLDER).addAll(folderSimpleExtensions);
}
if (folderObjectExtensions != null) {
extensions.complexes(Extensions.Names.FOLDER).addAll(folderObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_FEATURES, features);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createFolder() {
final Feature feature = KmlModelConstants.TYPE_FOLDER.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createGroundOverlay(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, boolean visibility, boolean open,
AtomPersonConstruct author, AtomLink link,
String address, AddressDetails addressDetails,
String phoneNumber, Object snippet,
Object description, AbstractView view, AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
Color color, int drawOrder, Icon icon,
List<SimpleTypeContainer> abstractOveraySimpleExtensions,
List<Object> abstractOverlayObjectExtensions,
double altitude, AltitudeMode altitudeMode, LatLonBox latLonBox,
List<SimpleTypeContainer> groundOverlaySimpleExtensions,
List<Object> groundOverlayObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_GROUND_OVERLAY.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (abstractOveraySimpleExtensions != null) {
extensions.simples(Extensions.Names.OVERLAY).addAll(abstractOveraySimpleExtensions);
}
if (abstractOverlayObjectExtensions != null) {
extensions.complexes(Extensions.Names.OVERLAY).addAll(abstractOverlayObjectExtensions);
}
if (groundOverlaySimpleExtensions != null) {
extensions.simples(Extensions.Names.GROUND_OVERLAY).addAll(groundOverlaySimpleExtensions);
}
if (groundOverlayObjectExtensions != null) {
extensions.complexes(Extensions.Names.GROUND_OVERLAY).addAll(groundOverlayObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_COLOR, color);
feature.setPropertyValue(KmlConstants.TAG_DRAW_ORDER, drawOrder);
feature.setPropertyValue(KmlConstants.TAG_ICON, icon);
feature.setPropertyValue(KmlConstants.TAG_ALTITUDE, altitude);
feature.setPropertyValue(KmlConstants.TAG_ALTITUDE_MODE, altitudeMode);
feature.setPropertyValue(KmlConstants.TAG_LAT_LON_BOX, latLonBox);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createGroundOverlay() {
final Feature feature = KmlModelConstants.TYPE_GROUND_OVERLAY.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Icon createIcon(Link link) {
return new DefaultIcon(link);
}
/**
*
* @{@inheritDoc }
*/
@Override
@Deprecated
public Url createUrl(Link link) {
return new DefaultUrl(link);
}
/**
*
* @{@inheritDoc }
*/
@Override
public IconStyle createIconStyle(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> subStyleSimpleExtensions,
List<Object> subStyleObjectExtensions,
Color color, ColorMode colorMode,
List<SimpleTypeContainer> colorStyleSimpleExtensions,
List<Object> colorStyleObjectExtensions,
double scale, double heading, BasicLink icon, Vec2 hotSpot,
List<SimpleTypeContainer> iconStyleSimpleExtensions,
List<Object> iconStyleObjectExtensions)
{
return new DefaultIconStyle(objectSimpleExtensions, idAttributes,
subStyleSimpleExtensions, subStyleObjectExtensions,
color, colorMode,
colorStyleSimpleExtensions, colorStyleObjectExtensions,
scale, heading, icon, hotSpot,
iconStyleSimpleExtensions, iconStyleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public IconStyle createIconStyle() {
return new DefaultIconStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public IdAttributes createIdAttributes(String id, String targetId) {
return new DefaultIdAttributes(id, targetId);
}
/**
*
* @{@inheritDoc }
*/
@Override
public IdAttributes createIdAttributes() {
return new DefaultIdAttributes();
}
/**
*
* @{@inheritDoc }
*/
@Override
public ImagePyramid createImagePyramid(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
int titleSize, int maxWidth, int maxHeight, GridOrigin gridOrigin,
List<SimpleTypeContainer> imagePyramidSimpleExtensions,
List<Object> imagePyramidObjectExtensions)
{
return new DefaultImagePyramid(objectSimpleExtensions, idAttributes,
titleSize, maxWidth, maxHeight, gridOrigin,
imagePyramidSimpleExtensions, imagePyramidObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public ImagePyramid createImagePyramid(){
return new DefaultImagePyramid();
}
/**
*
* @{@inheritDoc }
*/
@Override
public ItemIcon createItemIcon(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<ItemIconState> states, String href,
List<SimpleTypeContainer> itemIconSimpleExtensions,
List<Object> itemIconObjectExtensions)
{
return new DefaultItemIcon(objectSimpleExtensions, idAttributes,
states, href, itemIconSimpleExtensions, itemIconObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public ItemIcon createItemIcon() {
return new DefaultItemIcon();
}
/**
*
* @{@inheritDoc }
*/
@Override
public LabelStyle createLabelStyle(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> subStyleSimpleExtensions,
List<Object> subStyleObjectExtensions,
Color color, ColorMode colorMode,
List<SimpleTypeContainer> colorStyleSimpleExtensions,
List<Object> colorStyleObjectExtensions,
double scale,
List<SimpleTypeContainer> labelStyleSimpleExtensions,
List<Object> labelStyleObjectExtensions)
{
return new DefaultLabelStyle(objectSimpleExtensions, idAttributes,
subStyleSimpleExtensions, subStyleObjectExtensions,
color, colorMode, colorStyleSimpleExtensions, colorStyleObjectExtensions,
scale, labelStyleSimpleExtensions, labelStyleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LabelStyle createLabelStyle() {
return new DefaultLabelStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public LatLonBox createLatLonBox(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double north, double south, double east, double west,
List<SimpleTypeContainer> abstractLatLonBoxSimpleExtensions,
List<Object> abstractLatLonBoxObjectExtensions,
double rotation, List<SimpleTypeContainer> latLonBoxSimpleExtensions,
List<Object> latLonBoxObjectExtensions)
{
return new DefaultLatLonBox(objectSimpleExtensions, idAttributes,
north, south, east, west,
abstractLatLonBoxSimpleExtensions,
abstractLatLonBoxObjectExtensions,
rotation, latLonBoxSimpleExtensions, latLonBoxObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LatLonBox createLatLonBox() {
return new DefaultLatLonBox();
}
/**
*
* @{@inheritDoc }
*/
@Override
public LatLonAltBox createLatLonAltBox(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double north, double south, double east, double west,
List<SimpleTypeContainer> abstractLatLonBoxSimpleExtensions,
List<Object> abstractLatLonBoxObjectExtensions,
double minAltitude, double maxAltitude, AltitudeMode altitudeMode,
List<SimpleTypeContainer> latLonAltBoxSimpleExtensions,
List<Object> latLonAltBoxObjectExtensions)
{
return new DefaultLatLonAltBox(objectSimpleExtensions, idAttributes,
north, south, east, west,
abstractLatLonBoxSimpleExtensions,
abstractLatLonBoxObjectExtensions,
minAltitude, maxAltitude, altitudeMode,
latLonAltBoxSimpleExtensions,
latLonAltBoxObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LatLonAltBox createLatLonAltBox(){
return new DefaultLatLonAltBox();
}
/**
*
* @{@inheritDoc }
*/
@Override
public LinearRing createLinearRing(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractGeometrySimpleExtensions,
List<Object> abstractGeometryObjectExtensions,
boolean extrude, boolean tessellate,
AltitudeMode altitudeMode,
CoordinateSequence coordinates,
List<SimpleTypeContainer> linearRingSimpleExtensions,
List<Object> linearRingObjectExtensions)
{
return new DefaultLinearRing(objectSimpleExtensions, idAttributes,
abstractGeometrySimpleExtensions, abstractGeometryObjectExtensions,
extrude, tessellate,
altitudeMode, coordinates,
linearRingSimpleExtensions, linearRingObjectExtensions, GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LinearRing createLinearRing(CoordinateSequence coordinates) {
return new DefaultLinearRing(coordinates, GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LineString createLineString(List<SimpleTypeContainer> objectSimpleExtensions,
IdAttributes idAttributes,
List<SimpleTypeContainer> abstractGeometrySimpleExtensions,
List<Object> abstractGeometryObjectExtensions,
boolean extrude, boolean tessellate,
AltitudeMode altitudeMode,
CoordinateSequence coordinates,
List<SimpleTypeContainer> lineStringSimpleExtensions,
List<Object> lineStringObjectExtensions)
{
return new DefaultLineString(objectSimpleExtensions, idAttributes,
abstractGeometrySimpleExtensions,
abstractGeometryObjectExtensions,
extrude, tessellate, altitudeMode,
coordinates,
lineStringSimpleExtensions,
lineStringObjectExtensions, GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LineString createLineString(CoordinateSequence coordinates) {
return new DefaultLineString(coordinates,GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LineStyle createLineStyle(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> subStyleSimpleExtensions,
List<Object> subStyleObjectExtensions,
Color color, ColorMode colorMode,
List<SimpleTypeContainer> colorStyleSimpleExtensions,
List<Object> colorStyleObjectExtensions,
double width,
List<SimpleTypeContainer> lineStyleSimpleExtensions,
List<Object> lineStyleObjectExtensions)
{
return new DefaultLineStyle(objectSimpleExtensions, idAttributes,
subStyleSimpleExtensions, subStyleObjectExtensions,
color, colorMode, colorStyleSimpleExtensions, colorStyleObjectExtensions,
width, lineStyleSimpleExtensions, lineStyleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LineStyle createLineStyle(){
return new DefaultLineStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Link createLink(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String href,
List<SimpleTypeContainer> basicLinkSimpleExtensions,
List<Object> basicLinkObjectExtensions,
RefreshMode refreshMode, double refreshInterval,
ViewRefreshMode viewRefreshMode, double viewRefreshTime,
double viewBoundScale, String viewFormat, String httpQuery,
List<SimpleTypeContainer> linkSimpleExtensions,
List<Object> linkObjectExtensions)
{
return new DefaultLink(objectSimpleExtensions, idAttributes,
href, basicLinkSimpleExtensions, basicLinkObjectExtensions,
refreshMode, refreshInterval, viewRefreshMode,
viewRefreshTime, viewBoundScale, viewFormat, httpQuery,
linkSimpleExtensions, linkObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Link createLink() {
return new DefaultLink();
}
/**
*
* @{@inheritDoc }
*/
@Override
public ListStyle createListStyle(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> subStyleSimpleExtensions,
List<Object> subStyleObjectExtensions,
ListItem listItem, Color bgColor, List<ItemIcon> itemIcons, int maxSnippetLines,
List<SimpleTypeContainer> listStyleSimpleExtensions,
List<Object> listStyleObjectExtensions)
{
return new DefaultListStyle(objectSimpleExtensions, idAttributes,
subStyleSimpleExtensions, subStyleObjectExtensions,
listItem, bgColor, itemIcons, maxSnippetLines,
listStyleSimpleExtensions, listStyleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public ListStyle createListStyle() {
return new DefaultListStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Location createLocation(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double longitude, double latitude, double altitude,
List<SimpleTypeContainer> locationSimpleExtensions,
List<Object> locationObjectExtensions)
{
return new DefaultLocation(objectSimpleExtensions, idAttributes,
longitude, latitude, altitude,
locationSimpleExtensions, locationObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Location createLocation(){
return new DefaultLocation();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Lod createLod(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double minLodPixels, double maxLodPixels,
double minFadeExtent, double maxFadeExtent,
List<SimpleTypeContainer> lodSimpleExtentions,
List<Object> lodObjectExtensions)
{
return new DefaultLod(objectSimpleExtensions, idAttributes,
minLodPixels, maxLodPixels, minFadeExtent, maxFadeExtent,
lodSimpleExtentions, lodObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Lod createLod(){
return new DefaultLod();
}
/**
*
* @{@inheritDoc }
*/
@Override
public LookAt createLookAt(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractViewSimpleExtensions,
List<Object> abstractViewObjectExtensions,
double longitude, double latitude, double altitude,
double heading, double tilt, double range, AltitudeMode altitudeMode,
List<SimpleTypeContainer> lookAtSimpleExtensions,
List<Object> lookAtObjectExtensions)
{
return new DefaultLookAt(objectSimpleExtensions, idAttributes,
abstractViewSimpleExtensions, abstractViewObjectExtensions,
longitude, latitude, altitude, heading, tilt, range, altitudeMode,
lookAtSimpleExtensions, lookAtObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public LookAt createLookAt() {
return new DefaultLookAt();
}
/**
*
* @{@inheritDoc }
*/
@Deprecated
@Override
public Metadata createMetadata(List<Object> content){
return new DefaultMetaData(content);
}
/**
*
* @{@inheritDoc }
*/
@Deprecated
@Override
public Metadata createMetadata(){
return new DefaultMetaData();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Model createModel(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractGeometrySimpleExtensions,
List<Object> abstractGeometryObjectExtensions,
AltitudeMode altitudeMode, Location location,
Orientation orientation, Scale scale, Link link, ResourceMap resourceMap,
List<SimpleTypeContainer> modelSimpleExtensions,
List<Object> modelObjectExtensions)
{
return new DefaultModel(objectSimpleExtensions, idAttributes,
abstractGeometrySimpleExtensions, abstractGeometryObjectExtensions,
altitudeMode, location, orientation, scale, link, resourceMap,
modelSimpleExtensions, modelObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Model createModel(){
return new DefaultModel();
}
/**
*
* @{@inheritDoc }
*/
@Override
public MultiGeometry createMultiGeometry(List<SimpleTypeContainer> objectSimpleExtensions,
IdAttributes idAttributes,
List<SimpleTypeContainer> abstractGeometrySimpleExtensions,
List<Object> abstractGeometryObjectExtensions,
List<AbstractGeometry> geometries,
List<SimpleTypeContainer> multiGeometrySimpleExtensions,
List<Object> multiGeometryObjectExtensions)
{
return new DefaultMultiGeometry(objectSimpleExtensions, idAttributes,
abstractGeometrySimpleExtensions, abstractGeometryObjectExtensions,
geometries, multiGeometrySimpleExtensions, multiGeometryObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public MultiGeometry createMultiGeometry(){
return new DefaultMultiGeometry();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createNetworkLink(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, boolean visibility, boolean open,
AtomPersonConstruct author, AtomLink atomLink,
String address, AddressDetails addressDetails, String phoneNumber,
Object snippet, Object description,
AbstractView view, AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
boolean refreshVisibility, boolean flyToView, Link link,
List<SimpleTypeContainer> networkLinkSimpleExtensions,
List<Object> networkLinkObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_NETWORK_LINK.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (networkLinkSimpleExtensions != null) {
extensions.simples(Extensions.Names.NETWORK_LINK).addAll(networkLinkSimpleExtensions);
}
if (networkLinkObjectExtensions != null) {
extensions.complexes(Extensions.Names.NETWORK_LINK).addAll(networkLinkObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, atomLink);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_REFRESH_VISIBILITY, refreshVisibility);
feature.setPropertyValue(KmlConstants.TAG_FLY_TO_VIEW, flyToView);
feature.setPropertyValue(KmlConstants.TAG_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createNetworkLink() {
final Feature feature = KmlModelConstants.TYPE_NETWORK_LINK.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public NetworkLinkControl createNetworkLinkControl(double minRefreshPeriod,
double maxSessionLength, String cookie, String message, String linkName,
Object linkDescription, Snippet linkSnippet, Calendar expires,
Update update, AbstractView view,
List<SimpleTypeContainer> networkLinkControlSimpleExtensions,
List<Object> networkLinkControlObjectExtensions)
{
return new DefaultNetworkLinkControl(minRefreshPeriod, maxSessionLength,
cookie, message, linkName, linkDescription, linkSnippet,
expires, update, view,
networkLinkControlSimpleExtensions, networkLinkControlObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public NetworkLinkControl createNetworkLinkControl() {
return new DefaultNetworkLinkControl();
}
/**
* @{@inheritDoc }
*/
@Override
public Orientation createOrientation(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double heading, double tilt, double roll,
List<SimpleTypeContainer> orientationSimpleExtensions,
List<Object> orientationObjectExtensions)
{
return new DefaultOrientation(objectSimpleExtensions, idAttributes,
heading, tilt, roll,
orientationSimpleExtensions, orientationObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Orientation createOrientation() {
return new DefaultOrientation();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Pair createPair(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
StyleState key, URI styleUrl, AbstractStyleSelector styleSelector,
List<SimpleTypeContainer> pairSimpleExtensions,
List<Object> pairObjectExtensions)
{
return new DefaultPair(objectSimpleExtensions, idAttributes,
key, styleUrl, styleSelector,
pairSimpleExtensions, pairObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Pair createPair() {
return new DefaultPair();
}
/**
* @{@inheritDoc }
*/
@Override
public Feature createPhotoOverlay(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, boolean visibility, boolean open,
AtomPersonConstruct author, AtomLink link,
String address, AddressDetails addressDetails,
String phoneNumber, Object snippet,
Object description, AbstractView view,
AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
Color color, int drawOrder, Icon icon,
List<SimpleTypeContainer> abstractOveraySimpleExtensions,
List<Object> abstractOverlayObjectExtensions,
double rotation, ViewVolume viewVolume, ImagePyramid imagePyramid,
Point point, Shape shape,
List<SimpleTypeContainer> photoOverlaySimpleExtensions,
List<Object> photoOverlayObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_PHOTO_OVERLAY.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (abstractOveraySimpleExtensions != null) {
extensions.simples(Extensions.Names.OVERLAY).addAll(abstractOveraySimpleExtensions);
}
if (abstractOverlayObjectExtensions != null) {
extensions.complexes(Extensions.Names.OVERLAY).addAll(abstractOverlayObjectExtensions);
}
if (photoOverlaySimpleExtensions != null) {
extensions.simples(Extensions.Names.PHOTO_OVERLAY).addAll(photoOverlaySimpleExtensions);
}
if (photoOverlayObjectExtensions != null) {
extensions.complexes(Extensions.Names.PHOTO_OVERLAY).addAll(photoOverlayObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_COLOR, color);
feature.setPropertyValue(KmlConstants.TAG_DRAW_ORDER, drawOrder);
feature.setPropertyValue(KmlConstants.TAG_ICON, icon);
feature.setPropertyValue(KmlConstants.TAG_ROTATION, rotation);
feature.setPropertyValue(KmlConstants.TAG_VIEW_VOLUME, viewVolume);
feature.setPropertyValue(KmlConstants.TAG_IMAGE_PYRAMID, imagePyramid);
feature.setPropertyValue(KmlConstants.TAG_POINT, point);
feature.setPropertyValue(KmlConstants.TAG_SHAPE, shape);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createPhotoOverlay() {
final Feature feature = KmlModelConstants.TYPE_PHOTO_OVERLAY.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createPlacemark(List<SimpleTypeContainer> objectSimpleExtensions,
IdAttributes idAttributes,
String name,
boolean visibility,
boolean open,
AtomPersonConstruct author,
AtomLink link,
String address,
AddressDetails addressDetails,
String phoneNumber, Object snippet,
Object description, AbstractView view,
AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
AbstractGeometry geometry,
List<SimpleTypeContainer> placemarkSimpleExtensions,
List<Object> placemarkObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_PLACEMARK.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (placemarkSimpleExtensions != null) {
extensions.simples(Extensions.Names.PLACEMARK).addAll(placemarkSimpleExtensions);
}
if (placemarkObjectExtensions != null) {
extensions.complexes(Extensions.Names.PLACEMARK).addAll(placemarkObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_GEOMETRY, geometry);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createPlacemark() {
final Feature feature = KmlModelConstants.TYPE_PLACEMARK.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Point createPoint(List<SimpleTypeContainer> objectSimpleExtensions,
IdAttributes idAttributes,
List<SimpleTypeContainer> abstractGeometrySimpleExtensions,
List<Object> abstractGeometryObjectExtensions,
boolean extrude,
AltitudeMode altitudeMode,
CoordinateSequence coordinates,
List<SimpleTypeContainer> pointSimpleExtensions,
List<Object> pointObjectExtensions)
{
return new DefaultPoint(objectSimpleExtensions, idAttributes,
abstractGeometrySimpleExtensions, abstractGeometryObjectExtensions,
extrude, altitudeMode, coordinates,
pointSimpleExtensions, pointObjectExtensions, GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Point createPoint(CoordinateSequence coordinates) {
return new DefaultPoint(coordinates, GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Polygon createPolygon(List<SimpleTypeContainer> objectSimpleExtensions,
IdAttributes idAttributes,
List<SimpleTypeContainer> abstractGeometrySimpleExtensions,
List<Object> abstractGeometryObjectExtensions,
boolean extrude, boolean tessellate, AltitudeMode altitudeMode,
Boundary outerBoundary, List<Boundary> innerBoundaries,
List<SimpleTypeContainer> polygonSimpleExtensions,
List<Object> polygonObjectExtensions)
{
return new DefaultPolygon(objectSimpleExtensions, idAttributes,
abstractGeometrySimpleExtensions,
abstractGeometryObjectExtensions,
extrude, tessellate, altitudeMode,
outerBoundary, innerBoundaries, GF,
polygonSimpleExtensions,
polygonObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Polygon createPolygon(Boundary outerBoundary, List<Boundary> innerBoundaries) {
return new DefaultPolygon(outerBoundary, innerBoundaries, GF);
}
/**
*
* @{@inheritDoc }
*/
@Override
public PolyStyle createPolyStyle(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> subStyleSimpleExtensions,
List<Object> subStyleObjectExtensions,
Color color, ColorMode colorMode,
List<SimpleTypeContainer> colorStyleSimpleExtensions,
List<Object> colorStyleObjectExtensions,
boolean fill, boolean outline,
List<SimpleTypeContainer> polyStyleSimpleExtensions,
List<Object> polyStyleObjectExtensions)
{
return new DefaultPolyStyle(objectSimpleExtensions, idAttributes,
subStyleSimpleExtensions, subStyleObjectExtensions,
color, colorMode, colorStyleSimpleExtensions, colorStyleObjectExtensions,
fill, outline, polyStyleSimpleExtensions, polyStyleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public PolyStyle createPolyStyle(){
return new DefaultPolyStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Region createRegion(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
LatLonAltBox latLonAltBox, Lod lod,
List<SimpleTypeContainer> regionSimpleExtensions,
List<Object> regionObjectExtentions)
{
return new DefaultRegion(objectSimpleExtensions, idAttributes,
latLonAltBox, lod, regionSimpleExtensions, regionObjectExtentions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Region createRegion(){
return new DefaultRegion();
}
/**
*
* @{@inheritDoc }
*/
@Override
public ResourceMap createResourceMap(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<Alias> aliases,
List<SimpleTypeContainer> resourceMapSimpleExtensions,
List<Object> resourceMapObjectExtensions)
{
return new DefaultResourceMap(objectSimpleExtensions, idAttributes,
aliases, resourceMapSimpleExtensions, resourceMapObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public ResourceMap createResourceMap(){
return new DefaultResourceMap();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Scale createScale(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double x, double y, double z,
List<SimpleTypeContainer> scaleSimpleExtensions,
List<Object> scaleObjectExtensions)
{
return new DefaultScale(objectSimpleExtensions, idAttributes, x, y, z,
scaleSimpleExtensions, scaleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Scale createScale() {
return new DefaultScale();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Schema createSchema(List<SimpleField> simpleFields,
String name, String id, List<Object> schemaExtensions)
{
return new DefaultSchema(simpleFields, name, id, schemaExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Schema createSchema() {
return new DefaultSchema();
}
/**
*
* @{@inheritDoc }
*/
@Override
public SchemaData createSchemaData(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
URI schemaURL, List<SimpleData> simpleDatas, List<Object> schemaDataExtensions)
{
return new DefaultSchemaData(objectSimpleExtensions, idAttributes,
schemaURL, simpleDatas, schemaDataExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public SchemaData createSchemaData() {
return new DefaultSchemaData();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createScreenOverlay(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
String name, boolean visibility, boolean open,
AtomPersonConstruct author, AtomLink link,
String address, AddressDetails addressDetails,
String phoneNumber, Object snippet,
Object description, AbstractView view, AbstractTimePrimitive timePrimitive,
URI styleUrl, List<AbstractStyleSelector> styleSelector,
Region region, Object extendedData,
List<SimpleTypeContainer> abstractFeatureSimpleExtensions,
List<Object> abstractFeatureObjectExtensions,
Color color, int drawOrder, Icon icon,
List<SimpleTypeContainer> abstractOveraySimpleExtensions,
List<Object> abstractOverlayObjectExtensions,
Vec2 overlayXY, Vec2 screenXY, Vec2 rotationXY, Vec2 size, double rotation,
List<SimpleTypeContainer> screenOverlaySimpleExtensions,
List<Object> screenOverlayObjectExtensions)
{
final Feature feature = KmlModelConstants.TYPE_SCREEN_OVERLAY.newInstance();
Extensions extensions = new Extensions();
if (objectSimpleExtensions != null) {
extensions.simples(Extensions.Names.OBJECT).addAll(objectSimpleExtensions);
}
if (abstractFeatureSimpleExtensions != null) {
extensions.simples(Extensions.Names.FEATURE).addAll(abstractFeatureSimpleExtensions);
}
if (abstractFeatureObjectExtensions != null) {
extensions.complexes(Extensions.Names.FEATURE).addAll(abstractFeatureObjectExtensions);
}
if (abstractOveraySimpleExtensions != null) {
extensions.simples(Extensions.Names.OVERLAY).addAll(abstractOveraySimpleExtensions);
}
if (abstractOverlayObjectExtensions != null) {
extensions.complexes(Extensions.Names.OVERLAY).addAll(abstractOverlayObjectExtensions);
}
if (screenOverlaySimpleExtensions != null) {
extensions.simples(Extensions.Names.SCREEN_OVERLAY).addAll(screenOverlaySimpleExtensions);
}
if (screenOverlayObjectExtensions != null) {
extensions.complexes(Extensions.Names.SCREEN_OVERLAY).addAll(screenOverlayObjectExtensions);
}
feature.setPropertyValue(KmlConstants.ATT_ID, idAttributes);
feature.setPropertyValue(KmlConstants.TAG_NAME, name);
feature.setPropertyValue(KmlConstants.TAG_VISIBILITY, visibility);
feature.setPropertyValue(KmlConstants.TAG_OPEN, open);
feature.setPropertyValue(KmlConstants.TAG_ATOM_AUTHOR, author);
feature.setPropertyValue(KmlConstants.TAG_ATOM_LINK, link);
feature.setPropertyValue(KmlConstants.TAG_ADDRESS, address);
feature.setPropertyValue(KmlConstants.TAG_XAL_ADDRESS_DETAILS, addressDetails);
feature.setPropertyValue(KmlConstants.TAG_PHONE_NUMBER, phoneNumber);
feature.setPropertyValue(KmlConstants.TAG_SNIPPET, snippet);
feature.setPropertyValue(KmlConstants.TAG_DESCRIPTION, description);
feature.setPropertyValue(KmlConstants.TAG_VIEW, view);
feature.setPropertyValue(KmlConstants.TAG_TIME_PRIMITIVE, timePrimitive);
feature.setPropertyValue(KmlConstants.TAG_STYLE_URL, styleUrl);
feature.setPropertyValue(KmlConstants.TAG_STYLE_SELECTOR, styleSelector);
feature.setPropertyValue(KmlConstants.TAG_REGION, region);
feature.setPropertyValue(KmlConstants.TAG_EXTENDED_DATA, extendedData);
feature.setPropertyValue(KmlConstants.TAG_COLOR, color);
feature.setPropertyValue(KmlConstants.TAG_DRAW_ORDER, drawOrder);
feature.setPropertyValue(KmlConstants.TAG_ICON, icon);
feature.setPropertyValue(KmlConstants.TAG_ROTATION, rotation);
feature.setPropertyValue(KmlConstants.TAG_OVERLAY_XY, overlayXY);
feature.setPropertyValue(KmlConstants.TAG_SCREEN_XY, screenXY);
feature.setPropertyValue(KmlConstants.TAG_ROTATION_XY, rotationXY);
feature.setPropertyValue(KmlConstants.TAG_SIZE, size);
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, extensions);
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public Feature createScreenOverlay() {
final Feature feature = KmlModelConstants.TYPE_SCREEN_OVERLAY.newInstance();
feature.setPropertyValue(KmlConstants.TAG_EXTENSIONS, new Extensions());
return feature;
}
/**
*
* @{@inheritDoc }
*/
@Override
public SimpleData createSimpleData(String name, String content) {
return new DefaultSimpleData(name, content);
}
/**
*
* @{@inheritDoc }
*/
@Override
public SimpleField createSimpleField(Object displayName, String type,
String name, List<Object> simpleFieldExtensions) {
return new DefaultSimpleField(displayName, type, name, simpleFieldExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public SimpleField createSimpleField(){
return new DefaultSimpleField();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Snippet createSnippet(int maxLines, Object content) {
return new DefaultSnippet(maxLines, content);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Style createStyle(List<SimpleTypeContainer> objectSimpleExtensions,
IdAttributes idAttributes,
List<SimpleTypeContainer> abstractStyleSelectorSimpleExtensions,
List<Object> abstractStyleSelectorObjectExtensions,
IconStyle iconStyle, LabelStyle labelStyle, LineStyle lineStyle,
PolyStyle polyStyle, BalloonStyle balloonStyle, ListStyle listStyle,
List<SimpleTypeContainer> styleSimpleExtensions,
List<Object> styleObjectExtensions)
{
return new DefaultStyle(objectSimpleExtensions, idAttributes,
abstractStyleSelectorSimpleExtensions, abstractStyleSelectorObjectExtensions,
iconStyle, labelStyle, lineStyle, polyStyle, balloonStyle, listStyle,
styleSimpleExtensions, styleObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Style createStyle() {
return new DefaultStyle();
}
/**
*
* @{@inheritDoc }
*/
@Override
public StyleMap createStyleMap(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractStyleSelectorSimpleExtensions,
List<Object> abstractStyleSelectorObjectExtensions,
List<Pair> pairs, List<SimpleTypeContainer> styleMapSimpleExtensions,
List<Object> styleMapObjectExtensions)
{
return new DefaultStyleMap(objectSimpleExtensions, idAttributes,
abstractStyleSelectorSimpleExtensions, abstractStyleSelectorObjectExtensions,
pairs, styleMapSimpleExtensions, styleMapObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public StyleMap createStyleMap(){
return new DefaultStyleMap();
}
/**
*
* @{@inheritDoc }
*/
@Override
public TimeSpan createTimeSpan(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractTimePrimitiveSimpleExtensions,
List<Object> abstractTimePrimitiveObjectExtensions,
Calendar begin, Calendar end, List<SimpleTypeContainer> timeSpanSimpleExtensions,
List<Object> timeSpanObjectExtensions)
{
return new DefaultTimeSpan(objectSimpleExtensions, idAttributes,
abstractTimePrimitiveSimpleExtensions, abstractTimePrimitiveObjectExtensions,
begin, end, timeSpanSimpleExtensions, timeSpanObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public TimeSpan createTimeSpan(){
return new DefaultTimeSpan();
}
/**
*
* @{@inheritDoc }
*/
@Override
public TimeStamp createTimeStamp(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
List<SimpleTypeContainer> abstractTimePrimitiveSimpleExtensions,
List<Object> abstractTimePrimitiveObjectExtensions,
Calendar when, List<SimpleTypeContainer> timeStampSimpleExtensions,
List<Object> timeStampObjectExtensions)
{
return new DefaultTimeStamp(objectSimpleExtensions, idAttributes,
abstractTimePrimitiveSimpleExtensions, abstractTimePrimitiveObjectExtensions,
when, timeStampSimpleExtensions, timeStampObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public TimeStamp createTimeStamp(){
return new DefaultTimeStamp();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Update createUpdate(URI targetHref, List<Object> updates,
List<Object> updateOpExtensions, List<Object> updateExtensions)
{
return new DefaultUpdate(targetHref, updates,
updateOpExtensions, updateExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Update createUpdate(){
return new DefaultUpdate();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Vec2 createVec2(double x, double y, Units xUnit, Units yUnit) {
return new DefaultVec2(x, y, xUnit, yUnit);
}
/**
*
* @{@inheritDoc }
*/
@Override
public Vec2 createVec2() {
return new DefaultVec2();
}
/**
*
* @{@inheritDoc }
*/
@Override
public ViewVolume createViewVolume(
List<SimpleTypeContainer> objectSimpleExtensions, IdAttributes idAttributes,
double leftFov, double rightFov, double bottomFov, double topFov, double near,
List<SimpleTypeContainer> viewVolumeSimpleExtensions,
List<Object> viewVolumeObjectExtensions)
{
return new DefaultViewVolume(objectSimpleExtensions, idAttributes,
leftFov, rightFov, bottomFov, topFov, near,
viewVolumeSimpleExtensions, viewVolumeObjectExtensions);
}
/**
*
* @{@inheritDoc }
*/
@Override
public ViewVolume createViewVolume() {
return new DefaultViewVolume();
}
/**
*
* @{@inheritDoc }
*/
@Override
public Cdata createCdata(String content) {
return new DefaultCdata(content);
}
/**
*
* @{@inheritDoc }
*/
@Override
public SimpleTypeContainer createSimpleTypeContainer(
String namespaceUri, String tagName, Object value)
{
return new DefaultSimpleTypeContainer(namespaceUri, tagName, value);
}
}