You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2024/06/01 10:54:50 UTC
(sis) 01/02: Merge branch 'geoapi-4.0' into geoapi-3.1. The main work is a generalization from `Instant` to `Temporal`.
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 <ma...@geomatys.com>
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