001
002/*
003 * Copyright (C) 2010 Archie L. Cobbs. All rights reserved.
004 *
005 * $Id$
006 */
007
008package org.dellroad.jibxbindings.pidf.lo.gml;
009
010import java.net.URI;
011
012/**
013 * GML ellipsoid.
014 */
015public class Ellipsoid extends Solid {
016
017    private double[] center;
018    private Measure semiMajorAxis;
019    private Measure semiMinorAxis;
020    private Measure verticalAxis;
021    private Measure orientation;
022
023    public Ellipsoid() {
024    }
025
026    public Ellipsoid(String gid, URI srsName, int srsDimension,
027      double[] center, Measure semiMajorAxis, Measure semiMinorAxis, Measure verticalAxis, Measure orientation) {
028        super(gid, srsName, srsDimension);
029        this.setCenter(center);
030        this.setSemiMajorAxis(semiMajorAxis);
031        this.setSemiMinorAxis(semiMinorAxis);
032        this.setVerticalAxis(verticalAxis);
033        this.setOrientation(orientation);
034    }
035
036    /**
037     * The center of the ellipsoid.
038     */
039    public double[] getCenter() {
040        return this.center;
041    }
042    public void setCenter(double[] center) {
043        this.center = center;
044    }
045
046    /**
047     * The ellipsoid's {@code <gs:semiMajorAxis>}.
048     */
049    public Measure getSemiMajorAxis() {
050        return this.semiMajorAxis;
051    }
052    public void setSemiMajorAxis(Measure semiMajorAxis) {
053        this.semiMajorAxis = semiMajorAxis;
054    }
055
056    /**
057     * The ellipsoid's {@code <gs:semiMinorAxis>}.
058     */
059    public Measure getSemiMinorAxis() {
060        return this.semiMinorAxis;
061    }
062    public void setSemiMinorAxis(Measure semiMinorAxis) {
063        this.semiMinorAxis = semiMinorAxis;
064    }
065
066    /**
067     * The ellipsoid's {@code <gs:verticalAxis>}.
068     */
069    public Measure getVerticalAxis() {
070        return this.verticalAxis;
071    }
072    public void setVerticalAxis(Measure verticalAxis) {
073        this.verticalAxis = verticalAxis;
074    }
075
076    /**
077     * The ellipsoid's {@code <gs:orientation>}.
078     */
079    public Measure getOrientation() {
080        return this.orientation;
081    }
082    public void setOrientation(Measure orientation) {
083        this.orientation = orientation;
084    }
085
086    @Override
087    public void visit(GMLObjectSwitch gmlObjectSwitch) {
088        gmlObjectSwitch.caseEllipsoid(this);
089    }
090
091// Cloneable
092
093    @Override
094    public Ellipsoid clone() {
095        final Ellipsoid clone = (Ellipsoid)super.clone();
096        clone.center = this.center != null ? this.center.clone() : null;
097        clone.semiMajorAxis = this.semiMajorAxis != null ? this.semiMajorAxis.clone() : null;
098        clone.semiMinorAxis = this.semiMinorAxis != null ? this.semiMinorAxis.clone() : null;
099        clone.verticalAxis = this.verticalAxis != null ? this.verticalAxis.clone() : null;
100        clone.orientation = this.orientation != null ? this.orientation.clone() : null;
101        return clone;
102    }
103}
104