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
