This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 5458f8dedf49decfbb3dededf27d71b6c4c62719
Merge: 269d8e9759 8924c14a5c
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Fri May 31 23:26:53 2024 +0200

    Merge branch 'geoapi-4.0' into geoapi-3.1.
    The main work is a generalization from `Instant` to `Temporal`.

 .../org/apache/sis/filter/ComparisonFilter.java    |   4 +
 .../apache/sis/filter/DefaultFilterFactory.java    |  68 +-
 .../main/org/apache/sis/filter/TemporalFilter.java | 811 ++++-----------------
 .../org/apache/sis/filter/TemporalOperation.java   | 762 +++++++++++++++++++
 .../main/org/apache/sis/filter/TimeMethods.java    | 396 ++++++++++
 .../org/apache/sis/filter/TemporalFilterTest.java  |  23 +-
 .../org.apache.sis.metadata/main/module-info.java  |   1 +
 .../sis/metadata/iso/acquisition/DefaultEvent.java |   9 +-
 .../iso/acquisition/DefaultRequestedDate.java      |  36 +-
 .../iso/acquisition/DefaultRequirement.java        |  23 +-
 .../sis/metadata/iso/citation/DefaultCitation.java |  24 +-
 .../metadata/iso/citation/DefaultCitationDate.java |  11 +-
 .../distribution/DefaultStandardOrderProcess.java  |  20 +-
 .../metadata/iso/extent/DefaultTemporalExtent.java |  40 +-
 .../apache/sis/metadata/iso/extent/Extents.java    |  96 ++-
 .../metadata/iso/identification/DefaultUsage.java  |  23 +-
 .../sis/metadata/privy/ImplementationHelper.java   |  23 -
 .../apache/sis/pending/temporal/DefaultPeriod.java |  16 +-
 .../sis/pending/temporal/TemporalUtilities.java    |  39 +-
 .../org/apache/sis/xml/bind/gco/GO_DateTime.java   |   3 +-
 .../org/apache/sis/xml/bind/gml/TM_Primitive.java  |  43 +-
 .../apache/sis/xml/bind/gml/TemporalAdapter.java   |   4 +-
 .../org/apache/sis/xml/bind/gml/TimeInstant.java   |  20 +-
 .../apache/sis/xml/bind/gml/TimePeriodBound.java   |   6 +-
 .../org/apache/sis/xml/privy/XmlUtilities.java     |  52 +-
 .../sis/metadata/iso/extent/DefaultExtentTest.java |  15 +-
 .../metadata/privy/ImplementationHelperTest.java   |  19 -
 .../org/apache/sis/metadata/xml/2007/Extent.xml    |   2 -
 .../org/apache/sis/metadata/xml/2016/Extent.xml    |   2 -
 .../apache/sis/xml/bind/gml/TimePeriodTest.java    |  19 +-
 .../org/apache/sis/xml/privy/XmlUtilitiesTest.java |  12 +-
 .../test/org/apache/sis/xml/test/TestCase.java     |  33 -
 .../sis/referencing/gazetteer/LocationFormat.java  |   7 +-
 .../main/org/apache/sis/io/wkt/Formatter.java      |  12 +-
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |   3 +-
 .../sis/referencing/datum/AbstractDatum.java       |   3 +-
 .../referencing/datum/DefaultGeodeticDatum.java    |   4 +-
 .../referencing/datum/DefaultTemporalDatum.java    |   4 +-
 .../org/apache/sis/referencing/internal/Epoch.java |   6 +-
 .../sis/referencing/privy/ExtentSelector.java      | 101 +--
 .../referencing/AbstractReferenceSystemTest.java   |   9 +-
 .../datum/DefaultGeodeticDatumTest.java            |   3 +-
 .../sis/referencing/privy/ExtentSelectorTest.java  |   5 +-
 .../apache/sis/test/integration/MetadataTest.java  |  29 +-
 .../sis/test/integration/MetadataVerticalTest.java |  10 +-
 .../storage/geotiff/reader/XMLMetadataTest.java    |   2 +-
 .../apache/sis/storage/base/MetadataBuilder.java   |   3 +-
 .../main/org/apache/sis/util/Classes.java          |  20 +-
 .../org/apache/sis/util/privy/TemporalDate.java    | 113 ++-
 .../main/org/apache/sis/util/resources/Errors.java |   5 +
 .../apache/sis/util/resources/Errors.properties    |   1 +
 .../apache/sis/util/resources/Errors_fr.properties |   1 +
 .../org/apache/sis/measure/RangeFormatTest.java    |   8 +-
 .../test/org/apache/sis/test/TestUtilities.java    |   4 +-
 geoapi/snapshot                                    |   2 +-
 .../sis/gui/metadata/IdentificationInfo.java       |   9 +-
 56 files changed, 1856 insertions(+), 1163 deletions(-)

diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
index 7436c358fc,7e90408e3a..076ee96070
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
@@@ -28,11 -29,10 +29,10 @@@ import org.opengis.metadata.acquisition
  import org.opengis.metadata.acquisition.Requirement;
  import org.opengis.metadata.citation.Citation;
  import org.apache.sis.metadata.iso.ISOMetadata;
- import static org.apache.sis.metadata.privy.ImplementationHelper.toDate;
- import static 
org.apache.sis.metadata.privy.ImplementationHelper.toMilliseconds;
+ import org.apache.sis.util.privy.TemporalDate;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
  
  
  /**
@@@ -146,11 -147,11 +147,11 @@@ public class DefaultRequirement extend
          if (object != null) {
              citation       = object.getCitation();
              identifiers    = singleton(object.getIdentifier(), 
Identifier.class);
 -            requestors     = copyCollection(object.getRequestors(), 
Responsibility.class);
 -            recipients     = copyCollection(object.getRecipients(), 
Responsibility.class);
 +            requestors     = copyCollection(object.getRequestors(), 
ResponsibleParty.class);
 +            recipients     = copyCollection(object.getRecipients(), 
ResponsibleParty.class);
              priority       = object.getPriority();
              requestedDate  = object.getRequestedDate();
-             expiryDate     = toMilliseconds(object.getExpiryDate());
+             expiryDate     = TemporalDate.toTemporal(object.getExpiryDate());
              satisfiedPlans = copyCollection(object.getSatisfiedPlans(), 
Plan.class);
          }
      }
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitation.java
index 4ed38a35e0,e1ee3f2c1b..90204b685a
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitation.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitation.java
@@@ -38,11 -40,9 +40,9 @@@ import org.apache.sis.util.privy.Tempor
  import org.apache.sis.metadata.TitleProperty;
  import org.apache.sis.metadata.iso.ISOMetadata;
  import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
- import static org.apache.sis.metadata.privy.ImplementationHelper.toDate;
- import static 
org.apache.sis.metadata.privy.ImplementationHelper.toMilliseconds;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
  
  
  /**
@@@ -214,12 -214,12 +214,12 @@@ public class DefaultCitation extends IS
              alternateTitles         = 
copyCollection(object.getAlternateTitles(), InternationalString.class);
              dates                   = copyCollection(object.getDates(), 
CitationDate.class);
              edition                 = object.getEdition();
-             editionDate             = toMilliseconds(object.getEditionDate());
+             editionDate             = 
TemporalDate.toTemporal(object.getEditionDate());
              identifiers             = copyCollection(object.getIdentifiers(), 
Identifier.class);
 -            citedResponsibleParties = 
copyCollection(object.getCitedResponsibleParties(), Responsibility.class);
 +            citedResponsibleParties = 
copyCollection(object.getCitedResponsibleParties(), ResponsibleParty.class);
              presentationForms       = 
copyCollection(object.getPresentationForms(), PresentationForm.class);
              series                  = object.getSeries();
 -            otherCitationDetails    = 
copyCollection(object.getOtherCitationDetails(), InternationalString.class);
 +            otherCitationDetails    = object.getOtherCitationDetails();
              collectiveTitle         = object.getCollectiveTitle();
              onlineResources         = 
copyCollection(object.getOnlineResources(), OnlineResource.class);
              graphics                = copyCollection(object.getGraphics(), 
BrowseGraphic.class);
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
index 1ecbfbe78f,e0ba370734..fa65552a55
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
@@@ -28,11 -29,10 +29,10 @@@ import org.apache.sis.xml.bind.FilterBy
  import org.apache.sis.metadata.TitleProperty;
  import org.apache.sis.metadata.iso.ISOMetadata;
  import org.apache.sis.util.iso.Types;
- import static org.apache.sis.metadata.privy.ImplementationHelper.toDate;
- import static 
org.apache.sis.metadata.privy.ImplementationHelper.toMilliseconds;
+ import org.apache.sis.util.privy.TemporalDate;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
  
  
  /**
@@@ -138,11 -137,12 +137,12 @@@ public class DefaultUsage extends ISOMe
       * @param specificUsage    brief description of the resource and/or 
resource series usage, or {@code null} if none.
       * @param userContactInfo  means of communicating with person(s) and 
organization(s), or {@code null} if none.
       */
+     @SuppressWarnings("this-escape")
      public DefaultUsage(final CharSequence specificUsage,
 -                        final Responsibility userContactInfo)
 +                        final ResponsibleParty userContactInfo)
      {
          this.specificUsage   = Types.toInternationalString(specificUsage);
 -        this.userContactInfo = singleton(userContactInfo, 
Responsibility.class);
 +        this.userContactInfo = singleton(userContactInfo, 
ResponsibleParty.class);
      }
  
      /**
@@@ -158,9 -159,9 +159,9 @@@
          super(object);
          if (object != null) {
              specificUsage             = object.getSpecificUsage();
-             usageDate                 = toMilliseconds(object.getUsageDate());
+             usageDate                 = 
TemporalDate.toTemporal(object.getUsageDate());
              userDeterminedLimitations = object.getUserDeterminedLimitations();
 -            userContactInfo           = 
copyCollection(object.getUserContactInfo(), Responsibility.class);
 +            userContactInfo           = 
copyCollection(object.getUserContactInfo(), ResponsibleParty.class);
              responses                 = copyCollection(object.getResponses(), 
InternationalString.class);
              additionalDocumentation   = 
copyCollection(object.getAdditionalDocumentation(), Citation.class);
              identifiedIssues          = 
copyCollection(object.getIdentifiedIssues(), Citation.class);
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
index ee28767f7e,eaea0521a1..ed1c54c3d0
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
@@@ -35,6 -35,6 +35,7 @@@ import org.apache.sis.referencing.Ident
  import org.apache.sis.util.CharSequences;
  import org.apache.sis.util.ComparisonMode;
  import org.apache.sis.util.iso.Types;
++import org.apache.sis.util.privy.TemporalDate;
  import org.apache.sis.metadata.privy.Identifiers;
  import org.apache.sis.metadata.privy.NameToIdentifier;
  import org.apache.sis.metadata.privy.ImplementationHelper;
diff --cc 
endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/TemporalDate.java
index ed081ca8c3,495237bbb7..7639fd229c
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/TemporalDate.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/TemporalDate.java
@@@ -111,20 -103,25 +103,36 @@@ public final class TemporalDate extend
       * @return the given date as a temporal object, or {@code null} if the 
given argument was null.
       */
      public static Temporal toTemporal(final Date time) {
-         return (time == null) ? null : (time instanceof TemporalDate) ? 
((TemporalDate) time).temporal : time.toInstant();
+         if (time == null) {
+             return null;
+         }
+         if (time instanceof TemporalDate) {
+             return ((TemporalDate) time).temporal;
+         }
+         try {
+             return time.toInstant();
+         } catch (UnsupportedOperationException e) {
+             if (time instanceof java.sql.Date) {
+                 return LocalDate.ofEpochDay(time.getTime() / 
Constants.MILLISECONDS_PER_DAY);
+             }
+             if (time instanceof java.sql.Time) {
+                 return LocalTime.ofSecondOfDay(time.getTime());
+             }
+             throw e;
+         }
      }
  
 +    /**
 +     * Returns the given date as an instant object.
 +     * Used for interoperability in situations where old and new Java API are 
mixed.
 +     *
 +     * @param  time  the date to return as an instant object, or {@code null}.
 +     * @return the given date as an instant object, or {@code null} if the 
given argument was null.
 +     */
 +    public static Instant toInstant(final Date time) {
 +        return (time == null) ? null : time.toInstant();
 +    }
 +
      /**
       * Converts the given temporal object into an instant.
       * If the timezone is unspecified, then UTC is assumed.
diff --cc geoapi/snapshot
index ed7e9f0463,dd12a26da8..a00e026538
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit ed7e9f0463a9b5eb0f9181da5ca070d0b79375ac
 -Subproject commit dd12a26da8121f0af6d324e33195912f21e16969
++Subproject commit a00e026538b2704db1ec82cbad64fef1bef992c0

Reply via email to