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

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


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new 4e00076bb8 Copy the title of the first component in the main metadata.
4e00076bb8 is described below

commit 4e00076bb871e44147693efe8e0ee55fd172053e
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Mon Dec 11 19:25:47 2023 +0100

    Copy the title of the first component in the main metadata.
---
 .../apache/sis/storage/base/MetadataBuilder.java   | 57 +++++++++++++++-------
 1 file changed, 40 insertions(+), 17 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
index e0799a4824..2ffaaa2e51 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
@@ -242,6 +242,7 @@ public class MetadataBuilder {
      * Returns the information about the series, or aggregate dataset, of 
which the dataset is a part.
      */
     private DefaultSeries series() {
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
         final DefaultCitation citation = citation();
         DefaultSeries series = DefaultSeries.castOrCopy(citation.getSeries());
         if (series == null) {
@@ -1193,6 +1194,7 @@ public class MetadataBuilder {
     public final void addTitle(final CharSequence title) {
         final InternationalString i18n = trim(title);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultCitation citation = citation();
             final InternationalString current = citation.getTitle();
             if (current == null) {
@@ -1247,6 +1249,7 @@ public class MetadataBuilder {
     public final void addEdition(final CharSequence version) {
         final InternationalString i18n = trim(version);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultCitation citation = citation();
             citation.setEdition(append(citation.getEdition(), i18n));
         }
@@ -1323,6 +1326,7 @@ public class MetadataBuilder {
     public final void addAbstract(final CharSequence description) {
         final InternationalString i18n = trim(description);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultDataIdentification identification = identification();
             identification.setAbstract(append(identification.getAbstract(), 
i18n));
         }
@@ -1344,6 +1348,7 @@ public class MetadataBuilder {
     public final void addPurpose(final CharSequence intention) {
         final InternationalString i18n = trim(intention);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultDataIdentification identification = identification();
             identification.setPurpose(append(identification.getPurpose(), 
i18n));
         }
@@ -1380,6 +1385,7 @@ public class MetadataBuilder {
     public final void addSupplementalInformation(final CharSequence info) {
         final InternationalString i18n = trim(info);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultDataIdentification identification = identification();
             
identification.setSupplementalInformation(append(identification.getSupplementalInformation(),
 i18n));
         }
@@ -2081,14 +2087,14 @@ parse:      for (int i = 0; i < length;) {
                 addReferenceSystem(crs);
             }
             if (grid.isDefined(GridGeometry.EXTENT)) {
-                final GridExtent extent = grid.getExtent();
-                final int dimension = extent.getDimension();
+                final GridExtent gex = grid.getExtent();
+                final int dimension = gex.getDimension();
                 for (int i=0; i<dimension; i++) {
-                    final Optional<DimensionNameType> axisType = 
extent.getAxisType(i);
+                    final Optional<DimensionNameType> axisType = 
gex.getAxisType(i);
                     if (axisType.isPresent()) {
                         setAxisName(i, axisType.get());
                     }
-                    setAxisSize(i, extent.getSize(i));
+                    setAxisSize(i, gex.getSize(i));
                 }
             }
             if (addResolution && grid.isDefined(GridGeometry.RESOLUTION)) {
@@ -2163,6 +2169,7 @@ parse:      for (int i = 0; i < length;) {
      */
     public final void setPointInPixel(final PixelOrientation value) {
         if (value != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultGridSpatialRepresentation gridRepresentation = 
gridRepresentation();
             if (gridRepresentation instanceof DefaultGeorectified) {
                 ((DefaultGeorectified) 
gridRepresentation).setPointInPixel(value);
@@ -2194,6 +2201,7 @@ parse:      for (int i = 0; i < length;) {
                                                     final boolean 
controlPointAvailability,
                                                     final boolean 
orientationParameterAvailability)
     {
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
         final DefaultGridSpatialRepresentation gridRepresentation = 
gridRepresentation();
         
gridRepresentation.setTransformationParameterAvailable(transformationParameterAvailability);
         if (gridRepresentation instanceof DefaultGeorectified) {
@@ -2216,6 +2224,7 @@ parse:      for (int i = 0; i < length;) {
      */
     public final void addGeolocation(final GeolocationInformation info) {
         if (info != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultGridSpatialRepresentation gridRepresentation = 
gridRepresentation();
             if (gridRepresentation instanceof DefaultGeoreferenceable) {
                 addIfNotPresent(((DefaultGeoreferenceable) 
gridRepresentation).getGeolocationInformation(), info);
@@ -2240,6 +2249,7 @@ parse:      for (int i = 0; i < length;) {
      */
     public final void addControlPoints(final DirectPosition 
geographicCoordinates, final Element accuracyReport) {
         if (geographicCoordinates != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultGridSpatialRepresentation gridRepresentation = 
gridRepresentation();
             final Collection<GCP> points;
             if (gridRepresentation instanceof DefaultGeorectified) {
@@ -2479,6 +2489,7 @@ parse:      for (int i = 0; i < length;) {
     public final void addBandDescription(final CharSequence description) {
         final InternationalString i18n = trim(description);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultSampleDimension sampleDimension = sampleDimension();
             
sampleDimension.setDescription(append(sampleDimension.getDescription(), i18n));
         }
@@ -2525,6 +2536,7 @@ parse:      for (int i = 0; i < length;) {
      */
     public final void addMinimumSampleValue(final double value) {
         if (!Double.isNaN(value)) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultSampleDimension sampleDimension = sampleDimension();
             final Double current = sampleDimension.getMinValue();
             if (current == null || value < current) {
@@ -2550,6 +2562,7 @@ parse:      for (int i = 0; i < length;) {
      */
     public final void addMaximumSampleValue(final double value) {
         if (!Double.isNaN(value)) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultSampleDimension sampleDimension = sampleDimension();
             final Double current = sampleDimension.getMaxValue();
             if (current == null || value > current) {
@@ -2872,6 +2885,7 @@ parse:      for (int i = 0; i < length;) {
     public final void addLineage(final CharSequence statement) {
         final InternationalString i18n = trim(statement);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultLineage lineage = lineage();
             lineage.setStatement(append(lineage.getStatement(), i18n));
         }
@@ -3116,14 +3130,15 @@ parse:      for (int i = 0; i < length;) {
     public final void addFormatName(final CharSequence value) {
         final InternationalString i18n = trim(value);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultFormat format = format();
-            DefaultCitation citation = 
DefaultCitation.castOrCopy(format.getFormatSpecificationCitation());
-            if (citation == null) {
-                citation = new DefaultCitation(i18n);
+            DefaultCitation c = 
DefaultCitation.castOrCopy(format.getFormatSpecificationCitation());
+            if (c == null) {
+                c = new DefaultCitation(i18n);
             } else {
-                addIfNotPresent(citation.getAlternateTitles(), i18n);
+                addIfNotPresent(c.getAlternateTitles(), i18n);
             }
-            format.setFormatSpecificationCitation(citation);
+            format.setFormatSpecificationCitation(c);
         }
     }
 
@@ -3145,13 +3160,14 @@ parse:      for (int i = 0; i < length;) {
     public final void setFormatEdition(final CharSequence value) {
         final InternationalString i18n = trim(value);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultFormat format = format();
-            DefaultCitation citation = 
DefaultCitation.castOrCopy(format.getFormatSpecificationCitation());
-            if (citation == null) {
-                citation = new DefaultCitation();
-                format.setFormatSpecificationCitation(citation);
+            DefaultCitation c = 
DefaultCitation.castOrCopy(format.getFormatSpecificationCitation());
+            if (c == null) {
+                c = new DefaultCitation();
+                format.setFormatSpecificationCitation(c);
             }
-            citation.setEdition(i18n);
+            c.setEdition(i18n);
         }
     }
 
@@ -3174,6 +3190,7 @@ parse:      for (int i = 0; i < length;) {
     public final void addCompression(final CharSequence value) {
         final InternationalString i18n = trim(value);
         if (i18n != null) {
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultFormat format = format();
             
format.setFileDecompressionTechnique(append(format.getFileDecompressionTechnique(),
 i18n));
         }
@@ -3220,7 +3237,7 @@ parse:      for (int i = 0; i < length;) {
      * Aggregate metadata should be set before to invoke this method, in 
particular:
      *
      * <ul>
-     *   <li>The aggregated resource {@linkplain #addTitle title}.</li>
+     *   <li>The aggregated resource {@linkplain #addTitle(CharSequence) 
title}.</li>
      *   <li>The {@linkplain #addFormatName format} (may not be the same than 
component format).</li>
      * </ul>
      *
@@ -3234,7 +3251,7 @@ parse:      for (int i = 0; i < length;) {
      *   <li>All Coordinate Reference System information are added without 
duplicated values.</li>
      *   <li>Some citation information are merged in a single citation.
      *       The following information are ignored because considered too 
specific to the component:<ul>
-     *         <li>titles</li>
+     *         <li>titles (except if no title has been set, in which case the 
first title is used)</li>
      *         <li>identifiers</li>
      *         <li>series (includes page numbers).</li>
      *       </ul></li>
@@ -3261,8 +3278,12 @@ parse:      for (int i = 0; i < length;) {
         for (final Identification info : component.getIdentificationInfo()) {
             final Citation c = info.getCitation();
             if (c != null) {
-                // Title, identifiers and series are assumed to not apply (see 
Javadoc).
+                // Title (except first one), identifiers and series are 
assumed to not apply (see Javadoc).
+                @SuppressWarnings("LocalVariableHidesMemberVariable")
                 final DefaultCitation citation = citation();
+                if (citation.getTitle() == null) {
+                    citation.setTitle(c.getTitle());
+                }
                 for (Responsibility r : c.getCitedResponsibleParties()) {
                     addIfNotPresent(citation.getCitedResponsibleParties(), r);
                 }
@@ -3271,6 +3292,7 @@ parse:      for (int i = 0; i < length;) {
                 }
                 
citation.getPresentationForms().addAll(c.getPresentationForms());
             }
+            @SuppressWarnings("LocalVariableHidesMemberVariable")
             final DefaultDataIdentification identification = identification();
             for (Extent e : info.getExtents()) {
                 addIfNotPresent(identification.getExtents(), e);
@@ -3291,6 +3313,7 @@ parse:      for (int i = 0; i < length;) {
             
identification.getTopicCategories().addAll(info.getTopicCategories());
             
identification.getSpatialRepresentationTypes().addAll(info.getSpatialRepresentationTypes());
         }
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
         final DefaultMetadata metadata = metadata();
         for (ContentInformation info : component.getContentInfo()) {
             addIfNotPresent(metadata.getContentInfo(), info);

Reply via email to