[ 
https://issues.apache.org/jira/browse/SIS-463?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Desruisseaux updated SIS-463:
------------------------------------
    Affects Version/s:     (was: 1.0)
                       0.8
        Fix Version/s:     (was: 1.1)
                       1.0

> Move WKT support from sis-metadata to sis-referencing
> -----------------------------------------------------
>
>                 Key: SIS-463
>                 URL: https://issues.apache.org/jira/browse/SIS-463
>             Project: Spatial Information Systems
>          Issue Type: Task
>          Components: Metadata, Referencing
>    Affects Versions: 0.8
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>            Priority: Minor
>             Fix For: 1.0
>
>
> The {{org.apache.sis.io.wkt}} package is currently located in the 
> {{sis-metadata}} module. However the WKT parser/formatter is close to useless 
> without {{sis-referencing}} module because the only objects currently parsed 
> or formatted are in that module. This is illustrated by the fact that only 
> basic tests are defined in {{sis-metadata}} and more "real situation" tests 
> are in {{sis-referencing}}. Even if a future version is generalized to 
> parsing/formatting of geometry objects, a geometry module would probably need 
> {{sis-referencing}}.
> We should move {{org.apache.sis.io.wkt}} package into the {{sis-referencing}} 
> module. It would bring many simplifications, like a single place for all 
> tests.
> h2. Post-migration cleanups
> After this move has been done, we should apply the following cleanups:
> Add the following case at the end of {{appendElement(Object)}} method:
> {code:java}
> } else if (value instanceof Position) {
>     append(AbstractDirectPosition.castOrCopy(((Position) 
> value).getDirectPosition()));
> } else if (value instanceof Envelope) {
>     append(AbstractEnvelope.castOrCopy((Envelope) value));          // 
> Non-standard
> {code}
> Retrofit {{org.apache.sis.util.internal.Citations}} into 
> {{org.apache.sis.metadata.iso.citation.Citations}}, which will allow us to 
> add the following code in {{Citations.identifierMatches}}:
> {code:java}
> if (c1 == c2) {
>     return true;                            // Optimization for a common case.
> }
> /*
>  * If both argument are one of the constants defined in the Citations class,
>  * then we do not need to compare identifier; call to `equals` is sufficient.
>  * This special case avoids the potentially costly call to `getIdentifiers()`
>  * since that call may cause a connection to the spatial metadata database.
>  */
> if (c1 instanceof CitationConstant && c2 instanceof CitationConstant) {
>     return c1.equals(c2);
> }
> {code}
> Other cleanups:
> * Move {{EllipsoidalHeightCombiner}}, which will allow us to leverage 
> {{ReferencingFactoryContainer}} instead than duplicating its work.
> * Leverage {{ReferencingFactoryContainer}} dans {{MathTransforParser}} too.
> * Move {{WKTKeywords}}.
> h2. Requirement
> The only dependency in {{sis-metadata}} is {{ImmutableIdentifier}}. May may 
> need to move that class into {{sis-referencing}}, maybe in 
> {{org.apache.sis.referencing}} package. That would need a "deprecate now 
> delete later" cycle, which is why the {{sis.apache.sis.io.wkt}} migration can 
> not be done in Apache SIS 1.0 release.
> h2. Execution
> Commands to run on the command-line are below. It may be easier to execute 
> those commands in each branches instead than only one branch and resolve 
> merge conflicts (to be verified).
> {code:bash}
> git mv core/sis-metadata/src/test/java/org/apache/sis/io/wkt/*.java 
> core/sis-referencing/src/test/java/org/apache/sis/io/wkt/
> git rm -r core/sis-metadata/src/test/java/org/apache/sis/io
> mkdir core/sis-referencing/src/main/java/org/apache/sis/io
> git mv core/sis-metadata/src/main/java/org/apache/sis/io/wkt 
> core/sis-referencing/src/main/java/org/apache/sis/io/
> rmdir core/sis-metadata/src/main/java/org/apache/sis/io
> mkdir core/sis-referencing/src/main/java/org/apache/sis/metadata
> mkdir core/sis-referencing/src/main/java/org/apache/sis/metadata/iso
> mkdir core/sis-referencing/src/test/java/org/apache/sis/metadata
> mkdir core/sis-referencing/src/test/java/org/apache/sis/metadata/iso
> git mv 
> core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
>  
> core/sis-referencing/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
> {code}
> Some files need to be modified after the move (e.g. {{MetadataTestSuite}}, 
> _etc_).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to