sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1575078 [1/2] - in /sis/ip-review: ./ rev/07846/ rev/07857/ rev/10796/ rev/20874/ rev/24973/
Date Thu, 06 Mar 2014 22:40:57 GMT
Author: desruisseaux
Date: Thu Mar  6 22:40:57 2014
New Revision: 1575078

URL: http://svn.apache.org/r1575078
Log:
IP review for ParameterDescriptorGroup and ParameterValueGroup.

Added:
    sis/ip-review/DefaultParameterDescriptorGroup.xhtml   (with props)
    sis/ip-review/DefaultParameterValueGroup.xhtml   (with props)
    sis/ip-review/ParameterValueList.xhtml   (with props)
    sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml   (with props)
    sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml   (with props)
    sis/ip-review/rev/10796/DefaultParameterDescriptorGroup.xhtml   (with props)
    sis/ip-review/rev/10796/DefaultParameterValueGroup.xhtml   (with props)
    sis/ip-review/rev/10796/ParameterValueList.xhtml   (with props)
    sis/ip-review/rev/20874/DefaultParameterDescriptorGroup.xhtml   (with props)
    sis/ip-review/rev/20874/DefaultParameterValueGroup.xhtml   (with props)
    sis/ip-review/rev/20874/ParameterValueList.xhtml   (with props)
    sis/ip-review/rev/24973/DefaultParameterDescriptorGroup.xhtml   (with props)

Added: sis/ip-review/DefaultParameterDescriptorGroup.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/DefaultParameterDescriptorGroup.xhtml?rev=1575078&view=auto
==============================================================================
--- sis/ip-review/DefaultParameterDescriptorGroup.xhtml (added)
+++ sis/ip-review/DefaultParameterDescriptorGroup.xhtml Thu Mar  6 22:40:57 2014
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>DefaultParameterDescriptorGroup history</title>
+    <style type="text/css" media="all">
+      @import url("./reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>DefaultParameterDescriptorGroup history</h1>
+  <p>Click on the commit message for inspecting the <code>diff</code> and how the code has been rewritten.</p>
+<p><b>Command line:</b></p>
+<blockquote><code>svn log -r31996:1 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/parameter/DefaultParameterDescriptorGroup.java</code></blockquote>
+<table>
+  <tr>
+    <th>Rev.</th>
+    <th>Date</th>
+    <th>Author</th>
+    <th class="last">Message</th>
+  </tr>
+<tr><td class="rev">30641</td><td>2008-06-12</td><td>acuster</td><td>Copyright headers: lib/referencing, this time with feeling (and the el in Toolkit)</td></tr>
+<tr><td class="rev">30521</td><td>2008-06-05</td><td>acuster</td><td>Copyright: Update referencing headers</td></tr>
+<tr><td class="rev">30258</td><td>2008-05-08</td><td>acuster</td><td>Reshuffle the top level repo: drop uDig, move up trunk, tags, and branches.</td></tr>
+<tr><td class="rev">30257</td><td>2008-05-08</td><td>acuster</td><td>Move trunk/gt/ directory contents up to trunk/ and drop gt</td></tr>
+<tr><td class="rev">29753</td><td>2008-04-01</td><td>desruisseaux</td><td>Applied parameterized types as a side-effect of hunting for a DimensionMismatchException during reprojection.</td></tr>
+<tr><td class="rev">28922</td><td>2008-01-24</td><td>acuster</td><td>Bump the (at)since version to 2.5 since WKTParser was cut from 2.4</td></tr>
+<tr><td class="rev">28540</td><td>2007-12-29</td><td>acuster</td><td>Hide buttons which are not yet used</td></tr>
+<tr><td class="rev">28267</td><td>2007-12-06</td><td>desruisseaux</td><td>GeoTools trunk now build against GeoAPI 2.2-SNAPSHOT.</td></tr>
+<tr><td class="rev">28069</td><td>2007-11-27</td><td>desruisseaux</td><td>Java 5 generics in org.geotools.image.io, and partially in org.geotools.parameters.</td></tr>
+<tr><td class="rev">27575</td><td>2007-10-22</td><td>desruisseaux</td><td>Converted Java source files from ISO-LATIN-1 encoding to UTF-8 (GEOT-1516).</td></tr>
+<tr><td class="rev">25262</td><td>2007-04-23</td><td>desruisseaux</td><td>Finished review of metadata and factory hints change. Fixed a potential glitch in parameter names handling (some code were disabled in AbstractIdentifiedObject apparently in order to avoid a ClassCastException caused by the spit of org.opengis.metadata.Identifier in two interfaces, Identifier and ReferenceIdentifier. Fixed the exception and reenabled the code). Not sure yet what the consequence was. It may help for the stereographic projection issue, but need to check.</td></tr>
+<tr><td class="rev">24973</td><td>2007-03-30</td><td class="unav">chorner</td><td><a href="rev/24973/DefaultParameterDescriptorGroup.xhtml">GEO-93: GeoTools/GeoAPI ISO 19115 Metadata synchronization</a></td></tr>
+<tr><td class="rev">22327</td><td>2006-10-23</td><td>desruisseaux</td><td>GEOT-982: regroup 'module', 'plugin', 'ext' and 'unsupported' in a common directory.</td></tr>
+<tr><td class="rev">22315</td><td>2006-10-22</td><td>desruisseaux</td><td>Reorganisation of directory tree structure (GEOT-982) phase 1: moved 'src' to 'src/main/java'.</td></tr>
+<tr><td class="rev">20874</td><td>2006-08-07</td><td class="unav">jgarnett</td><td><a href="rev/20874/DefaultParameterDescriptorGroup.xhtml">ip review</a></td></tr>
+<tr><td class="rev">17672</td><td>2006-01-19</td><td>desruisseaux</td><td>Added @source tag.</td></tr>
+<tr><td class="rev">17660</td><td>2006-01-18</td><td>desruisseaux</td><td>Fixed SVN attributes, including the addition of URL attribute.</td></tr>
+<tr><td class="rev">17229</td><td>2005-12-08</td><td>desruisseaux</td><td>Refactored New Zealand Map Grid (NZMG) projection as a subclass of MapProjection.</td></tr>
+<tr><td class="rev">16983</td><td>2005-11-25</td><td>desruisseaux</td><td>Replaced references to static fields and methods of CitationImpl.* by Citations.*</td></tr>
+<tr><td class="rev">16205</td><td>2005-10-11</td><td>desruisseaux</td><td>Cleaned javadoc warning. More work done on Maven 2 configuration (GEOT-691)</td></tr>
+<tr><td class="rev">15350</td><td>2005-08-16</td><td>desruisseaux</td><td>Merged the 'split-main' branch to trunk (GEOT-662)</td></tr>
+<tr><td class="rev">15256</td><td>2005-08-09</td><td>desruisseaux</td><td>Extraction of referencing module from main</td></tr>
+<tr><td class="rev">15255</td><td>2005-08-09</td><td>desruisseaux</td><td>Prepare branch for splitting main</td></tr>
+<tr><td class="rev">14834</td><td>2005-07-20</td><td>desruisseaux</td><td>Reorganized I18N resources</td></tr>
+<tr><td class="rev">14657</td><td>2005-07-01</td><td>desruisseaux</td><td>Ongoing work for the port of grid coverage operations from 'legacy' to 'main' (GEOT-413): ported SampleDimensionSelect</td></tr>
+<tr><td class="rev">14550</td><td>2005-06-16</td><td>desruisseaux</td><td>Removed deprecated fields and methods</td></tr>
+<tr><td class="rev">14157</td><td>2005-06-07</td><td>desruisseaux</td><td>Added parameter wrappers around JAI's ParameterList, for implementation of GridCoverage operations backed by JAI operators</td></tr>
+<tr><td class="rev">13925</td><td>2005-05-30</td><td>desruisseaux</td><td>Added @since javadoc tag</td></tr>
+<tr><td class="rev">13922</td><td>2005-05-29</td><td>desruisseaux</td><td>Renaming of remainding GeoAPI implementations. Renaming is now finished.</td></tr>
+<tr><td class="rev">13906</td><td>2005-05-28</td><td>desruisseaux</td><td>Renamed some 'Default' prefix as 'Abstract'</td></tr>
+<tr><td class="rev">13836</td><td>2005-05-26</td><td>desruisseaux</td><td>Added 'Default' suffix to some CRS implementations: partial work</td></tr>
+<tr><td class="rev">11001</td><td>2005-02-02</td><td>desruisseaux</td><td>Fixed wrong encoding in main/src</td></tr>
+<tr><td class="rev">10796</td><td>2005-01-28</td><td class="unav">dzwiers</td><td><a href="rev/10796/DefaultParameterDescriptorGroup.xhtml">imports cleaned</a></td></tr>
+<tr><td class="rev">9119</td><td>2004-11-14</td><td>desruisseaux</td><td>Fixed Mercator projection so that it pass the ProjectionTest</td></tr>
+<tr><td class="rev">8701</td><td>2004-10-20</td><td>desruisseaux</td><td>Added the 'remove' operation to ParameterValueGroup</td></tr>
+<tr><td class="rev">8621</td><td>2004-10-14</td><td>desruisseaux</td><td>Enforced 'maximumOccurs==1' in ParameterValue implementation</td></tr>
+<tr><td class="rev">8610</td><td>2004-10-13</td><td>desruisseaux</td><td>Changed ParameterDescriptorGroup.descriptor(String) return type from 'ParameterValue' to 'GeneralParameterValue'</td></tr>
+<tr><td class="rev">8596</td><td>2004-10-12</td><td>desruisseaux</td><td>Redirected javadoc links toward org.opengis.* instead org.geotools.* when the discussion is general enough</td></tr>
+<tr><td class="rev">8518</td><td>2004-10-11</td><td>desruisseaux</td><td>Apply changes voted in OGC meeting at Southampton: use of Identifier and GenericName</td></tr>
+<tr><td class="rev">7846</td><td>2004-09-08</td><td class="unav">jgarnett</td><td><a href="rev/07846/DefaultParameterDescriptorGroup.xhtml">Cleaned up opengis/geotools split</a></td></tr>
+<tr><td class="rev">7836</td><td>2004-09-08</td><td class="unav">jgarnett</td><td><a href="rev/07846/DefaultParameterDescriptorGroup.xhtml">First round of resync with geoapi</a></td></tr>
+<tr><td class="rev">7712</td><td>2004-08-31</td><td class="unav">jgarnett</td><td><a href="rev/07846/DefaultParameterDescriptorGroup.xhtml">Intergrate ParameterValueGroup / ParameterGroupDescriptor and InternationalString</a></td></tr>
+<tr><td class="rev">7706</td><td>2004-08-31</td><td class="unav">jgarnett</td><td><a href="rev/07846/DefaultParameterDescriptorGroup.xhtml">Change over to parameter descriptor and added parse( text ), text() methods.</a></td></tr>
+<tr><td class="rev">7703</td><td>2004-08-31</td><td class="unav">jgarnett</td><td><a href="rev/07846/DefaultParameterDescriptorGroup.xhtml">Renamed from OpperationalParameter</a></td></tr>
+<tr><td class="rev">6888</td><td>2004-07-14</td><td>desruisseaux</td><td>Update for GeoAPI changes (Info -->  IdentifiedObject)</td></tr>
+<tr><td class="rev">6383</td><td>2004-06-11</td><td>desruisseaux</td><td>Search for parameters and operation methods by identifiers</td></tr>
+<tr><td class="rev">6362</td><td>2004-06-08</td><td>desruisseaux</td><td>Initial work for an OperationProvider</td></tr>
+<tr><td class="rev">6098</td><td>2004-05-23</td><td>desruisseaux</td><td>Partial implementation of GeoAPI referencing package</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/DefaultParameterDescriptorGroup.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/DefaultParameterDescriptorGroup.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/DefaultParameterValueGroup.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/DefaultParameterValueGroup.xhtml?rev=1575078&view=auto
==============================================================================
--- sis/ip-review/DefaultParameterValueGroup.xhtml (added)
+++ sis/ip-review/DefaultParameterValueGroup.xhtml Thu Mar  6 22:40:57 2014
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>DefaultParameterValueGroup history</title>
+    <style type="text/css" media="all">
+      @import url("./reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>DefaultParameterValueGroup history</h1>
+  <p>Click on the commit message for inspecting the <code>diff</code> and how the code has been rewritten.</p>
+<p><b>Command line:</b></p>
+<blockquote><code>svn log -r31996:1 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/parameter/ParameterGroup.java</code></blockquote>
+<table>
+  <tr>
+    <th>Rev.</th>
+    <th>Date</th>
+    <th>Author</th>
+    <th class="last">Message</th>
+  </tr>
+<tr><td class="rev">30641</td><td>2008-06-12</td><td>acuster</td><td>Copyright headers: lib/referencing, this time with feeling (and the el in Toolkit)</td></tr>
+<tr><td class="rev">30521</td><td>2008-06-05</td><td>acuster</td><td>Copyright: Update referencing headers</td></tr>
+<tr><td class="rev">30313</td><td>2008-05-16</td><td>desruisseaux</td><td>Changed my mind about Utilities.shallowEquals(Object,Object) and renamed it as equals, since a few tests show that the compiler always select the best overloaded flavor working on primitive types (except if an argument is a boolean and the other a different primitive type). Updated a few references. Fixed a few javadoc warnings by explicit declaration of parameter and return values.</td></tr>
+<tr><td class="rev">30258</td><td>2008-05-08</td><td>acuster</td><td>Reshuffle the top level repo: drop uDig, move up trunk, tags, and branches.</td></tr>
+<tr><td class="rev">30257</td><td>2008-05-08</td><td>acuster</td><td>Move trunk/gt/ directory contents up to trunk/ and drop gt</td></tr>
+<tr><td class="rev">28922</td><td>2008-01-24</td><td>acuster</td><td>Bump the (at)since version to 2.5 since WKTParser was cut from 2.4</td></tr>
+<tr><td class="rev">28540</td><td>2007-12-29</td><td>acuster</td><td>Hide buttons which are not yet used</td></tr>
+<tr><td class="rev">28267</td><td>2007-12-06</td><td>desruisseaux</td><td>GeoTools trunk now build against GeoAPI 2.2-SNAPSHOT.</td></tr>
+<tr><td class="rev">28069</td><td>2007-11-27</td><td>desruisseaux</td><td>Java 5 generics in org.geotools.image.io, and partially in org.geotools.parameters.</td></tr>
+<tr><td class="rev">27575</td><td>2007-10-22</td><td>desruisseaux</td><td>Converted Java source files from ISO-LATIN-1 encoding to UTF-8 (GEOT-1516).</td></tr>
+<tr><td class="rev">25262</td><td>2007-04-23</td><td>desruisseaux</td><td>Finished review of metadata and factory hints change. Fixed a potential glitch in parameter names handling (some code were disabled in AbstractIdentifiedObject apparently in order to avoid a ClassCastException caused by the spit of org.opengis.metadata.Identifier in two interfaces, Identifier and ReferenceIdentifier. Fixed the exception and reenabled the code). Not sure yet what the consequence was. It may help for the stereographic projection issue, but need to check.</td></tr>
+<tr><td class="rev">22327</td><td>2006-10-23</td><td>desruisseaux</td><td>GEOT-982: regroup 'module', 'plugin', 'ext' and 'unsupported' in a common directory.</td></tr>
+<tr><td class="rev">22315</td><td>2006-10-22</td><td>desruisseaux</td><td>Reorganisation of directory tree structure (GEOT-982) phase 1: moved 'src' to 'src/main/java'.</td></tr>
+<tr><td class="rev">20874</td><td>2006-08-07</td><td class="unav">jgarnett</td><td><a href="rev/20874/DefaultParameterValueGroup.xhtml">ip review</a></td></tr>
+<tr><td class="rev">17672</td><td>2006-01-19</td><td>desruisseaux</td><td>Added @source tag.</td></tr>
+<tr><td class="rev">17660</td><td>2006-01-18</td><td>desruisseaux</td><td>Fixed SVN attributes, including the addition of URL attribute.</td></tr>
+<tr><td class="rev">16205</td><td>2005-10-11</td><td>desruisseaux</td><td>Cleaned javadoc warning. More work done on Maven 2 configuration (GEOT-691)</td></tr>
+<tr><td class="rev">15350</td><td>2005-08-16</td><td>desruisseaux</td><td>Merged the 'split-main' branch to trunk (GEOT-662)</td></tr>
+<tr><td class="rev">15256</td><td>2005-08-09</td><td>desruisseaux</td><td>Extraction of referencing module from main</td></tr>
+<tr><td class="rev">15255</td><td>2005-08-09</td><td>desruisseaux</td><td>Prepare branch for splitting main</td></tr>
+<tr><td class="rev">14959</td><td>2005-07-28</td><td>desruisseaux</td><td>Added orthodromic distance computation to OpenOffice formulas</td></tr>
+<tr><td class="rev">14834</td><td>2005-07-20</td><td>desruisseaux</td><td>Reorganized I18N resources</td></tr>
+<tr><td class="rev">14157</td><td>2005-06-07</td><td>desruisseaux</td><td>Added parameter wrappers around JAI's ParameterList, for implementation of GridCoverage operations backed by JAI operators</td></tr>
+<tr><td class="rev">13925</td><td>2005-05-30</td><td>desruisseaux</td><td>Added @since javadoc tag</td></tr>
+<tr><td class="rev">13922</td><td>2005-05-29</td><td>desruisseaux</td><td>Renaming of remainding GeoAPI implementations. Renaming is now finished.</td></tr>
+<tr><td class="rev">13906</td><td>2005-05-28</td><td>desruisseaux</td><td>Renamed some 'Default' prefix as 'Abstract'</td></tr>
+<tr><td class="rev">13836</td><td>2005-05-26</td><td>desruisseaux</td><td>Added 'Default' suffix to some CRS implementations: partial work</td></tr>
+<tr><td class="rev">11001</td><td>2005-02-02</td><td>desruisseaux</td><td>Fixed wrong encoding in main/src</td></tr>
+<tr><td class="rev">10796</td><td>2005-01-28</td><td class="unav">dzwiers</td><td><a href="rev/10796/DefaultParameterValueGroup.xhtml">imports cleaned</a></td></tr>
+<tr><td class="rev">8875</td><td>2004-10-27</td><td>desruisseaux</td><td>Miscellaneous cleaning</td></tr>
+<tr><td class="rev">8726</td><td>2004-10-21</td><td>desruisseaux</td><td>Various bug fixes in parameter handling</td></tr>
+<tr><td class="rev">8701</td><td>2004-10-20</td><td>desruisseaux</td><td>Added the 'remove' operation to ParameterValueGroup</td></tr>
+<tr><td class="rev">8674</td><td>2004-10-19</td><td>desruisseaux</td><td>Supports List.add(...) operation in the list returned by ParameterValueGroup.values()</td></tr>
+<tr><td class="rev">8621</td><td>2004-10-14</td><td>desruisseaux</td><td>Enforced 'maximumOccurs==1' in ParameterValue implementation</td></tr>
+<tr><td class="rev">8596</td><td>2004-10-12</td><td>desruisseaux</td><td>Redirected javadoc links toward org.opengis.* instead org.geotools.* when the discussion is general enough</td></tr>
+<tr><td class="rev">8554</td><td>2004-10-12</td><td>desruisseaux</td><td>First draft of ParameterValueGroup.group(String) and addGroup(String) methods</td></tr>
+<tr><td class="rev">8518</td><td>2004-10-11</td><td>desruisseaux</td><td>Apply changes voted in OGC meeting at Southampton: use of Identifier and GenericName</td></tr>
+<tr><td class="rev">7857</td><td>2004-09-09</td><td class="unav">jgarnett</td><td><a href="rev/07857/DefaultParameterValueGroup.xhtml">name to getName().toString( null )</a></td></tr>
+<tr><td class="rev">7846</td><td>2004-09-08</td><td class="unav">jgarnett</td><td><a href="rev/07857/DefaultParameterValueGroup.xhtml">Cleaned up opengis/geotools split</a></td></tr>
+<tr><td class="rev">7837</td><td>2004-09-08</td><td class="unav">jgarnett</td><td><a href="rev/07857/DefaultParameterValueGroup.xhtml">Updated handling of values/params in parametervaluegroup</a></td></tr>
+<tr><td class="rev">7836</td><td>2004-09-08</td><td class="unav">jgarnett</td><td><a href="rev/07857/DefaultParameterValueGroup.xhtml">First round of resync with geoapi</a></td></tr>
+<tr><td class="rev">7706</td><td>2004-08-31</td><td class="unav">jgarnett</td><td><a href="rev/07857/DefaultParameterValueGroup.xhtml">Change over to parameter descriptor and added parse( text ), text() methods.</a></td></tr>
+<tr><td class="rev">6888</td><td>2004-07-14</td><td>desruisseaux</td><td>Update for GeoAPI changes (Info -->  IdentifiedObject)</td></tr>
+<tr><td class="rev">6627</td><td>2004-06-29</td><td>desruisseaux</td><td>Finished refactoring of WKT formatting for MathTransform</td></tr>
+<tr><td class="rev">6589</td><td>2004-06-28</td><td>desruisseaux</td><td>Improved parameters handling</td></tr>
+<tr><td class="rev">6383</td><td>2004-06-11</td><td>desruisseaux</td><td>Search for parameters and operation methods by identifiers</td></tr>
+<tr><td class="rev">6375</td><td>2004-06-10</td><td>desruisseaux</td><td>Work on parameters handling</td></tr>
+<tr><td class="rev">6366</td><td>2004-06-09</td><td>desruisseaux</td><td>First working implementation of MatrixParameters</td></tr>
+<tr><td class="rev">6098</td><td>2004-05-23</td><td>desruisseaux</td><td>Partial implementation of GeoAPI referencing package</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/DefaultParameterValueGroup.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/DefaultParameterValueGroup.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/ParameterValueList.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/ParameterValueList.xhtml?rev=1575078&view=auto
==============================================================================
--- sis/ip-review/ParameterValueList.xhtml (added)
+++ sis/ip-review/ParameterValueList.xhtml Thu Mar  6 22:40:57 2014
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>ParameterValueList history</title>
+    <style type="text/css" media="all">
+      @import url("./reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>ParameterValueList history</h1>
+  <p>Click on the commit message for inspecting the <code>diff</code> and how the code has been rewritten.</p>
+<p><b>Command line:</b></p>
+<blockquote><code>svn log -r31996:1 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/parameter/ParameterValueList.java</code></blockquote>
+<table>
+  <tr>
+    <th>Rev.</th>
+    <th>Date</th>
+    <th>Author</th>
+    <th class="last">Message</th>
+  </tr>
+<tr><td class="rev">30641</td><td>2008-06-12</td><td>acuster</td><td>Copyright headers: lib/referencing, this time with feeling (and the el in Toolkit)</td></tr>
+<tr><td class="rev">30521</td><td>2008-06-05</td><td>acuster</td><td>Copyright: Update referencing headers</td></tr>
+<tr><td class="rev">30258</td><td>2008-05-08</td><td>acuster</td><td>Reshuffle the top level repo: drop uDig, move up trunk, tags, and branches.</td></tr>
+<tr><td class="rev">30257</td><td>2008-05-08</td><td>acuster</td><td>Move trunk/gt/ directory contents up to trunk/ and drop gt</td></tr>
+<tr><td class="rev">28922</td><td>2008-01-24</td><td>acuster</td><td>Bump the (at)since version to 2.5 since WKTParser was cut from 2.4</td></tr>
+<tr><td class="rev">28540</td><td>2007-12-29</td><td>acuster</td><td>Hide buttons which are not yet used</td></tr>
+<tr><td class="rev">28267</td><td>2007-12-06</td><td>desruisseaux</td><td>GeoTools trunk now build against GeoAPI 2.2-SNAPSHOT.</td></tr>
+<tr><td class="rev">28069</td><td>2007-11-27</td><td>desruisseaux</td><td>Java 5 generics in org.geotools.image.io, and partially in org.geotools.parameters.</td></tr>
+<tr><td class="rev">27575</td><td>2007-10-22</td><td>desruisseaux</td><td>Converted Java source files from ISO-LATIN-1 encoding to UTF-8 (GEOT-1516).</td></tr>
+<tr><td class="rev">22327</td><td>2006-10-23</td><td>desruisseaux</td><td>GEOT-982: regroup 'module', 'plugin', 'ext' and 'unsupported' in a common directory.</td></tr>
+<tr><td class="rev">22315</td><td>2006-10-22</td><td>desruisseaux</td><td>Reorganisation of directory tree structure (GEOT-982) phase 1: moved 'src' to 'src/main/java'.</td></tr>
+<tr><td class="rev">20874</td><td>2006-08-07</td><td class="unav">jgarnett</td><td><a href="rev/20874/ParameterValueList.xhtml">ip review</a></td></tr>
+<tr><td class="rev">17672</td><td>2006-01-19</td><td>desruisseaux</td><td>Added @source tag.</td></tr>
+<tr><td class="rev">17660</td><td>2006-01-18</td><td>desruisseaux</td><td>Fixed SVN attributes, including the addition of URL attribute.</td></tr>
+<tr><td class="rev">16205</td><td>2005-10-11</td><td>desruisseaux</td><td>Cleaned javadoc warning. More work done on Maven 2 configuration (GEOT-691)</td></tr>
+<tr><td class="rev">15350</td><td>2005-08-16</td><td>desruisseaux</td><td>Merged the 'split-main' branch to trunk (GEOT-662)</td></tr>
+<tr><td class="rev">15256</td><td>2005-08-09</td><td>desruisseaux</td><td>Extraction of referencing module from main</td></tr>
+<tr><td class="rev">15255</td><td>2005-08-09</td><td>desruisseaux</td><td>Prepare branch for splitting main</td></tr>
+<tr><td class="rev">14834</td><td>2005-07-20</td><td>desruisseaux</td><td>Reorganized I18N resources</td></tr>
+<tr><td class="rev">14608</td><td>2005-06-25</td><td>desruisseaux</td><td>EPSG authority factory now uses path informations for ConcatenatedOperation object creations / Added PostgreSQL plugin (mostly as a demo) / Javadoc fixes</td></tr>
+<tr><td class="rev">13925</td><td>2005-05-30</td><td>desruisseaux</td><td>Added @since javadoc tag</td></tr>
+<tr><td class="rev">13922</td><td>2005-05-29</td><td>desruisseaux</td><td>Renaming of remainding GeoAPI implementations. Renaming is now finished.</td></tr>
+<tr><td class="rev">13906</td><td>2005-05-28</td><td>desruisseaux</td><td>Renamed some 'Default' prefix as 'Abstract'</td></tr>
+<tr><td class="rev">13836</td><td>2005-05-26</td><td>desruisseaux</td><td>Added 'Default' suffix to some CRS implementations: partial work</td></tr>
+<tr><td class="rev">11001</td><td>2005-02-02</td><td>desruisseaux</td><td>Fixed wrong encoding in main/src</td></tr>
+<tr><td class="rev">10796</td><td>2005-01-28</td><td class="unav">dzwiers</td><td><a href="rev/10796/ParameterValueList.xhtml">imports cleaned</a></td></tr>
+<tr><td class="rev">8701</td><td>2004-10-20</td><td>desruisseaux</td><td>Added the 'remove' operation to ParameterValueGroup</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/ParameterValueList.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/ParameterValueList.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml?rev=1575078&view=auto
==============================================================================
--- sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml (added)
+++ sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml Thu Mar  6 22:40:57 2014
@@ -0,0 +1,490 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>DefaultParameterDescriptorGroup changes for revisions 7702:7846</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>DefaultParameterDescriptorGroup changes for revisions 7702:7846</h1>
+<p>Renaming of <code>OperationParameterGroup</code> as <code>ParameterGroupDescriptor</code>.
+   This change appears as if the commiter added a new file because he did not used the <code>svn move</code> command,
+   but in reality the file was written before.</p>
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r7702:7846 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/parameter/DefaultParameterDescriptorGroup.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 7702</th><th>Revision 7846</th></tr>
+<tr><td><pre>/*
+ * Geotools 2 - OpenSource mapping toolkit
+ * (C) 2004, Geotools Project Managment Committee (PMC)
+ * (C) 2004, Institut de Recherche pour le D?veloppement
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation; either
+ *    version 2.1 of the License, or (at your option) any later version.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ *    You should have received a copy of the GNU Lesser General Public
+ *    License along with this library; if not, write to the Free Software
+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ *    This package contains documentation from OpenGIS specifications.
+ *    OpenGIS consortium's work is fully acknowledged here.
+ */
+package org.geotools.parameter;
+
+// J2SE dependencies
+import java.util.Map;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.Collections;
+
+// OpenGIS dependencies
+import org.opengis.parameter.OperationParameter;
+import org.opengis.parameter.ParameterValueGroup;
+import org.opengis.parameter.GeneralParameterValue;
+import org.opengis.parameter.GeneralOperationParameter;
+import org.opengis.parameter.ParameterNotFoundException;
+
+// Geotools dependencies
+import org.geotools.referencing.IdentifiedObject;
+import org.geotools.referencing.Identifier;  // For javadoc
+import org.geotools.resources.Utilities;
+import org.geotools.resources.cts.Resources;
+import org.geotools.resources.cts.ResourceKeys;
+
+
+/**
+ * The definition of a group of related parameters used by an operation method.
+ *
+ * @version $Id: OperationParameterGroup.java 6888 2004-07-14 18:45:44Z desruisseaux $
+ * @author Martin Desruisseaux
+ *
+ * @see org.geotools.parameter.ParameterValueGroup
+ * @see org.geotools.parameter.OperationParameter
+ */
+public class OperationParameterGroup extends org.geotools.parameter.GeneralOperationParameter
+                                  implements org.opengis.parameter.OperationParameterGroup
+{
+    /**
+     * Serial number for interoperability with different versions.
+     */
+    private static final long serialVersionUID = 3395510970737025480L;
+
+    /**
+     * The {@linkplain #getParameters operation parameters} for this group.
+     */
+    private final GeneralOperationParameter[] parameters;
+
+    /**
+     * Construct a parameter group from a name.
+     * This parameter group will be required exactly once.
+     *
+     * @param name The parameter group name.
+     * @param parameters The {@linkplain #getParameters operation parameters} for this group.
+     */
+    public OperationParameterGroup(final String name,
+                                   final GeneralOperationParameter[] parameters)
+    {
+        this(Collections.singletonMap("name", name), parameters);
+    }
+
+    /**
+     * Construct a parameter group from a set of properties.
+     * This parameter group will be required exactly once. The properties map is
+     * given unchanged to the {@linkplain IdentifiedObject#IdentifiedObject(Map)
+     * super-class constructor}.
+     *
+     * @param properties Set of properties. Should contains at least &lt;code&gt;"name"&lt;/code&gt;.
+     * @param parameters The {@linkplain #getParameters operation parameters} for this group.
+     */
+    public OperationParameterGroup(final Map properties,
+                                   final GeneralOperationParameter[] parameters)
+    {
+        this(properties, 1, 1, parameters);
+    }
+
+    /**
+     * Construct a parameter group from a set of properties. The properties map is
+     * given unchanged to the {@linkplain IdentifiedObject#IdentifiedObject(Map)
+     * super-class constructor}.
+     *
+     * @param properties Set of properties. Should contains at least &lt;code&gt;"name"&lt;/code&gt;.
+     * @param minimumOccurs The {@linkplain #getMinimumOccurs minimum number of times}
+     *        that values for this parameter group are required.
+     * @param maximumOccurs The {@linkplain #getMaximumOccurs maximum number of times}
+     *        that values for this parameter group are required.
+     * @param parameters The {@linkplain #getParameters operation parameters} for this group.
+     */
+    public OperationParameterGroup(final Map properties,
+                                   final int minimumOccurs,
+                                   final int maximumOccurs,
+                                   final GeneralOperationParameter[] parameters)
+    {
+        super(properties, minimumOccurs, maximumOccurs);
+        ensureNonNull("parameters", parameters);
+        this.parameters = new GeneralOperationParameter[parameters.length];
+        for (int i=0; i&lt;parameters.length; i++) {
+            this.parameters[i] = parameters[i];
+            ensureNonNull("parameters", parameters, i);
+        }
+    }
+
+    /**
+     * Creates a new instance of
+     * {@linkplain org.geotools.parameter.ParameterValueGroup parameter value group}
+     * initialized with the
+     * {@linkplain org.geotools.parameter.OperationParameter#getDefaultValue default values}. The
+     * {@linkplain org.geotools.parameter.ParameterValueGroup#getDescriptor parameter value descriptor}
+     * for the created group will be &lt;code&gt;this&lt;/code&gt; object.
+     */
+    public GeneralParameterValue createValue() {
+        return new org.geotools.parameter.ParameterValueGroup(this);
+    }
+
+    /**
+     * Returns the parameters in this group.
+     *
+     * @return The parameters.
+     */
+    public GeneralOperationParameter[] getParameters() {
+        return (GeneralOperationParameter[]) parameters.clone();
+    }
+
+    /**
+     * Returns the first parameter in this group for the specified {@linkplain Identifier#getCode
+     * identifier code}. If no {@linkplain org.geotools.parameter.OperationParameter operation
+     * parameter} is found for the given code, then this method search recursively in subgroups
+     * (if any). This convenience method provides a way to get and set parameter information by
+     * name. For example the following idiom fetches the default value for the
+     * &lt;code&gt;"false_easting"&lt;/code&gt; parameter:
+     * &lt;br&gt;&lt;br&gt;
+     * &lt;blockquote&gt;&lt;code&gt;
+     * Object defaultValue = getParameter("false_easting").{@linkplain
+     * org.geotools.parameter.OperationParameter#getDefaultValue() getDefaultValue()};
+     * &lt;/code&gt;&lt;/blockquote&gt;
+     *
+     * @param  name The case insensitive {@linkplain Identifier#getCode identifier code} of the
+     *              parameter to search for. If this string contains the &lt;code&gt;':'&lt;/code&gt; character,
+     *              then the part before &lt;code&gt;':'&lt;/code&gt; is the {@linkplain Identifier#getCodeSpace
+     *              code space}.
+     * @return The parameter for the given identifier code.
+     * @throws ParameterNotFoundException if there is no parameter for the given identifier code.
+     */
+    public OperationParameter getParameter(String name) throws ParameterNotFoundException {
+        ensureNonNull("name", name);
+        name = name.trim();
+        List subgroups = null;
+        GeneralOperationParameter[] parameters = this.parameters;
+        while (parameters != null) {
+            for (int i=0; i&lt;parameters.length; i++) {
+                final GeneralOperationParameter param = parameters[i];
+                if (param instanceof OperationParameter) {
+                    if (identifierMatches(param, name)) {
+                        return (OperationParameter) param;
+                    }
+                } else if (param instanceof org.opengis.parameter.OperationParameterGroup) {
+                    if (subgroups == null) {
+                        subgroups = new LinkedList();
+                    }
+                    assert !subgroups.contains(param) : param;
+                    subgroups.add(param);
+                }
+            }
+            /*
+             * Looks in subgroups only after all parameters in the current group have been verified.
+             * Search in a "first in, first out" basis.
+             */
+            if (subgroups==null || subgroups.isEmpty()) {
+                break;
+            }
+            parameters = ((org.opengis.parameter.OperationParameterGroup) subgroups.remove(0)).getParameters();
+        }
+        throw new ParameterNotFoundException(Resources.format(
+                  ResourceKeys.ERROR_MISSING_PARAMETER_$1, name), name);
+    }
+
+    /**
+     * Compares the specified object with this parameter group for equality.
+     *
+     * @param  object The object to compare to &lt;code&gt;this&lt;/code&gt;.
+     * @param  compareMetadata &lt;code&gt;true&lt;/code&gt; for performing a strict comparaison, or
+     *         &lt;code&gt;false&lt;/code&gt; for comparing only properties relevant to transformations.
+     * @return &lt;code&gt;true&lt;/code&gt; if both objects are equal.
+     */
+    public boolean equals(final IdentifiedObject object, final boolean compareMetadata) {
+        if (super.equals(object, compareMetadata)) {
+            final OperationParameterGroup that = (OperationParameterGroup) object;
+            // TODO: We should use Arrays.deepEquals instead in J2SE 1.5.
+            if (this.parameters.length == that.parameters.length) {
+                for (int i=0; i&lt;parameters.length; i++) {
+                    if (!Utilities.equals(this.parameters[i], that.parameters[i])) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns a hash value for this parameter.
+     *
+     * @return The hash code value. This value doesn't need to be the same
+     *         in past or future versions of this class.
+     */
+    public int hashCode() {
+        int code = super.hashCode();
+        // TODO: We should use Arrays.deepHashCode instead in J2SE 1.5.
+        for (int i=0; i&lt;parameters.length; i++) {
+            code = code*37 + parameters[i].hashCode();
+        }
+        return code;
+    }
+}</pre></td>
+<td><pre><span class="add">/*</span>
+<span class="add"> * Geotools 2 - OpenSource mapping toolkit</span>
+<span class="add"> * (C) 2004, Geotools Project Managment Committee (PMC)</span>
+<span class="add"> * (C) 2004, Institut de Recherche pour le Développement</span>
+<span class="add"> *</span>
+<span class="add"> *    This library is free software; you can redistribute it and/or</span>
+<span class="add"> *    modify it under the terms of the GNU Lesser General Public</span>
+<span class="add"> *    License as published by the Free Software Foundation; either</span>
+<span class="add"> *    version 2.1 of the License, or (at your option) any later version.</span>
+<span class="add"> *</span>
+<span class="add"> *    This library is distributed in the hope that it will be useful,</span>
+<span class="add"> *    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<span class="add"> *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
+<span class="add"> *    Lesser General Public License for more details.</span>
+<span class="add"> *</span>
+<span class="add"> *    You should have received a copy of the GNU Lesser General Public</span>
+<span class="add"> *    License along with this library; if not, write to the Free Software</span>
+<span class="add"> *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
+<span class="add"> *</span>
+<span class="add"> *    This package contains documentation from OpenGIS specifications.</span>
+<span class="add"> *    OpenGIS consortium's work is fully acknowledged here.</span>
+<span class="add"> */</span>
+<span class="add">package org.geotools.parameter;</span>
+<span class="add"></span>
+<span class="add">// J2SE dependencies</span>
+<span class="add">import java.util.Map;</span>
+<span class="add">import java.util.List;</span>
+<span class="add">import java.util.LinkedList;</span>
+<span class="add">import java.util.Collections;</span>
+<span class="add"></span>
+<span class="add">// OpenGIS dependencies</span>
+<span class="add">import org.opengis.parameter.GeneralParameterValue;</span>
+<span class="add">import org.opengis.parameter.ParameterDescriptor;</span>
+<span class="add">import org.opengis.parameter.GeneralParameterDescriptor;</span>
+<span class="add">import org.opengis.parameter.ParameterNotFoundException;</span>
+<span class="add"></span>
+<span class="add">// Geotools dependencies</span>
+<span class="add">import org.geotools.referencing.IdentifiedObject;</span>
+<span class="add">import org.geotools.referencing.Identifier;  // For javadoc</span>
+<span class="add">import org.geotools.resources.Utilities;</span>
+<span class="add">import org.geotools.resources.cts.Resources;</span>
+<span class="add">import org.geotools.resources.cts.ResourceKeys;</span>
+<span class="add"></span>
+<span class="add"></span>
+<span class="add">/**</span>
+<span class="add"> * The definition of a group of related parameters used by an operation method.</span>
+<span class="add"> *</span>
+<span class="add"> * @version $Id$</span>
+<span class="add"> * @author Martin Desruisseaux</span>
+<span class="add"> *</span>
+<span class="add"> * @see org.geotools.parameter.ParameterGroup</span>
+<span class="add"> * @see org.geotools.parameter.ParameterDescriptor</span>
+<span class="add"> */</span>
+<span class="add">public class ParameterGroupDescriptor extends org.geotools.parameter.AbstractParameterDescriptor</span>
+<span class="add">                                  implements org.opengis.parameter.ParameterDescriptorGroup</span>
+<span class="add">{</span>
+<span class="add">    /**</span>
+<span class="add">     * Serial number for interoperability with different versions.</span>
+<span class="add">     */</span>
+<span class="add">    private static final long serialVersionUID = 3395510970737025480L;</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * The {@linkplain #getParameters operation parameters} for this group.</span>
+<span class="add">     */</span>
+<span class="add">    private final GeneralParameterDescriptor[] parameters;</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Construct a parameter group from a name.</span>
+<span class="add">     * This parameter group will be required exactly once.</span>
+<span class="add">     *</span>
+<span class="add">     * @param name The parameter group name.</span>
+<span class="add">     * @param parameters The {@linkplain #getParameters operation parameters} for this group.</span>
+<span class="add">     */</span>
+<span class="add">    public ParameterGroupDescriptor(final String name,</span>
+<span class="add">                                   final GeneralParameterDescriptor[] parameters)</span>
+<span class="add">    {</span>
+<span class="add">        this(Collections.singletonMap("name", name), parameters);</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Construct a parameter group from a set of properties.</span>
+<span class="add">     * This parameter group will be required exactly once. The properties map is</span>
+<span class="add">     * given unchanged to the {@linkplain IdentifiedObject#IdentifiedObject(Map)</span>
+<span class="add">     * super-class constructor}.</span>
+<span class="add">     *</span>
+<span class="add">     * @param properties Set of properties. Should contains at least &lt;code&gt;"name"&lt;/code&gt;.</span>
+<span class="add">     * @param parameters The {@linkplain #getParameters operation parameters} for this group.</span>
+<span class="add">     */</span>
+<span class="add">    public ParameterGroupDescriptor(final Map properties,</span>
+<span class="add">                                   final GeneralParameterDescriptor[] parameters)</span>
+<span class="add">    {</span>
+<span class="add">        this(properties, 1, 1, parameters);</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Construct a parameter group from a set of properties. The properties map is</span>
+<span class="add">     * given unchanged to the {@linkplain IdentifiedObject#IdentifiedObject(Map)</span>
+<span class="add">     * super-class constructor}.</span>
+<span class="add">     *</span>
+<span class="add">     * @param properties Set of properties. Should contains at least &lt;code&gt;"name"&lt;/code&gt;.</span>
+<span class="add">     * @param minimumOccurs The {@linkplain #getMinimumOccurs minimum number of times}</span>
+<span class="add">     *        that values for this parameter group are required.</span>
+<span class="add">     * @param maximumOccurs The {@linkplain #getMaximumOccurs maximum number of times}</span>
+<span class="add">     *        that values for this parameter group are required.</span>
+<span class="add">     * @param parameters The {@linkplain #getParameters operation parameters} for this group.</span>
+<span class="add">     */</span>
+<span class="add">    public ParameterGroupDescriptor(final Map properties,</span>
+<span class="add">                                   final int minimumOccurs,</span>
+<span class="add">                                   final int maximumOccurs,</span>
+<span class="add">                                   final GeneralParameterDescriptor[] parameters)</span>
+<span class="add">    {</span>
+<span class="add">        super(properties, minimumOccurs, maximumOccurs);</span>
+<span class="add">        ensureNonNull("parameters", parameters);</span>
+<span class="add">        this.parameters = new GeneralParameterDescriptor[parameters.length];</span>
+<span class="add">        for (int i=0; i&lt;parameters.length; i++) {</span>
+<span class="add">            this.parameters[i] = parameters[i];</span>
+<span class="add">            ensureNonNull("parameters", parameters, i);</span>
+<span class="add">        }</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Creates a new instance of</span>
+<span class="add">     * {@linkplain org.geotools.parameter.ParameterGroup parameter value group}</span>
+<span class="add">     * initialized with the</span>
+<span class="add">     * {@linkplain org.geotools.parameter.ParameterDescriptor#getDefaultValue default values}. The</span>
+<span class="add">     * {@linkplain org.geotools.parameter.ParameterGroup#getDescriptor parameter value descriptor}</span>
+<span class="add">     * for the created group will be &lt;code&gt;this&lt;/code&gt; object.</span>
+<span class="add">     */</span>
+<span class="add">    public GeneralParameterValue createValue() {</span>
+<span class="add">        return new ParameterGroup(this);</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Returns the parameters in this group.</span>
+<span class="add">     *</span>
+<span class="add">     * @return The parameters.</span>
+<span class="add">     */</span>
+<span class="add">    public GeneralParameterDescriptor[] getParameters() {</span>
+<span class="add">        return (GeneralParameterDescriptor[]) parameters.clone();</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Returns the first parameter in this group for the specified {@linkplain Identifier#getCode</span>
+<span class="add">     * identifier code}. If no {@linkplain org.geotools.parameter.ParameterDescriptor operation</span>
+<span class="add">     * parameter} is found for the given code, then this method search recursively in subgroups</span>
+<span class="add">     * (if any). This convenience method provides a way to get and set parameter information by</span>
+<span class="add">     * name. For example the following idiom fetches the default value for the</span>
+<span class="add">     * &lt;code&gt;"false_easting"&lt;/code&gt; parameter:</span>
+<span class="add">     * &lt;br&gt;&lt;br&gt;</span>
+<span class="add">     * &lt;blockquote&gt;&lt;code&gt;</span>
+<span class="add">     * Object defaultValue = getParameter("false_easting").{@linkplain</span>
+<span class="add">     * org.geotools.parameter.ParameterDescriptor#getDefaultValue() getDefaultValue()};</span>
+<span class="add">     * &lt;/code&gt;&lt;/blockquote&gt;</span>
+<span class="add">     *</span>
+<span class="add">     * @param  name The case insensitive {@linkplain Identifier#getCode identifier code} of the</span>
+<span class="add">     *              parameter to search for. If this string contains the &lt;code&gt;':'&lt;/code&gt; character,</span>
+<span class="add">     *              then the part before &lt;code&gt;':'&lt;/code&gt; is the {@linkplain Identifier#getCodeSpace</span>
+<span class="add">     *              code space}.</span>
+<span class="add">     * @return The parameter for the given identifier code.</span>
+<span class="add">     * @throws ParameterNotFoundException if there is no parameter for the given identifier code.</span>
+<span class="add">     */</span>
+<span class="add">    public ParameterDescriptor getParameter(String name) throws ParameterNotFoundException {</span>
+<span class="add">        ensureNonNull("name", name);</span>
+<span class="add">        name = name.trim();</span>
+<span class="add">        List subgroups = null;</span>
+<span class="add">        GeneralParameterDescriptor[] parameters = this.parameters;</span>
+<span class="add">        while (parameters != null) {</span>
+<span class="add">            for (int i=0; i&lt;parameters.length; i++) {</span>
+<span class="add">                final GeneralParameterDescriptor param = parameters[i];</span>
+<span class="add">                if (param instanceof ParameterDescriptor) {</span>
+<span class="add">                    if (identifierMatches(param, name)) {</span>
+<span class="add">                        return (ParameterDescriptor) param;</span>
+<span class="add">                    }</span>
+<span class="add">                } else if (param instanceof org.opengis.parameter.ParameterDescriptorGroup) {</span>
+<span class="add">                    if (subgroups == null) {</span>
+<span class="add">                        subgroups = new LinkedList();</span>
+<span class="add">                    }</span>
+<span class="add">                    assert !subgroups.contains(param) : param;</span>
+<span class="add">                    subgroups.add(param);</span>
+<span class="add">                }</span>
+<span class="add">            }</span>
+<span class="add">            /*</span>
+<span class="add">             * Looks in subgroups only after all parameters in the current group have been verified.</span>
+<span class="add">             * Search in a "first in, first out" basis.</span>
+<span class="add">             */</span>
+<span class="add">            if (subgroups==null || subgroups.isEmpty()) {</span>
+<span class="add">                break;</span>
+<span class="add">            }</span>
+<span class="add">            parameters = ((org.opengis.parameter.ParameterDescriptorGroup) subgroups.remove(0)).getParameters();</span>
+<span class="add">        }</span>
+<span class="add">        throw new ParameterNotFoundException(Resources.format(</span>
+<span class="add">                  ResourceKeys.ERROR_MISSING_PARAMETER_$1, name), name);</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Compares the specified object with this parameter group for equality.</span>
+<span class="add">     *</span>
+<span class="add">     * @param  object The object to compare to &lt;code&gt;this&lt;/code&gt;.</span>
+<span class="add">     * @param  compareMetadata &lt;code&gt;true&lt;/code&gt; for performing a strict comparaison, or</span>
+<span class="add">     *         &lt;code&gt;false&lt;/code&gt; for comparing only properties relevant to transformations.</span>
+<span class="add">     * @return &lt;code&gt;true&lt;/code&gt; if both objects are equal.</span>
+<span class="add">     */</span>
+<span class="add">    public boolean equals(final IdentifiedObject object, final boolean compareMetadata) {</span>
+<span class="add">        if (super.equals(object, compareMetadata)) {</span>
+<span class="add">            final ParameterGroupDescriptor that = (ParameterGroupDescriptor) object;</span>
+<span class="add">            // TODO: We should use Arrays.deepEquals instead in J2SE 1.5.</span>
+<span class="add">            if (this.parameters.length == that.parameters.length) {</span>
+<span class="add">                for (int i=0; i&lt;parameters.length; i++) {</span>
+<span class="add">                    if (!Utilities.equals(this.parameters[i], that.parameters[i])) {</span>
+<span class="add">                        return false;</span>
+<span class="add">                    }</span>
+<span class="add">                }</span>
+<span class="add">                return true;</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add">        return false;</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Returns a hash value for this parameter.</span>
+<span class="add">     *</span>
+<span class="add">     * @return The hash code value. This value doesn't need to be the same</span>
+<span class="add">     *         in past or future versions of this class.</span>
+<span class="add">     */</span>
+<span class="add">    public int hashCode() {</span>
+<span class="add">        int code = super.hashCode();</span>
+<span class="add">        // TODO: We should use Arrays.deepHashCode instead in J2SE 1.5.</span>
+<span class="add">        for (int i=0; i&lt;parameters.length; i++) {</span>
+<span class="add">            code = code*37 + parameters[i].hashCode();</span>
+<span class="add">        }</span>
+<span class="add">        return code;</span>
+<span class="add">    }</span>
+<span class="add">}</span></pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/07846/DefaultParameterDescriptorGroup.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml?rev=1575078&view=auto
==============================================================================
--- sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml (added)
+++ sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml Thu Mar  6 22:40:57 2014
@@ -0,0 +1,541 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>DefaultParameterValueGroup changes for revisions 7705:7857</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>DefaultParameterValueGroup changes for revisions 7705:7857</h1>
+<p>Changes in this commit:</p>
+<ul>
+  <li>Propagated the renaming of GeoAPI interface (e.g. <code>OperationParameterGroup</code> → <code>ParameterDescriptorGroup</code>.
+      Reverting those change causes compilation errors, which can be fixed only by reapplying the same changes.</li>
+  <li>Renaming of GeoTools classes (e.g. <code>ParameterValueGroup</code> → <code>ParameterGroup</code>.
+      This Apache SIS names are different (e.g. <code>ParameterValueGroup</code> → <code>DefaultParameterValueGroup</code>).</li>
+  <li>Replacement of <code>descriptor.getName(Locale.getDefault())</code> by <code>descriptor.getName().toString()</code>
+      because of GeoAPI change. Reverting this change cause compilation error, which can be fixed only by taking similar
+      (while not identical) action. For example the call to <code>toString()</code> is often omitted in SIS.</li>
+  <li>This commit adds new methods defined by GeoAPI. Those methods have to be implemented since GeoAPI interface
+      requires them, but are implemented in totally different way in SIS:
+      <ul>
+        <li>The <code>values()</code> method is implemented by a package-private <code>ParameterValueList</code>
+            class which provides a view over the internal parameter lists, rather than copying the list.</li>
+        <li>The <code>add(…)</code> methods are implemented by the above-cited view, with different code.</li>
+        <li>The <code>toString()</code> method is totally different. The Geotk implementation formats the
+            parameters in a table using the <code>TableAppender</code> class.</li>
+      </ul>
+  </li>
+  <li>The convenience methods for locating a parameter by its descriptor are omitted.</li>
+</ul>
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r7705:7857 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/parameter/ParameterGroup.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 7705</th><th>Revision 7857</th></tr>
+<tr><td><pre>package org.geotools.parameter;
+
+// J2SE dependencies
+import java.util.Map;
+import java.util.Set;
+import java.util.List;</pre></td>
+<td><pre>package org.geotools.parameter;
+
+// J2SE dependencies
+<span class="add">import java.util.ArrayList;</span>
+<span class="add">import java.util.Collections;</span>
+import java.util.Map;
+import java.util.Set;
+import java.util.List;</pre></td></tr>
+<tr><td><pre>import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.LinkedHashMap;
+<span class="del">import java.util.Locale;</span>
+
+// OpenGIS dependencies
+import org.opengis.parameter.ParameterValue;
+import org.opengis.parameter.GeneralParameterValue;
+<span class="del">import org.opengis.parameter.OperationParameterGroup;</span>
+<span class="del">import org.opengis.parameter.GeneralOperationParameter;</span>
+import org.opengis.parameter.ParameterNotFoundException;
+<span class="del">import org.opengis.parameter.InvalidParameterNameException;</span>
+
+// Geotools dependencies
+import org.geotools.referencing.IdentifiedObject;</pre></td>
+<td><pre>import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.LinkedHashMap;
+
+// OpenGIS dependencies
+<span class="add">import org.opengis.parameter.InvalidParameterTypeException;</span>
+<span class="add">import org.opengis.parameter.ParameterDescriptor;</span>
+import org.opengis.parameter.ParameterValue;
+import org.opengis.parameter.GeneralParameterValue;
+<span class="add">import org.opengis.parameter.ParameterDescriptorGroup;</span>
+<span class="add">import org.opengis.parameter.GeneralParameterDescriptor;</span>
+import org.opengis.parameter.ParameterNotFoundException;
+
+// Geotools dependencies
+import org.geotools.referencing.IdentifiedObject;</pre></td></tr>
+<tr><td><pre> * A group of related parameter values. The same group can be repeated more than once in an
+ * {@linkplain org.geotools.referencing.operation.Operation operation} or higher level
+ * &lt;code&gt;ParameterValueGroup&lt;/code&gt;, if those instances contain different values of one
+<span class="del"> * or more {@link org.geotools.parameter.ParameterValue}s which suitably distinquish among</span>
+ * those groups.
+ *
+ * @version $Id$
+ * @author Martin Desruisseaux
+ *
+<span class="del"> * @see org.geotools.parameter.OperationParameterGroup</span>
+<span class="del"> * @see org.geotools.parameter.ParameterValue</span>
+ */
+<span class="del">public class ParameterValueGroup extends org.geotools.parameter.GeneralParameterValue</span>
+                              implements org.opengis.parameter.ParameterValueGroup
+{
+    /**</pre></td>
+<td><pre> * A group of related parameter values. The same group can be repeated more than once in an
+ * {@linkplain org.geotools.referencing.operation.Operation operation} or higher level
+ * &lt;code&gt;ParameterValueGroup&lt;/code&gt;, if those instances contain different values of one
+<span class="add"> * or more {@link org.geotools.parameter.Parameter}s which suitably distinquish among</span>
+ * those groups.
+ *
+ * @version $Id$
+ * @author Martin Desruisseaux
+ *
+<span class="add"> * @see org.geotools.parameter.ParameterGroupDescriptor</span>
+<span class="add"> * @see org.geotools.parameter.Parameter</span>
+ */
+<span class="add">public class ParameterGroup extends org.geotools.parameter.AbstractParameter</span>
+                              implements org.opengis.parameter.ParameterValueGroup
+{
+    /**</pre></td></tr>
+<tr><td><pre> *
+ * @param descriptor The descriptor for this group.
+ */
+<span class="del">public ParameterValueGroup(final OperationParameterGroup descriptor) {</span>
+    super(descriptor);
+<span class="del">    final GeneralOperationParameter[] parameters = descriptor.getParameters();</span>
+    values = new GeneralParameterValue[parameters.length];
+    for (int i=0; i&lt;values.length; i++) {
+        ensureNonNull("createValue", values[i] = parameters[i].createValue());</pre></td>
+<td><pre> *
+ * @param descriptor The descriptor for this group.
+ */
+<span class="add">public ParameterGroup(final ParameterDescriptorGroup descriptor) {</span>
+    super(descriptor);
+<span class="add">    final GeneralParameterDescriptor[] parameters = descriptor.getParameters();</span>
+    values = new GeneralParameterValue[parameters.length];
+    for (int i=0; i&lt;values.length; i++) {
+        ensureNonNull("createValue", values[i] = parameters[i].createValue());</pre></td></tr>
+<tr><td><pre> * @param descriptor The descriptor for this group.
+ * @param values The list of parameter values.
+ */
+<span class="del">public ParameterValueGroup(final OperationParameterGroup descriptor,</span>
+                                 GeneralParameterValue[] values)
+{
+    super(descriptor);
+    ensureNonNull("values", values);
+    this.values = values = (GeneralParameterValue[]) values.clone();
+<span class="del">    final GeneralOperationParameter[] parameters = descriptor.getParameters();</span>
+    final Map occurences = new LinkedHashMap(Math.round(parameters.length/0.75f)+1, 0.75f);
+    for (int i=0; i&lt;parameters.length; i++) {
+        ensureNonNull("parameters", parameters, i);</pre></td>
+<td><pre> * @param descriptor The descriptor for this group.
+ * @param values The list of parameter values.
+ */
+<span class="add">public ParameterGroup(final ParameterDescriptorGroup descriptor,</span>
+                                 GeneralParameterValue[] values)
+{
+    super(descriptor);
+    ensureNonNull("values", values);
+    this.values = values = (GeneralParameterValue[]) values.clone();
+<span class="add">    final GeneralParameterDescriptor[] parameters = descriptor.getParameters();</span>
+    final Map occurences = new LinkedHashMap(Math.round(parameters.length/0.75f)+1, 0.75f);
+    for (int i=0; i&lt;parameters.length; i++) {
+        ensureNonNull("parameters", parameters, i);</pre></td></tr>
+<tr><td><pre> * Construct a parameter group from the specified list of parameters.
+ *
+ * @param properties The properties for the
+<span class="del"> *        {@linkplain org.geotools.parameter.OperationParameterGroup operation parameter group}</span>
+ *        to construct from the list of parameters.
+ * @param values The list of parameter values.
+ */
+<span class="del">public ParameterValueGroup(final Map properties, final GeneralParameterValue[] values) {</span>
+    super(createDescriptor(properties, values));
+    this.values = (GeneralParameterValue[]) values.clone();
+}</pre></td>
+<td><pre> * Construct a parameter group from the specified list of parameters.
+ *
+ * @param properties The properties for the
+<span class="add"> *        {@linkplain org.geotools.parameter.ParameterGroupDescriptor operation parameter group}</span>
+ *        to construct from the list of parameters.
+ * @param values The list of parameter values.
+ */
+<span class="add">public ParameterGroup(final Map properties, final GeneralParameterValue[] values) {</span>
+    super(createDescriptor(properties, values));
+    this.values = (GeneralParameterValue[]) values.clone();
+}</pre></td></tr>
+<tr><td><pre> * Work around for RFE #4093999 in Sun's bug database
+ * ("Relax constraint on placement of this()/super() call in constructors").
+ */
+<span class="del">private static OperationParameterGroup createDescriptor(final Map properties,</span>
+                                                        final GeneralParameterValue[] values)
+{
+    ensureNonNull("values", values);</pre></td>
+<td><pre> * Work around for RFE #4093999 in Sun's bug database
+ * ("Relax constraint on placement of this()/super() call in constructors").
+ */
+<span class="add">private static ParameterGroupDescriptor createDescriptor(final Map properties,</span>
+                                                        final GeneralParameterValue[] values)
+{
+    ensureNonNull("values", values);</pre></td></tr>
+<tr><td><pre>    }
+    ensureValidOccurs(values, occurences);
+    final Set descriptors = occurences.keySet();
+<span class="del">    return new org.geotools.parameter.OperationParameterGroup(properties,</span>
+<span class="del">                                      (GeneralOperationParameter[]) descriptors.toArray(</span>
+<span class="del">                                      new GeneralOperationParameter[descriptors.size()]));</span>
+}
+
+/**</pre></td>
+<td><pre>    }
+    ensureValidOccurs(values, occurences);
+    final Set descriptors = occurences.keySet();
+<span class="add">    return new org.geotools.parameter.ParameterGroupDescriptor(properties,</span>
+<span class="add">                                      (GeneralParameterDescriptor[]) descriptors.toArray(</span>
+<span class="add">                                      new GeneralParameterDescriptor[descriptors.size()]));</span>
+}
+
+/**</pre></td></tr>
+<tr><td><pre> *
+ * @param values The list of parameter values.
+ * @param occurences A map of the number of occurences of a value for each descriptor.
+<span class="del"> *        The key must be {@link GeneralOperationParameter} instances and the values</span>
+ *        must be &lt;code&gt;int[]&lt;/code&gt; array of length 1 initialized with the 0 value.
+ */
+private static void ensureValidOccurs(final GeneralParameterValue[] values,</pre></td>
+<td><pre> *
+ * @param values The list of parameter values.
+ * @param occurences A map of the number of occurences of a value for each descriptor.
+<span class="add"> *        The key must be {@link GeneralParameterDescriptor} instances and the values</span>
+ *        must be &lt;code&gt;int[]&lt;/code&gt; array of length 1 initialized with the 0 value.
+ */
+private static void ensureValidOccurs(final GeneralParameterValue[] values,</pre></td></tr>
+<tr><td><pre> */
+for (int i=0; i&lt;values.length; i++) {
+    ensureNonNull("values", values, i);
+<span class="del">    final GeneralOperationParameter descriptor = values[i].getDescriptor();</span>
+    final int[] count = (int[]) occurences.get(descriptor);
+    if (count == null) {
+        throw new IllegalArgumentException(Resources.format(
+                  ResourceKeys.ERROR_ILLEGAL_DESCRIPTOR_FOR_PARAMETER_$1,
+<span class="del">                  descriptor.getName(Locale.getDefault())));</span>
+    }
+    count[0]++;
+}</pre></td>
+<td><pre> */
+for (int i=0; i&lt;values.length; i++) {
+    ensureNonNull("values", values, i);
+<span class="add">    final GeneralParameterDescriptor descriptor = values[i].getDescriptor();</span>
+    final int[] count = (int[]) occurences.get(descriptor);
+    if (count == null) {
+        throw new IllegalArgumentException(Resources.format(
+                  ResourceKeys.ERROR_ILLEGAL_DESCRIPTOR_FOR_PARAMETER_$1,
+<span class="add">                  descriptor.getName().toString()));</span>
+    }
+    count[0]++;
+}</pre></td></tr>
+<tr><td><pre> */
+for (final Iterator it=occurences.entrySet().iterator(); it.hasNext();) {
+    final Map.Entry entry = (Map.Entry) it.next();
+<span class="del">    final GeneralOperationParameter descriptor = (GeneralOperationParameter) entry.getKey();</span>
+    final int count = ((int[]) entry.getValue())[0];
+    final int min   = descriptor.getMinimumOccurs();
+    final int max   = descriptor.getMaximumOccurs();</pre></td>
+<td><pre> */
+for (final Iterator it=occurences.entrySet().iterator(); it.hasNext();) {
+    final Map.Entry entry = (Map.Entry) it.next();
+<span class="add">    final GeneralParameterDescriptor descriptor = (GeneralParameterDescriptor) entry.getKey();</span>
+    final int count = ((int[]) entry.getValue())[0];
+    final int min   = descriptor.getMinimumOccurs();
+    final int max   = descriptor.getMaximumOccurs();</pre></td></tr>
+<tr><td><pre>    if (!(count&gt;=min &amp;&amp; count&lt;=max)) {
+        throw new IllegalArgumentException(Resources.format(
+                  ResourceKeys.ERROR_ILLEGAL_OCCURS_FOR_PARAMETER_$4,
+<span class="del">                  descriptor.getName(Locale.getDefault()), new Integer(count),</span>
+                  new Integer(min), new Integer(max)));
+    }
+}</pre></td>
+<td><pre>    if (!(count&gt;=min &amp;&amp; count&lt;=max)) {
+        throw new IllegalArgumentException(Resources.format(
+                  ResourceKeys.ERROR_ILLEGAL_OCCURS_FOR_PARAMETER_$4,
+<span class="add">                  descriptor.getName().toString(), new Integer(count),</span>
+                  new Integer(min), new Integer(max)));
+    }
+}</pre></td></tr>
+<tr><td><pre> *
+ * @return The values.
+ */
+<span class="del">public GeneralParameterValue[] getValues() {</span>
+<span class="del">    return (GeneralParameterValue[]) values.clone();</span>
+}
+
+/**
+ * Returns the value at the specified index.</pre></td>
+<td><pre> *
+ * @return The values.
+ */
+<span class="add">public List values() {</span>
+<span class="add">    // don't need a clone because we will copy</span>
+<span class="add">    // still need synchronized incase we interupt add updating the values pointer</span>
+<span class="add">    // (usually only a problem on 64 bit multiprocessor machines, but with a</span>
+<span class="add">    /// JIT all bets are off).</span>
+<span class="add">    GeneralParameterValue params[] = values;</span>
+<span class="add">    if( params == null ){</span>
+<span class="add">        return Collections.EMPTY_LIST;</span>
+}
+<span class="add">    List list = new ArrayList();</span>
+<span class="add">    for( int i=0; i&lt;params.length; i++){</span>
+<span class="add">        list.add( params[i].clone() );</span>
+<span class="add">    }</span>
+<span class="add">    return list;</span>
+<span class="add">}</span>
+
+/**
+ * Returns the value at the specified index.</pre></td></tr>
+<tr><td><pre>/**
+ * Returns the first value in this group for the specified {@linkplain Identifier#getCode
+<span class="del"> * identifier code}. If no {@linkplain org.geotools.parameter.ParameterValue parameter value}</span>
+ * is found for the given code, then this method search recursively in subgroups (if any).
+ * This convenience method provides a way to get and set parameter values by name. For example
+ * the following idiom fetches a floating point value for the &lt;code&gt;"false_easting"&lt;/code&gt;</pre></td>
+<td><pre>/**
+ * Returns the first value in this group for the specified {@linkplain Identifier#getCode
+<span class="add"> * identifier code}. If no {@linkplain org.geotools.parameter.Parameter parameter value}</span>
+ * is found for the given code, then this method search recursively in subgroups (if any).
+ * This convenience method provides a way to get and set parameter values by name. For example
+ * the following idiom fetches a floating point value for the &lt;code&gt;"false_easting"&lt;/code&gt;</pre></td></tr>
+<tr><td><pre>* &lt;br&gt;&lt;br&gt;
+* &lt;blockquote&gt;&lt;code&gt;
+* double value = getValue("false_easting").{@linkplain
+<span class="del">* org.geotools.parameter.ParameterValue#doubleValue() doubleValue()};</span>
+* &lt;/code&gt;&lt;/blockquote&gt;
+*
+* @param  name The case insensitive {@linkplain Identifier#getCode identifier code} of the</pre></td>
+<td><pre>* &lt;br&gt;&lt;br&gt;
+* &lt;blockquote&gt;&lt;code&gt;
+* double value = getValue("false_easting").{@linkplain
+<span class="add">* org.geotools.parameter.Parameter#doubleValue() doubleValue()};</span>
+* &lt;/code&gt;&lt;/blockquote&gt;
+*
+* @param  name The case insensitive {@linkplain Identifier#getCode identifier code} of the</pre></td></tr>
+<tr><td><pre> * @return The parameter value for the given identifier code.
+ * @throws ParameterNotFoundException if there is no parameter value for the given identifier code.
+ */
+<span class="del">public ParameterValue getValue(String name) throws ParameterNotFoundException {</span>
+    ensureNonNull("name", name);
+    name = name.trim();
+    List subgroups = null;
+<span class="del">    GeneralParameterValue[] values = this.values;</span>
+<span class="del">    while (values != null) {</span>
+<span class="del">        for (int i=0; i&lt;values.length; i++) {</span>
+<span class="del">            final GeneralParameterValue value = values[i];</span>
+            if (value instanceof ParameterValue) {
+                if (IdentifiedObject.identifierMatches(value.getDescriptor(), name)) {
+                    return (ParameterValue) value;</pre></td>
+<td><pre> * @return The parameter value for the given identifier code.
+ * @throws ParameterNotFoundException if there is no parameter value for the given identifier code.
+ */
+<span class="add">public ParameterValue parameter(String name) throws ParameterNotFoundException {</span>
+    ensureNonNull("name", name);
+    name = name.trim();
+    List subgroups = null;
+<span class="add">    GeneralParameterValue[] params = this.values;</span>
+<span class="add">    while (params != null) {</span>
+<span class="add">        for (int i=0; i&lt;params.length; i++) {</span>
+<span class="add">            final GeneralParameterValue value = params[i];</span>
+            if (value instanceof ParameterValue) {
+                if (IdentifiedObject.identifierMatches(value.getDescriptor(), name)) {
+                    return (ParameterValue) value;</pre></td></tr>
+<tr><td><pre>    if (subgroups==null || subgroups.isEmpty()) {
+        break;
+    }
+<span class="del">    values = ((org.opengis.parameter.ParameterValueGroup) subgroups.remove(0)).getValues();</span>
+}
+throw new ParameterNotFoundException(Resources.format(
+          ResourceKeys.ERROR_MISSING_PARAMETER_$1, name), name);</pre></td>
+<td><pre>    if (subgroups==null || subgroups.isEmpty()) {
+        break;
+    }
+<span class="add">    params = Parameters.array( (org.opengis.parameter.ParameterValueGroup) subgroups.remove(0));</span>
+}
+throw new ParameterNotFoundException(Resources.format(
+          ResourceKeys.ERROR_MISSING_PARAMETER_$1, name), name);</pre></td></tr>
+<tr><td><pre> */
+public boolean equals(final Object object) {
+    if (super.equals(object)) {
+<span class="del">        final ParameterValueGroup that = (ParameterValueGroup) object;</span>
+        // TODO: We should use Arrays.deepEquals instead in J2SE 1.5.
+        if (this.values.length == that.values.length) {
+            for (int i=0; i&lt;values.length; i++) {</pre></td>
+<td><pre> */
+public boolean equals(final Object object) {
+    if (super.equals(object)) {
+<span class="add">        final ParameterGroup that = (ParameterGroup) object;</span>
+        // TODO: We should use Arrays.deepEquals instead in J2SE 1.5.
+        if (this.values.length == that.values.length) {
+            for (int i=0; i&lt;values.length; i++) {</pre></td></tr>
+<tr><td><pre> * @return A copy of this group of parameter values.
+ */
+public Object clone() {
+<span class="del">    final ParameterValueGroup copy = (ParameterValueGroup) super.clone();</span>
+    copy.values = (GeneralParameterValue[]) copy.values.clone();
+    for (int i=0; i&lt;copy.values.length; i++) {
+        copy.values[i] = (GeneralParameterValue) copy.values[i].clone();</pre></td>
+<td><pre> * @return A copy of this group of parameter values.
+ */
+public Object clone() {
+<span class="add">    final ParameterGroup copy = (ParameterGroup) super.clone();</span>
+    copy.values = (GeneralParameterValue[]) copy.values.clone();
+    for (int i=0; i&lt;copy.values.length; i++) {
+        copy.values[i] = (GeneralParameterValue) copy.values[i].clone();</pre></td></tr>
+<tr><td><pre>        }
+        return copy;
+    }
+}</pre></td>
+<td><pre>        }
+        return copy;
+    }
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Adds a parameter to this group.</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     * If an existing ParameterValue is already included:</span>
+<span class="add">     * &lt;ul&gt;</span>
+<span class="add">     * &lt;li&gt;For maxOccurs == 1, the new parameter will replace the existing parameter.</span>
+<span class="add">     * &lt;li&gt;For maxOccurs &gt; 1, the new parameter will be added</span>
+<span class="add">     * &lt;li&gt;If adding the new parameter will increase the numbe past what</span>
+<span class="add">     * is allowable by maxOccurs an InvalidParameterTypeException will be thrown.</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     *</span>
+<span class="add">     * @param parameter New parameter to be added to this group</span>
+<span class="add">     * @throws InvalidParameterTypeException if adding this parameter</span>
+<span class="add">     *  would result in more parameters than allowed by maxOccurs, or if this</span>
+<span class="add">     *  parameter is not allowable by the groups descriptor</span>
+<span class="add">     */</span>
+<span class="add">    public void add( ParameterValue parameter ) throws InvalidParameterTypeException{</span>
+<span class="add">        add( (GeneralParameterValue) parameter );</span>
+}
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Adds new parameter group to this group.</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     * If an existing ParameterValueGroup is already included:</span>
+<span class="add">     * &lt;ul&gt;</span>
+<span class="add">     * &lt;li&gt;For maxOccurs == 1, the new group will replace the existing group.</span>
+<span class="add">     * &lt;li&gt;For maxOccurs &gt; 1, the new group will be added</span>
+<span class="add">     * &lt;li&gt;If adding the new group will increase the number past what</span>
+<span class="add">     * is allowable by maxOccurs an InvalidParameterTypeException will be thrown.</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     *</span>
+<span class="add">     * @param group New ParameterValueGroup to be added to this group</span>
+<span class="add">     * @throws InvalidParameterTypeException if adding this parameter</span>
+<span class="add">     *  would result in more parameters than allowed by maxOccurs, or if this</span>
+<span class="add">     *  parameter is not allowable by the groups descriptor</span>
+<span class="add">     */</span>
+<span class="add">    public void add( org.opengis.parameter.ParameterValueGroup group ) throws InvalidParameterTypeException {</span>
+<span class="add">        add( (GeneralParameterValue) group );</span>
+<span class="add">    }</span>
+<span class="add">    private synchronized void add( GeneralParameterValue param ){</span>
+<span class="add">        GeneralParameterDescriptor type = param.getDescriptor();</span>
+<span class="add">        if( !Parameters.allowed( (ParameterGroupDescriptor) this.getDescriptor(), type ) ){</span>
+<span class="add">            throw new InvalidParameterTypeException(</span>
+<span class="add">                "Not allowed in ParameterValueGroup:"+type.getName(),</span>
+<span class="add">                type.getName().toString());</span>
+<span class="add">        }</span>
+<span class="add">        final int MIN = type.getMinimumOccurs();</span>
+<span class="add">        final int MAX = type.getMaximumOccurs();</span>
+<span class="add"></span>
+<span class="add">        if( MIN == 0 &amp;&amp; MAX == 1 ){</span>
+<span class="add">            // optional parameter group - we will simply replace what is there</span>
+<span class="add">            int index = Parameters.indexOf( this, type );</span>
+<span class="add">            if(  index == -1 ){</span>
+<span class="add">                addImpl( param );</span>
+<span class="add">            }</span>
+<span class="add">            else {</span>
+<span class="add">                values[ index ] = param;</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add">        else if ( Parameters.count( this, type ) &lt; MAX ){</span>
+<span class="add">            addImpl( param );</span>
+<span class="add">        }</span>
+<span class="add">        else {</span>
+<span class="add">            throw new InvalidParameterTypeException(</span>
+<span class="add">                "Cannot exceed maximum allowed in ParameterValueGroup",</span>
+<span class="add">                type.getName().toString()</span>
+<span class="add">                );</span>
+<span class="add">        }</span>
+<span class="add">    }</span>
+<span class="add">    // Actually perform the add</span>
+<span class="add">    private synchronized void addImpl( GeneralParameterValue param ){</span>
+<span class="add">        final int LENGTH = this.values == null ? 0 : this.values.length;</span>
+<span class="add">        GeneralParameterValue params[] = new GeneralParameterValue[ LENGTH+1 ];</span>
+<span class="add">        if( LENGTH &gt; 0 ){</span>
+<span class="add">            System.arraycopy( this.values, 0, params, 0, LENGTH );</span>
+<span class="add">        }</span>
+<span class="add">        params[ LENGTH ] = param ;</span>
+<span class="add">        this.values = params;</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Convenience method used to locate ParameterValue(s) by descriptor.</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     * This method does not search in subgroups.</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     * @param type ParameterDescriptor used for lookup</span>
+<span class="add">     * @return Array of ParameterValuelength corasponding to cardinality of the descriptor</span>
+<span class="add">     */</span>
+<span class="add">    public ParameterValue[] parameter( ParameterDescriptor parameterType ){</span>
+<span class="add">        List found = Parameters.list( this, parameterType );</span>
+<span class="add">        return (ParameterValue[]) found.toArray( new ParameterValue[ found.size()] );</span>
+<span class="add">    }</span>
+<span class="add">    /**</span>
+<span class="add">     * Convenience method used to locate ParameterValueGroup(s) by descriptor.</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     * This method does not search in subgroups.</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     * @param groupType ParameterGroupDescriptor</span>
+<span class="add">     * @return Array of ParameterValueGroup length corasponding to cardinality of the descriptor</span>
+<span class="add">     */</span>
+<span class="add">    public org.opengis.parameter.ParameterValueGroup[] group( ParameterGroupDescriptor groupType ){</span>
+<span class="add">        List found = Parameters.list( this, groupType );</span>
+<span class="add">        return (org.opengis.parameter.ParameterValueGroup[]) found.toArray( new org.opengis.parameter.ParameterValueGroup[ found.size()] );</span>
+<span class="add">    }</span>
+<span class="add">    /**</span>
+<span class="add">     * Returns Parameter Group using notation similar to list (&lt;name&gt; p1, p2, p3)</span>
+<span class="add">     */</span>
+<span class="add">    public String toString(){</span>
+<span class="add">        String name = descriptor.getName().toString( null );</span>
+<span class="add">        StringBuffer buf = new StringBuffer();</span>
+<span class="add">        buf.append( "(&lt;" );</span>
+<span class="add">        buf.append( descriptor.getName().toString( null ) );</span>
+<span class="add">        buf.append( "&gt; " );</span>
+<span class="add">        for( int i=0; i&lt;values.length;i++){</span>
+<span class="add">            buf.append( values[i] );</span>
+<span class="add">            if( i&lt;values.length){</span>
+<span class="add">                buf.append( ",");</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add">        buf.append(")");</span>
+<span class="add">        return buf.toString();</span>
+<span class="add">    }</span>
+<span class="add">}</span></pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/07857/DefaultParameterValueGroup.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html



Mime
View raw message