sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1459713 [1/2] - /sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/
Date Fri, 22 Mar 2013 11:10:44 GMT
Author: desruisseaux
Date: Fri Mar 22 11:10:43 2013
New Revision: 1459713

URL: http://svn.apache.org/r1459713
Log:
Added the metadata acquisition package.

Added:
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java   (with props)

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,249 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.acquisition.AcquisitionInformation;
+import org.opengis.metadata.acquisition.EnvironmentalRecord;
+import org.opengis.metadata.acquisition.Instrument;
+import org.opengis.metadata.acquisition.Objective;
+import org.opengis.metadata.acquisition.Operation;
+import org.opengis.metadata.acquisition.Plan;
+import org.opengis.metadata.acquisition.Platform;
+import org.opengis.metadata.acquisition.Requirement;
+import org.apache.sis.metadata.iso.ISOMetadata;
+
+
+/**
+ * Designations for the measuring instruments, the platform carrying them, and the mission to
+ * which the data contributes.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_AcquisitionInformation_Type", propOrder = {
+    "acquisitionPlans",
+    "acquisitionRequirements",
+    "environmentalConditions",
+    "instruments",
+    "objectives",
+    "operations",
+    "platforms"
+})
+@XmlRootElement(name = "MI_AcquisitionInformation")
+public class DefaultAcquisitionInformation extends ISOMetadata implements AcquisitionInformation {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 1232071263806560246L;
+
+    /**
+     * Identifies the plan as implemented by the acquisition.
+     */
+    private Collection<Plan> acquisitionPlans;
+
+    /**
+     * Identifies the requirement the data acquisition intends to satisfy.
+     */
+    private Collection<Requirement> acquisitionRequirements;
+
+    /**
+     * A record of the environmental circumstances during the data acquisition.
+     */
+    private EnvironmentalRecord environmentalConditions;
+
+    /**
+     * General information about the instrument used in data acquisition.
+     */
+    private Collection<Instrument> instruments;
+
+    /**
+     * Identification of the area or object to be sensed.
+     */
+    private Collection<Objective> objectives;
+
+    /**
+     * General information about an identifiable activity which provided the data.
+     */
+    private Collection<Operation> operations;
+
+    /**
+     * General information about the platform from which the data were taken.
+     */
+    private Collection<Platform> platforms;
+
+    /**
+     * Constructs an initially empty acquisition information.
+     */
+    public DefaultAcquisitionInformation() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultAcquisitionInformation castOrCopy(final AcquisitionInformation object) {
+        if (object == null || object instanceof DefaultAcquisitionInformation) {
+            return (DefaultAcquisitionInformation) object;
+        }
+        final DefaultAcquisitionInformation copy = new DefaultAcquisitionInformation();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the plan as implemented by the acquisition.
+     */
+    @Override
+    @XmlElement(name = "acquisitionPlan")
+    public synchronized Collection<Plan> getAcquisitionPlans() {
+        return acquisitionPlans = nonNullCollection(acquisitionPlans, Plan.class);
+    }
+
+    /**
+     * Sets the plan as implemented by the acquisition.
+     *
+     * @param newValues The new plan values.
+     */
+    public synchronized void setAcquisitionPlans(final Collection<? extends Plan> newValues) {
+        acquisitionPlans = copyCollection(newValues, acquisitionPlans, Plan.class);
+    }
+
+    /**
+     * Returns the requirement the data acquisition intends to satisfy.
+     */
+    @Override
+    @XmlElement(name = "acquisitionRequirement")
+    public synchronized Collection<Requirement> getAcquisitionRequirements() {
+        return acquisitionRequirements = nonNullCollection(acquisitionRequirements, Requirement.class);
+    }
+
+    /**
+     * Sets the requirement the data acquisition intends to satisfy.
+     *
+     * @param newValues The new acquisition requirements values.
+     */
+    public synchronized void setAcquisitionRequirements(final Collection<? extends Requirement> newValues) {
+        acquisitionRequirements = copyCollection(newValues, acquisitionRequirements, Requirement.class);
+    }
+
+    /**
+     * Returns a record of the environmental circumstances during the data acquisition.
+     * {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "environmentalConditions")
+    public synchronized EnvironmentalRecord getEnvironmentalConditions() {
+        return environmentalConditions;
+    }
+
+    /**
+     * Sets the record of the environmental circumstances during the data acquisition.
+     *
+     * @param newValue The new environmental record value.
+     */
+    public synchronized void setEnvironmentalConditions(final EnvironmentalRecord newValue) {
+        checkWritePermission();
+        environmentalConditions = newValue;
+    }
+
+    /**
+     * Returns the general information about the instrument used in data acquisition.
+     */
+    @Override
+    @XmlElement(name = "instrument")
+    public synchronized Collection<Instrument> getInstruments() {
+        return instruments = nonNullCollection(instruments, Instrument.class);
+    }
+
+    /**
+     * Sets the general information about the instrument used in data acquisition.
+     *
+     * @param newValues The new instruments values.
+     */
+    public synchronized void setInstruments(final Collection<? extends Instrument> newValues) {
+        instruments = copyCollection(newValues, instruments, Instrument.class);
+    }
+
+    /**
+     * Returns the area or object to be sensed.
+     */
+    @Override
+    @XmlElement(name = "objective")
+    public synchronized Collection<Objective> getObjectives() {
+        return objectives = nonNullCollection(objectives, Objective.class);
+    }
+
+    /**
+     * Sets the area or object to be sensed.
+     *
+     * @param newValues The new objectives values.
+     */
+    public synchronized void setObjectives(final Collection<? extends Objective> newValues) {
+        objectives = copyCollection(newValues, objectives, Objective.class);
+    }
+
+    /**
+     * Returns the general information about an identifiable activity which provided the data.
+     */
+    @Override
+    @XmlElement(name = "operation")
+    public synchronized Collection<Operation> getOperations() {
+        return operations = nonNullCollection(operations, Operation.class);
+    }
+
+    /**
+     * Sets the general information about an identifiable activity which provided the data.
+     *
+     * @param newValues The new operations values.
+     */
+    public synchronized void setOperations(final Collection<? extends Operation> newValues) {
+        operations = copyCollection(newValues, operations, Operation.class);
+    }
+
+    /**
+     * Returns the general information about the platform from which the data were taken.
+     */
+    @Override
+    @XmlElement(name = "platform")
+    public synchronized Collection<Platform> getPlatforms() {
+        return platforms = nonNullCollection(platforms, Platform.class);
+    }
+
+    /**
+     * Sets the general information about the platform from which the data were taken.
+     *
+     * @param newValues The new platforms values.
+     */
+    public synchronized void setPlatforms(final Collection<? extends Platform> newValues) {
+        platforms = copyCollection(newValues, platforms, Platform.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.acquisition.EnvironmentalRecord;
+import org.opengis.util.InternationalString;
+import org.apache.sis.measure.ValueRange;
+import org.apache.sis.metadata.iso.ISOMetadata;
+
+
+/**
+ * Information about the environmental conditions during the acquisition.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_EnvironmentalRecord_Type", propOrder = {
+    "averageAirTemperature",
+    "maxRelativeHumidity",
+    "maxAltitude",
+    "meteorologicalConditions"
+})
+@XmlRootElement(name = "MI_EnvironmentalRecord")
+public class DefaultEnvironmentalRecord extends ISOMetadata implements EnvironmentalRecord {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -8553651678708627947L;
+
+    /**
+     * Average air temperature along the flight pass during the photo flight.
+     */
+    private Double averageAirTemperature;
+
+    /**
+     * Maximum relative humidity along the flight pass during the photo flight.
+     */
+    private Double maxRelativeHumidity;
+
+    /**
+     * Maximum altitude during the photo flight.
+     */
+    private Double maxAltitude;
+
+    /**
+     * Meteorological conditions in the photo flight area, in particular clouds, snow and wind.
+     */
+    private InternationalString meteorologicalConditions;
+
+    /**
+     * Constructs an initially empty environmental record.
+     */
+    public DefaultEnvironmentalRecord() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultEnvironmentalRecord castOrCopy(final EnvironmentalRecord object) {
+        if (object == null || object instanceof DefaultEnvironmentalRecord) {
+            return (DefaultEnvironmentalRecord) object;
+        }
+        final DefaultEnvironmentalRecord copy = new DefaultEnvironmentalRecord();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the average air temperature along the flight pass during the photo flight.
+     */
+    @Override
+    @XmlElement(name = "averageAirTemperature", required = true)
+    public synchronized Double getAverageAirTemperature() {
+        return averageAirTemperature;
+    }
+
+    /**
+     * Sets the average air temperature along the flight pass during the photo flight.
+     *
+     * @param newValue The new average air temperature value.
+     */
+    public synchronized void setAverageAirTemperature(final Double newValue) {
+        checkWritePermission();
+        averageAirTemperature = newValue;
+    }
+
+    /**
+     * Returns the maximum relative humidity along the flight pass during the photo flight.
+     */
+    @Override
+    @ValueRange(minimum=0, maximum=100)
+    @XmlElement(name = "maxRelativeHumidity", required = true)
+    public synchronized Double getMaxRelativeHumidity() {
+        return maxRelativeHumidity;
+    }
+
+    /**
+     * Sets the maximum relative humidity along the flight pass during the photo flight.
+     *
+     * @param newValue The new maximum relative humidity.
+     */
+    public synchronized void setMaxRelativeHumidity(final Double newValue) {
+        checkWritePermission();
+        maxRelativeHumidity = newValue;
+    }
+
+    /**
+     * Returns the maximum altitude during the photo flight.
+     */
+    @Override
+    @XmlElement(name = "maxAltitude", required = true)
+    public synchronized Double getMaxAltitude() {
+        return maxAltitude;
+    }
+
+    /**
+     * Sets the maximum altitude value.
+     *
+     * @param newValue The new maximum altitude value.
+     */
+    public synchronized void setMaxAltitude(final Double newValue) {
+        checkWritePermission();
+        maxAltitude = newValue;
+    }
+
+    /**
+     * Returns the meteorological conditions in the photo flight area, in particular clouds,
+     * snow and wind.
+     */
+    @Override
+    @XmlElement(name = "meteorologicalConditions", required = true)
+    public synchronized InternationalString getMeteorologicalConditions() {
+        return meteorologicalConditions;
+    }
+
+    /**
+     * Sets the meteorological conditions in the photo flight area, in particular clouds,
+     * snow and wind.
+     *
+     * @param newValue The meteorological conditions value.
+     */
+    public synchronized void setMeteorologicalConditions(final InternationalString newValue) {
+        checkWritePermission();
+        meteorologicalConditions = newValue;
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,275 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.acquisition.Context;
+import org.opengis.metadata.acquisition.Event;
+import org.opengis.metadata.acquisition.Instrument;
+import org.opengis.metadata.acquisition.Objective;
+import org.opengis.metadata.acquisition.PlatformPass;
+import org.opengis.metadata.acquisition.Sequence;
+import org.opengis.metadata.acquisition.Trigger;
+import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+
+
+/**
+ * Identification of a significant collection point within an operation.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_Event_Type", propOrder = {
+    "identifier",
+    "trigger",
+    "context",
+    "sequence",
+    "time",
+    "expectedObjectives",
+    "relatedPass",
+    "relatedSensors"
+})
+@XmlRootElement(name = "MI_Event")
+public class DefaultEvent extends ISOMetadata implements Event {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -5625600499628778407L;
+
+    /**
+     * Initiator of the event.
+     */
+    private Trigger trigger;
+
+    /**
+     * Meaning of the event.
+     */
+    private Context context;
+
+    /**
+     * Relative time ordering of the event.
+     */
+    private Sequence sequence;
+
+    /**
+     * Time the event occurred, or {@link Long#MIN_VALUE} if none.
+     */
+    private long time;
+
+    /**
+     * Objective or objectives satisfied by an event.
+     */
+    private Collection<Objective> expectedObjectives;
+
+    /**
+     * Pass during which an event occurs.
+     */
+    private PlatformPass relatedPass;
+
+    /**
+     * Instrument or instruments for which the event is meaningful.
+     */
+    private Collection<Instrument> relatedSensors;
+
+    /**
+     * Constructs an initially empty acquisition information.
+     */
+    public DefaultEvent() {
+        time = Long.MIN_VALUE;
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultEvent castOrCopy(final Event object) {
+        if (object == null || object instanceof DefaultEvent) {
+            return (DefaultEvent) object;
+        }
+        final DefaultEvent copy = new DefaultEvent();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the event name or number.
+     */
+    @Override
+    @XmlElement(name = "identifier", required = true)
+    public Identifier getIdentifier() {
+        return NonMarshalledAuthority.getMarshallable(identifiers);
+    }
+
+    /**
+     * Sets the event name or number.
+     *
+     * @param newValue The event identifier value.
+     */
+    public synchronized void setIdentifier(final Identifier newValue) {
+        checkWritePermission();
+        identifiers = nonNullCollection(identifiers, Identifier.class);
+        NonMarshalledAuthority.setMarshallable(identifiers, newValue);
+    }
+
+    /**
+     * Returns the initiator of the event.
+     */
+    @Override
+    @XmlElement(name = "trigger", required = true)
+    public synchronized Trigger getTrigger() {
+        return trigger;
+    }
+
+    /**
+     * Sets the initiator of the event.
+     *
+     * @param newValue The new trigger value.
+     */
+    public synchronized void setTrigger(final Trigger newValue) {
+        checkWritePermission();
+        trigger = newValue;
+    }
+
+    /**
+     * Meaning of the event.
+     */
+    @Override
+    @XmlElement(name = "context", required = true)
+    public synchronized Context getContext() {
+        return context;
+    }
+
+    /**
+     * Sets the meaning of the event.
+     *
+     * @param newValue The new context value.
+     */
+    public synchronized void setContext(final Context newValue) {
+        checkWritePermission();
+        context = newValue;
+    }
+
+    /**
+     * Returns the relative time ordering of the event.
+     */
+    @Override
+    @XmlElement(name = "sequence", required = true)
+    public synchronized Sequence getSequence() {
+        return sequence;
+    }
+
+    /**
+     * Sets the relative time ordering of the event.
+     *
+     * @param newValue The new sequence value.
+     */
+    public synchronized void setSequence(final Sequence newValue) {
+        checkWritePermission();
+        sequence = newValue;
+    }
+
+    /**
+     * Returns the time the event occurred.
+     */
+    @Override
+    @XmlElement(name = "time", required = true)
+    public synchronized Date getTime() {
+        final long date = this.time;
+        return (date != Long.MIN_VALUE) ? new Date(date) : null;
+    }
+
+    /**
+     * Sets the time the event occurred.
+     *
+     * @param newValue The new time value.
+     */
+    public synchronized void setTime(final Date newValue) {
+        checkWritePermission();
+        time = (newValue != null) ? newValue.getTime() : Long.MIN_VALUE;
+    }
+
+    /**
+     * Returns the objective or objectives satisfied by an event.
+     */
+    @Override
+    @XmlElement(name = "expectedObjective")
+    public synchronized Collection<Objective> getExpectedObjectives() {
+        return expectedObjectives = nonNullCollection(expectedObjectives, Objective.class);
+    }
+
+    /**
+     * Sets the objective or objectives satisfied by an event.
+     *
+     * @param newValues The new expected objectives values.
+     */
+    public synchronized void setExpectedObjectives(final Collection<? extends Objective> newValues) {
+        expectedObjectives = copyCollection(newValues, expectedObjectives, Objective.class);
+    }
+
+    /**
+     * Returns the pass during which an event occurs. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "relatedPass")
+    public synchronized PlatformPass getRelatedPass() {
+        return relatedPass;
+    }
+
+    /**
+     * Sets the pass during which an event occurs.
+     *
+     * @param newValue The new platform pass value.
+     */
+    public synchronized void setRelatedPass(final PlatformPass newValue) {
+        relatedPass = newValue;
+    }
+
+    /**
+     * Returns the instrument or instruments for which the event is meaningful.
+     */
+    @Override
+    @XmlElement(name = "relatedSensor")
+    public synchronized Collection<? extends Instrument> getRelatedSensors() {
+        return relatedSensors = nonNullCollection(relatedSensors, Instrument.class);
+    }
+
+    /**
+     * Sets the instrument or instruments for which the event is meaningful.
+     *
+     * @param newValues The new instrument values.
+     */
+    public synchronized void setRelatedSensors(final Collection<? extends Instrument> newValues) {
+        relatedSensors = copyCollection(newValues, relatedSensors, Instrument.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.acquisition.Instrument;
+import org.opengis.metadata.acquisition.Platform;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.util.InternationalString;
+import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+
+
+/**
+ * Designations for the measuring instruments.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_Instrument_Type", propOrder = {
+    "citations",
+    "identifier",
+    "type",
+    "description",
+    "mountedOn"
+})
+@XmlRootElement(name = "MI_Instrument")
+public class DefaultInstrument extends ISOMetadata implements Instrument {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 6356044176200794578L;
+
+    /**
+     * Complete citation of the instrument.
+     */
+    private Collection<Citation> citations;
+
+    /**
+     * Name of the type of instrument. Examples: framing, line-scan, push-broom, pan-frame.
+     */
+    private InternationalString type;
+
+    /**
+     * Textual description of the instrument.
+     */
+    private InternationalString description;
+
+    /**
+     * Platform on which the instrument is mounted.
+     */
+    private Platform mountedOn;
+
+    /**
+     * Constructs an initially empty instrument.
+     */
+    public DefaultInstrument() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultInstrument castOrCopy(final Instrument object) {
+        if (object == null || object instanceof DefaultInstrument) {
+            return (DefaultInstrument) object;
+        }
+        final DefaultInstrument copy = new DefaultInstrument();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the complete citation of the instrument.
+     */
+    @Override
+    @XmlElement(name = "citation")
+    public synchronized Collection<Citation> getCitations() {
+        return citations = nonNullCollection(citations, Citation.class);
+    }
+
+    /**
+     * Sets the complete citation of the instrument.
+     *
+     * @param newValues The new citation values.
+     */
+    public synchronized void setCitations(final Collection<? extends Citation> newValues) {
+        citations = copyCollection(newValues, citations, Citation.class);
+    }
+
+    /**
+     * Returns the unique identification of the instrument.
+     */
+    @Override
+    @XmlElement(name = "identifier", required = true)
+    public Identifier getIdentifier() {
+        return NonMarshalledAuthority.getMarshallable(identifiers);
+    }
+
+    /**
+     * Sets the unique identification of the instrument.
+     *
+     * @param newValue The new identifier value.
+     */
+    public synchronized void setIdentifier(final Identifier newValue) {
+        checkWritePermission();
+        identifiers = nonNullCollection(identifiers, Identifier.class);
+        NonMarshalledAuthority.setMarshallable(identifiers, newValue);
+    }
+
+    /**
+     * Returns the name of the type of instrument. Examples: framing, line-scan, push-broom, pan-frame.
+     */
+    @Override
+    @XmlElement(name = "type", required = true)
+    public synchronized InternationalString getType() {
+        return type;
+    }
+
+    /**
+     * Sets the name of the type of instrument. Examples: framing, line-scan, push-broom, pan-frame.
+     *
+     * @param newValue The new type value.
+     */
+    public synchronized void setType(final InternationalString newValue) {
+        checkWritePermission();
+        type = newValue;
+    }
+
+    /**
+     * Returns the textual description of the instrument. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "description")
+    public synchronized InternationalString getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the textual description of the instrument.
+     *
+     * @param newValue The new description value.
+     */
+    public synchronized void setDescription(final InternationalString newValue) {
+        checkWritePermission();
+        description = newValue;
+    }
+
+    /**
+     * Returns the platform on which the instrument is mounted. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "mountedOn")
+    public synchronized Platform getMountedOn() {
+        return mountedOn;
+    }
+
+    /**
+     * Sets the platform on which the instrument is mounted.
+     *
+     * @param newValue The new platform value.
+     */
+    public synchronized void setMountedOn(final Platform newValue) {
+        checkWritePermission();
+        mountedOn = newValue;
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,283 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.acquisition.Event;
+import org.opengis.metadata.acquisition.Instrument;
+import org.opengis.metadata.acquisition.Objective;
+import org.opengis.metadata.acquisition.ObjectiveType;
+import org.opengis.metadata.acquisition.PlatformPass;
+import org.opengis.metadata.extent.Extent;
+import org.opengis.util.InternationalString;
+import org.apache.sis.xml.IdentifierSpace;
+import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+
+import static org.apache.sis.internal.jaxb.MarshalContext.filterIdentifiers;
+
+
+/**
+ * Describes the characteristics, spatial and temporal extent of the intended object to be observed.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_Objective_Type", propOrder = {
+    "identifiers",
+    "priority",
+    "types",
+    "functions",
+    "extents",
+    "objectiveOccurences",
+    "pass",
+    "sensingInstruments"
+})
+@XmlRootElement(name = "MI_Objective")
+public class DefaultObjective extends ISOMetadata implements Objective {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -4633298523976029384L;
+
+    /**
+     * Priority applied to the target.
+     */
+    private InternationalString priority;
+
+    /**
+     * Collection technique for the objective.
+     */
+    private Collection<ObjectiveType> types;
+
+    /**
+     * Role or purpose performed by or activity performed at the objective.
+     */
+    private Collection<InternationalString> functions;
+
+    /**
+     * Extent information including the bounding box, bounding polygon, vertical and
+     * temporal extent of the objective.
+     */
+    private Collection<Extent> extents;
+
+    /**
+     * Event or events associated with objective completion.
+     */
+    private Collection<Event> objectiveOccurences;
+
+    /**
+     * Pass of the platform over the objective.
+     */
+    private Collection<PlatformPass> pass;
+
+    /**
+     * Instrument which senses the objective data.
+     */
+    private Collection<Instrument> sensingInstruments;
+
+    /**
+     * Constructs an initially empty objective.
+     */
+    public DefaultObjective() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultObjective castOrCopy(final Objective object) {
+        if (object == null || object instanceof DefaultObjective) {
+            return (DefaultObjective) object;
+        }
+        final DefaultObjective copy = new DefaultObjective();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the code used to identify the objective.
+     *
+     * {@section Implementation limitation}
+     * In the current SIS implementation, the returned list is always unmodifiable. The only way
+     * to change the collection of identifiers is to invoke {@link #setIdentifiers(Collection)}.
+     * This limitation may be removed in a future SIS version.
+     */
+    @Override
+    @XmlElement(name = "identifier", required = true)
+    public Collection<Identifier> getIdentifiers() {
+        identifiers = nonNullCollection(identifiers, Identifier.class);
+        return filterIdentifiers(identifiers);
+    }
+
+    /**
+     * Sets the code used to identify the objective.
+     * If the given collection contains XML identifiers like {@linkplain IdentifierSpace#ID ID}
+     * or {@linkplain IdentifierSpace#UUID UUID}, then those identifiers are ignored.
+     *
+     * @param newValues The new identifiers values.
+     */
+    public synchronized void setIdentifiers(final Collection<? extends Identifier> newValues) {
+        final Collection<Identifier> oldIds = NonMarshalledAuthority.getIdentifiers(identifiers);
+        identifiers = copyCollection(newValues, identifiers, Identifier.class);
+        NonMarshalledAuthority.setIdentifiers(identifiers, oldIds);
+    }
+
+    /**
+     * Returns the priority applied to the target. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "priority")
+    public synchronized InternationalString getPriority() {
+        return priority;
+    }
+
+    /**
+     * Sets the priority applied to the target.
+     *
+     * @param newValue The new priority value.
+     */
+    public synchronized void setPriority(final InternationalString newValue) {
+        checkWritePermission();
+        priority = newValue;
+    }
+
+    /**
+     * Returns the collection technique for the objective.
+     */
+    @Override
+    @XmlElement(name = "type")
+    public synchronized Collection<ObjectiveType> getTypes() {
+        return types = nonNullCollection(types, ObjectiveType.class);
+    }
+
+    /**
+     * Sets the collection technique for the objective.
+     *
+     * @param newValues The new types values.
+     */
+    public synchronized void setTypes(final Collection<? extends ObjectiveType> newValues) {
+        types = copyCollection(newValues, types, ObjectiveType.class);
+    }
+
+    /**
+     * Returns the role or purpose performed by or activity performed at the objective.
+     */
+    @Override
+    @XmlElement(name = "function")
+    public synchronized Collection<InternationalString> getFunctions() {
+        return functions = nonNullCollection(functions, InternationalString.class);
+    }
+
+    /**
+     * Sets the role or purpose performed by or activity performed at the objective.
+     *
+     * @param newValues The new functions values.
+     */
+    public synchronized void setFunctions(final Collection<? extends InternationalString> newValues) {
+        functions = copyCollection(newValues, functions, InternationalString.class);
+    }
+
+    /**
+     * Returns the extent information including the bounding box, bounding polygon, vertical and
+     * temporal extent of the objective.
+     */
+    @Override
+    @XmlElement(name = "extent")
+    public synchronized Collection<Extent> getExtents() {
+        return extents = nonNullCollection(extents, Extent.class);
+    }
+
+    /**
+     * Set the extent information including the bounding box, bounding polygon, vertical and
+     * temporal extent of the objective.
+     *
+     * @param newValues The new extents values.
+     */
+    public synchronized void setExtents(final Collection<? extends Extent> newValues) {
+        extents = copyCollection(newValues, extents, Extent.class);
+    }
+
+    /**
+     * Returns the event or events associated with objective completion.
+     */
+    @Override
+    @XmlElement(name = "objectiveOccurence", required = true)
+    public synchronized Collection<Event> getObjectiveOccurences() {
+        return objectiveOccurences = nonNullCollection(objectiveOccurences, Event.class);
+    }
+
+    /**
+     * Sets the event or events associated with objective completion.
+     *
+     * @param newValues The new objective occurrences values.
+     */
+    public synchronized void setObjectiveOccurences(final Collection<? extends Event> newValues) {
+        objectiveOccurences = copyCollection(newValues, objectiveOccurences, Event.class);
+    }
+
+    /**
+     * Returns the pass of the platform over the objective.
+     */
+    @Override
+    @XmlElement(name = "pass")
+    public synchronized Collection<PlatformPass> getPass() {
+        return pass = nonNullCollection(pass, PlatformPass.class);
+    }
+
+    /**
+     * Sets the pass of the platform over the objective.
+     *
+     * @param newValues The new pass values.
+     */
+    public synchronized void setPass(final Collection<? extends PlatformPass> newValues) {
+        pass = copyCollection(newValues, pass, PlatformPass.class);
+    }
+
+    /**
+     * Returns the instrument which senses the objective data.
+     */
+    @Override
+    @XmlElement(name = "sensingInstrument")
+    public synchronized Collection<Instrument> getSensingInstruments() {
+        return sensingInstruments = nonNullCollection(sensingInstruments, Instrument.class);
+    }
+
+    /**
+     * Sets the instrument which senses the objective data.
+     *
+     * @param newValues The new sensing instruments values.
+     */
+    public synchronized void setSensingInstruments(final Collection<? extends Instrument> newValues) {
+        sensingInstruments = copyCollection(newValues, sensingInstruments, Instrument.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,351 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.acquisition.Event;
+import org.opengis.metadata.acquisition.Objective;
+import org.opengis.metadata.acquisition.Operation;
+import org.opengis.metadata.acquisition.OperationType;
+import org.opengis.metadata.acquisition.Plan;
+import org.opengis.metadata.acquisition.Platform;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.metadata.identification.Progress;
+import org.opengis.util.InternationalString;
+import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+
+
+/**
+ * Designations for the operation used to acquire the dataset.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_Operation_Type", propOrder = {
+    "description",
+    "citation",
+    "identifier",
+    "status",
+    "type",
+    "childOperations",
+    "objectives",
+    "parentOperation",
+    "plan",
+    "platforms",
+    "significantEvents"
+})
+@XmlRootElement(name = "MI_Operation")
+public class DefaultOperation extends ISOMetadata implements Operation {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -4247450339144267883L;
+
+    /**
+     * Description of the mission on which the platform observations are made and the
+     * objectives of that mission.
+     */
+    private InternationalString description;
+
+    /**
+     * Identification of the mission.
+     */
+    private Citation citation;
+
+    /**
+     * Status of the data acquisition.
+     */
+    private Progress status;
+
+    /**
+     * Collection technique for the operation.
+     */
+    private OperationType type;
+
+    /**
+     * Sub-missions that make up part of a larger mission.
+     */
+    private Collection<Operation> childOperations;
+
+    /**
+     * Object(s) or area(s) of interest to be sensed.
+     */
+    private Collection<Objective> objectives;
+
+    /**
+     * Heritage of the operation.
+     */
+    private Operation parentOperation;
+
+    /**
+     * Plan satisfied by the operation.
+     */
+    private Plan plan;
+
+    /**
+     * Platform (or platforms) used in the operation.
+     */
+    private Collection<Platform> platforms;
+
+    /**
+     * Record of an event occurring during an operation.
+     */
+    private Collection<Event> significantEvents;
+
+    /**
+     * Constructs an initially empty operation.
+     */
+    public DefaultOperation() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultOperation castOrCopy(final Operation object) {
+        if (object == null || object instanceof DefaultOperation) {
+            return (DefaultOperation) object;
+        }
+        final DefaultOperation copy = new DefaultOperation();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the description of the mission on which the platform observations are made and the
+     * objectives of that mission. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "description")
+    public synchronized InternationalString getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the description of the mission on which the platform observations are made and the
+     * objectives of that mission.
+     *
+     * @param newValue The new description value.
+     */
+    public synchronized void setDescription(final InternationalString newValue) {
+        checkWritePermission();
+        description = newValue;
+    }
+
+    /**
+     * Returns the identification of the mission. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "citation")
+    public synchronized Citation getCitation() {
+        return citation;
+    }
+
+    /**
+     * Sets the identification of the mission.
+     *
+     * @param newValue The new citation value.
+     */
+    public synchronized void setCitation(final Citation newValue) {
+        checkWritePermission();
+        citation = newValue;
+    }
+
+    /**
+     * Returns the unique identification of the operation.
+     */
+    @Override
+    @XmlElement(name = "identifier", required = true)
+    public Identifier getIdentifier() {
+        return NonMarshalledAuthority.getMarshallable(identifiers);
+    }
+
+    /**
+     * Sets the unique identification of the operation.
+     *
+     * @param newValue The new identifier value.
+     */
+    public synchronized void setIdentifier(final Identifier newValue) {
+        checkWritePermission();
+        identifiers = nonNullCollection(identifiers, Identifier.class);
+        NonMarshalledAuthority.setMarshallable(identifiers, newValue);
+    }
+
+    /**
+     * Returns the status of the data acquisition.
+     */
+    @Override
+    @XmlElement(name = "status", required = true)
+    public synchronized Progress getStatus() {
+        return status;
+    }
+
+    /**
+     * Sets the status of the data acquisition.
+     *
+     * @param newValue The new status value.
+     */
+    public synchronized void setStatus(final Progress newValue) {
+        checkWritePermission();
+        status = newValue;
+    }
+
+    /**
+     * Returns the collection technique for the operation.
+     */
+    @Override
+    @XmlElement(name = "type")
+    public synchronized OperationType getType() {
+        return type;
+    }
+
+    /**
+     * Sets the collection technique for the operation.
+     *
+     * @param newValue The new type value.
+     */
+    public synchronized void setType(final OperationType newValue) {
+        checkWritePermission();
+        type = newValue;
+    }
+
+    /**
+     * Returns the sub-missions that make up part of a larger mission.
+     */
+    @Override
+    @XmlElement(name = "childOperation")
+    public synchronized Collection<Operation> getChildOperations() {
+        return childOperations = nonNullCollection(childOperations, Operation.class);
+    }
+
+    /**
+     * Sets the sub-missions that make up part of a larger mission.
+     *
+     * @param newValues The new child operations values.
+     */
+    public synchronized void setChildOperations(final Collection<? extends Operation> newValues) {
+        childOperations = copyCollection(newValues, childOperations, Operation.class);
+    }
+
+    /**
+     * Returns object(s) or area(s) of interest to be sensed.
+     */
+    @Override
+    @XmlElement(name = "objective")
+    public synchronized Collection<Objective> getObjectives() {
+        return objectives = nonNullCollection(objectives, Objective.class);
+    }
+
+    /**
+     * Sets Object(s) or area(s) of interest to be sensed.
+     *
+     * @param newValues The new objectives values.
+     */
+    public synchronized void setObjectives(final Collection<? extends Objective> newValues) {
+        objectives = copyCollection(newValues, objectives, Objective.class);
+    }
+
+    /**
+     * Returns the heritage of the operation.
+     */
+    @Override
+    @XmlElement(name = "parentOperation", required = true)
+    public synchronized Operation getParentOperation() {
+        return parentOperation;
+    }
+
+    /**
+     * Sets the heritage of the operation.
+     *
+     * @param newValue The new parent operation value.
+     */
+    public synchronized void setParentOperation(final Operation newValue) {
+        checkWritePermission();
+        parentOperation = newValue;
+    }
+
+    /**
+     * Returns the plan satisfied by the operation.
+     */
+    @Override
+    @XmlElement(name = "plan")
+    public synchronized Plan getPlan() {
+        return plan;
+    }
+
+    /**
+     * Sets the plan satisfied by the operation.
+     *
+     * @param newValue The new plan value.
+     */
+    public synchronized void setPlan(final Plan newValue) {
+        checkWritePermission();
+        plan = newValue;
+    }
+
+    /**
+     * Returns the platform (or platforms) used in the operation.
+     */
+    @Override
+    @XmlElement(name = "platform")
+    public synchronized Collection<Platform> getPlatforms() {
+        return platforms = nonNullCollection(platforms, Platform.class);
+    }
+
+    /**
+     * Sets the platform (or platforms) used in the operation.
+     *
+     * @param newValues The new platforms values.
+     */
+    public synchronized void setPlatforms(final Collection<? extends Platform> newValues) {
+        platforms = copyCollection(newValues, platforms, Platform.class);
+    }
+
+    /**
+     * Returns the record of an event occurring during an operation.
+     */
+    @Override
+    @XmlElement(name = "significantEvent")
+    public synchronized Collection<Event> getSignificantEvents() {
+        return significantEvents = nonNullCollection(significantEvents, Event.class);
+    }
+
+    /**
+     * Sets the record of an event occurring during an operation.
+     *
+     * @param newValues The new significant events value.
+     */
+    public synchronized void setSignificantEvents(final Collection<? extends Event> newValues) {
+        significantEvents = copyCollection(newValues, significantEvents, Event.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,201 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.acquisition.GeometryType;
+import org.opengis.metadata.acquisition.Operation;
+import org.opengis.metadata.acquisition.Plan;
+import org.opengis.metadata.acquisition.Requirement;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.metadata.identification.Progress;
+import org.apache.sis.metadata.iso.ISOMetadata;
+
+
+/**
+ * Designations for the planning information related to meeting the data acquisition requirements.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_Plan_Type", propOrder = {
+    "type",
+    "status",
+    "citation",
+    "operations",
+    "satisfiedRequirements"
+})
+@XmlRootElement(name = "MI_Plan")
+public class DefaultPlan extends ISOMetadata implements Plan {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -8457900515677160271L;
+
+    /**
+     * Manner of sampling geometry that the planner expects for collection of objective data.
+     */
+    private GeometryType type;
+
+    /**
+     * Current status of the plan (pending, completed, etc.)
+     */
+    private Progress status;
+
+    /**
+     * Identification of authority requesting target collection.
+     */
+    private Citation citation;
+
+    /**
+     * Identification of the activity or activities that satisfy a plan.
+     */
+    private Collection<Operation> operations;
+
+    /**
+     * Requirement satisfied by the plan.
+     */
+    private Collection<Requirement> satisfiedRequirements;
+
+    /**
+     * Constructs an initially empty plan.
+     */
+    public DefaultPlan() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultPlan castOrCopy(final Plan object) {
+        if (object == null || object instanceof DefaultPlan) {
+            return (DefaultPlan) object;
+        }
+        final DefaultPlan copy = new DefaultPlan();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the manner of sampling geometry that the planner expects for collection of
+     * objective data. {@code null} if unspecified.
+     */
+    @Override
+    @XmlElement(name = "type")
+    public synchronized GeometryType getType() {
+        return type;
+    }
+
+    /**
+     * Sets the manner of sampling geometry that the planner expects for collection of
+     * objective data.
+     *
+     * @param newValue The new type value.
+     */
+    public synchronized void setType(final GeometryType newValue) {
+        checkWritePermission();
+        type = newValue;
+    }
+
+    /**
+     * Returns the current status of the plan (pending, completed, etc.)
+     */
+    @Override
+    @XmlElement(name = "status", required = true)
+    public synchronized Progress getStatus() {
+        return status;
+    }
+
+    /**
+     * Sets the current status of the plan (pending, completed, etc.)
+     *
+     * @param newValue The new status value.
+     */
+    public synchronized void setStatus(final Progress newValue) {
+        checkWritePermission();
+        status = newValue;
+    }
+
+    /**
+     * Returns the identification of authority requesting target collection.
+     */
+    @Override
+    @XmlElement(name = "citation", required = true)
+    public synchronized Citation getCitation() {
+        return citation;
+    }
+
+    /**
+     * Sets the identification of authority requesting target collection.
+     *
+     * @param newValue The new citation value.
+     */
+    public synchronized void setCitation(final Citation newValue) {
+        checkWritePermission();
+        citation = newValue;
+    }
+
+    /**
+     * Returns the identification of the activity or activities that satisfy a plan.
+     */
+    @Override
+    @XmlElement(name = "operation")
+    public synchronized Collection<Operation> getOperations() {
+        return operations = nonNullCollection(operations, Operation.class);
+    }
+
+    /**
+     * Sets the identification of the activity or activities that satisfy a plan.
+     *
+     * @param newValues The new identifications of the activity.
+     */
+    public synchronized void setOperations(final Collection<? extends Operation> newValues) {
+        operations = copyCollection(newValues, operations, Operation.class);
+    }
+
+    /**
+     * Returns the requirement satisfied by the plan.
+     */
+    @Override
+    @XmlElement(name = "satisfiedRequirement")
+    public synchronized Collection<Requirement> getSatisfiedRequirements() {
+        return satisfiedRequirements = nonNullCollection(satisfiedRequirements, Requirement.class);
+    }
+
+    /**
+     * Sets the requirement satisfied by the plan.
+     *
+     * @param newValues The new satisfied requirements.
+     */
+    public synchronized void setSatisfiedRequirements(final Collection<? extends Requirement> newValues) {
+        satisfiedRequirements = copyCollection(newValues, satisfiedRequirements, Requirement.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,197 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.acquisition.Instrument;
+import org.opengis.metadata.acquisition.Platform;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.metadata.citation.ResponsibleParty;
+import org.opengis.util.InternationalString;
+import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+
+
+/**
+ * Designation of the platform used to acquire the dataset.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_Platform_Type", propOrder = {
+    "citation",
+    "identifier",
+    "description",
+    "sponsors",
+    "instruments"
+})
+@XmlRootElement(name = "MI_Platform")
+public class DefaultPlatform extends ISOMetadata implements Platform {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -6870357428019309408L;
+
+    /**
+     * Source where information about the platform is described.
+     */
+    private Citation citation;
+
+    /**
+     * Narrative description of the platform supporting the instrument.
+     */
+    private InternationalString description;
+
+    /**
+     * Organization responsible for building, launch, or operation of the platform.
+     */
+    private Collection<ResponsibleParty> sponsors;
+
+    /**
+     * Instrument(s) mounted on a platform.
+     */
+    private Collection<Instrument> instruments;
+
+    /**
+     * Constructs an initially empty platform.
+     */
+    public DefaultPlatform() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultPlatform castOrCopy(final Platform object) {
+        if (object == null || object instanceof DefaultPlatform) {
+            return (DefaultPlatform) object;
+        }
+        final DefaultPlatform copy = new DefaultPlatform();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the source where information about the platform is described. {@code null}
+     * if unspecified.
+     */
+    @Override
+    @XmlElement(name = "citation")
+    public synchronized Citation getCitation() {
+        return citation;
+    }
+
+    /**
+     * Sets the source where information about the platform is described.
+     *
+     * @param newValue The new citation value.
+     */
+    public synchronized void setCitation(final Citation newValue) {
+        checkWritePermission();
+        citation = newValue;
+    }
+
+    /**
+     * Returns the unique identification of the platform.
+     */
+    @Override
+    @XmlElement(name = "identifier", required = true)
+    public Identifier getIdentifier() {
+        return NonMarshalledAuthority.getMarshallable(identifiers);
+    }
+
+    /**
+     * Sets the unique identification of the platform.
+     *
+     * @param newValue The new identifier value.
+     */
+    public synchronized void setIdentifier(final Identifier newValue) {
+        checkWritePermission();
+        identifiers = nonNullCollection(identifiers, Identifier.class);
+        NonMarshalledAuthority.setMarshallable(identifiers, newValue);
+    }
+
+    /**
+     * Gets the narrative description of the platform supporting the instrument.
+     */
+    @Override
+    @XmlElement(name = "description", required = true)
+    public synchronized InternationalString getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the narrative description of the platform supporting the instrument.
+     *
+     * @param newValue The new description value.
+     */
+    public synchronized void setDescription(final InternationalString newValue) {
+        checkWritePermission();
+        description = newValue;
+    }
+
+    /**
+     * Returns the organization responsible for building, launch, or operation of the platform.
+     */
+    @Override
+    @XmlElement(name = "sponsor")
+    public synchronized Collection<ResponsibleParty> getSponsors() {
+        return sponsors = nonNullCollection(sponsors, ResponsibleParty.class);
+    }
+
+    /**
+     * Sets the organization responsible for building, launch, or operation of the platform.
+     *
+     * @param newValues The new sponsors values;
+     */
+    public synchronized void setSponsors(final Collection<? extends ResponsibleParty> newValues) {
+        sponsors = copyCollection(newValues, sponsors, ResponsibleParty.class);
+    }
+
+    /**
+     * Gets the instrument(s) mounted on a platform.
+     */
+    @Override
+    @XmlElement(name = "instrument", required = true)
+    public synchronized Collection<Instrument> getInstruments() {
+        return instruments = nonNullCollection(instruments, Instrument.class);
+    }
+
+    /**
+     * Sets the instrument(s) mounted on a platform.
+     *
+     * @param newValues The new instruments values.
+     */
+    public synchronized void setInstruments(final Collection<? extends Instrument> newValues) {
+        instruments = copyCollection(newValues, instruments, Instrument.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.geometry.Geometry;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.acquisition.Event;
+import org.opengis.metadata.acquisition.PlatformPass;
+import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+
+
+/**
+ * Identification of collection coverage.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_PlatformPass_Type", propOrder = {
+    "identifier",
+    "extent",
+    "relatedEvents"
+})
+@XmlRootElement(name = "MI_PlatformPass")
+public class DefaultPlatformPass extends ISOMetadata implements PlatformPass {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -1695097227120034432L;
+
+    /**
+     * Area covered by the pass.
+     */
+    private Geometry extent;
+
+    /**
+     * Occurrence of one or more events for a pass.
+     */
+    private Collection<Event> relatedEvents;
+
+    /**
+     * Constructs an initially empty platform pass.
+     */
+    public DefaultPlatformPass() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultPlatformPass castOrCopy(final PlatformPass object) {
+        if (object == null || object instanceof DefaultPlatformPass) {
+            return (DefaultPlatformPass) object;
+        }
+        final DefaultPlatformPass copy = new DefaultPlatformPass();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the unique name of the pass.
+     */
+    @Override
+    @XmlElement(name = "identifier", required = true)
+    public Identifier getIdentifier() {
+        return NonMarshalledAuthority.getMarshallable(identifiers);
+    }
+
+    /**
+     * Sets the unique name of the pass.
+     *
+     * @param newValue The new identifier value.
+     */
+    public synchronized void setIdentifier(final Identifier newValue) {
+        checkWritePermission();
+        identifiers = nonNullCollection(identifiers, Identifier.class);
+        NonMarshalledAuthority.setMarshallable(identifiers, newValue);
+    }
+
+    /**
+     * Returns the area covered by the pass. {@code null} if unspecified.
+     *
+     * @todo annotate an implementation of {@link Geometry} in order to annotate this method.
+     */
+    @Override
+    @XmlElement(name = "extent")
+    public synchronized Geometry getExtent() {
+        return extent;
+    }
+
+    /**
+     * Sets the area covered by the pass.
+     *
+     * @param newValue The new extent value.
+     */
+    public synchronized void setExtent(final Geometry newValue) {
+        checkWritePermission();
+        extent = newValue;
+    }
+
+    /**
+     * Returns the occurrence of one or more events for a pass.
+     */
+    @Override
+    @XmlElement(name = "relatedEvent")
+    public synchronized Collection<Event> getRelatedEvents() {
+        return relatedEvents = nonNullCollection(relatedEvents, Event.class);
+    }
+
+    /**
+     * Sets the occurrence of one or more events for a pass.
+     *
+     * @param newValues The new related events values.
+     */
+    public synchronized void setRelatedEvents(final Collection<? extends Event> newValues) {
+        relatedEvents = copyCollection(newValues, relatedEvents, Event.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java?rev=1459713&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java [UTF-8] Fri Mar 22 11:10:43 2013
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sis.metadata.iso.acquisition;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.acquisition.RequestedDate;
+import org.apache.sis.metadata.iso.ISOMetadata;
+
+
+/**
+ * Range of date validity.
+ *
+ * @author  Cédric Briançon (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.3 (derived from geotk-3.03)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MI_RequestedDate_Type", propOrder = {
+    "requestedDateOfCollection",
+    "latestAcceptableDate"
+})
+@XmlRootElement(name = "MI_RequestedDate")
+public class DefaultRequestedDate extends ISOMetadata implements RequestedDate {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -8884795189934200802L;
+
+    /**
+     * Preferred date and time of collection,
+     * or {@link Long#MIN_VALUE} if none.
+     */
+    private long requestedDateOfCollection;
+
+    /**
+     * Latest date and time collection must be completed,
+     * or {@link Long#MIN_VALUE} if none.
+     */
+    private long latestAcceptableDate;
+
+    /**
+     * Constructs an initially empty requested date.
+     */
+    public DefaultRequestedDate() {
+        requestedDateOfCollection = Long.MIN_VALUE;
+        latestAcceptableDate = Long.MIN_VALUE;
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultRequestedDate castOrCopy(final RequestedDate object) {
+        if (object == null || object instanceof DefaultRequestedDate) {
+            return (DefaultRequestedDate) object;
+        }
+        final DefaultRequestedDate copy = new DefaultRequestedDate();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the preferred date and time of collection.
+     */
+    @Override
+    @XmlElement(name = "requestedDateOfCollection", required = true)
+    public synchronized Date getRequestedDateOfCollection() {
+        final long date = this.requestedDateOfCollection;
+        return (date != Long.MIN_VALUE) ? new Date(date) : null;
+    }
+
+    /**
+     * Sets the preferred date and time of collection.
+     *
+     * @param newValue The new requested date of collection value.
+     */
+    public synchronized void setRequestedDateOfCollection(final Date newValue) {
+        checkWritePermission();
+        requestedDateOfCollection = (newValue != null) ? newValue.getTime() : Long.MIN_VALUE;
+    }
+
+    /**
+     * Returns the latest date and time collection must be completed.
+     */
+    @Override
+    @XmlElement(name = "latestAcceptableDate", required = true)
+    public synchronized Date getLatestAcceptableDate() {
+        final long date = this.latestAcceptableDate;
+        return (date != Long.MIN_VALUE) ? new Date(date) : null;
+    }
+
+    /**
+     * Sets the latest date and time collection must be completed.
+     *
+     * @param newValue The new latest acceptable data value.
+     */
+    public synchronized void setLatestAcceptableDate(final Date newValue) {
+        checkWritePermission();
+        latestAcceptableDate = (newValue != null) ? newValue.getTime() : Long.MIN_VALUE;
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8



Mime
View raw message