r1091 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/spatial tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation
Author: kmorin Date: 2013-06-10 15:40:13 +0200 (Mon, 10 Jun 2013) New Revision: 1091 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1091 Log: fixes #2613 [TRAIT] saisie des lat long ?\195?\160 36.559 se transforme tout seul en 36.533339 Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/spatial/SexagecimalPosition.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/spatial/SexagecimalPosition.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/spatial/SexagecimalPosition.java 2013-06-10 13:16:14 UTC (rev 1090) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/spatial/SexagecimalPosition.java 2013-06-10 13:40:13 UTC (rev 1091) @@ -48,6 +48,8 @@ protected Integer minute; + protected Float decimalMinute; + protected Integer seconde; /** @@ -86,11 +88,27 @@ } /** + * Methode statique de fabrique de position a partir d'une valeur du format + * degre-minute-seconde. + * + * @param d la valeur des degres + * @param dm la valeur des minutes + * @return une nouvelle instance de position convertie + */ + public static SexagecimalPosition valueOf(boolean sign, int d, Float dm) { + SexagecimalPosition r = new SexagecimalPosition(); + r.setSign(sign); + r.setDegre(d); + r.setMinuteDecimale(dm); + return r; + } + + /** * @return {@code true} si aucune composante n'est renseigné, * {@code false} autrement. */ public boolean isNull() { - return degre == null && minute == null && seconde == null; + return degre == null && minute == null && decimalMinute == null && seconde == null; } /** @@ -105,6 +123,7 @@ public void update(Float decimal) { Integer d = null; Integer m = null; + Float dm = null; Integer s = null; boolean si = false; if (decimal != null) { @@ -116,8 +135,9 @@ d = (int) (Math.round(decimal + 0.5) - 1); m = 0; s = 0; - decimal = 60 * (decimal - d); + decimal = 60.0f * (decimal - d); if (decimal > 0) { + dm = decimal; m = (int) (Math.round(decimal + 0.5) - 1); decimal = 60 * (decimal - m); if (decimal > 0) { @@ -139,6 +159,7 @@ } degre = d; minute = m; + decimalMinute = dm; seconde = s; sign = si; } @@ -149,17 +170,23 @@ } Integer d = degre == null ? 0 : degre; Integer m = minute == null ? 0 : minute; + Float dm = decimalMinute; Integer s = seconde == null ? 0 : seconde; Float result = Float.valueOf(d); - if (m > 0) { - result += (float) m / 60; - if (s == 0) { - result += 0.5f / 3600; + if (decimalMinute != null) { + result += dm / 60.0f; + + } else { + if (m > 0) { + result += (float) m / 60; + if (s == 0) { + result += 0.5f / 3600; + } } + if (s > 0) { + result += ((float) s + 0.5f) / 3600; + } } - if (s > 0) { - result += ((float) s + 0.5f) / 3600; - } if (sign) { result *= -1; } @@ -175,14 +202,7 @@ } public Float getMinuteDecimale() { - Float minuteDecimale = null; - if (minute != null) { - minuteDecimale = minute.floatValue(); - if (seconde != null) { - minuteDecimale += seconde.floatValue() / 60; - } - } - return minuteDecimale; + return decimalMinute; } public Integer getSeconde() { @@ -202,16 +222,7 @@ } public void setMinuteDecimale(Float minuteDecimale) { - if (minuteDecimale == null) { - minute = null; - seconde = null; - - } else { - Double entier = Math.floor(minuteDecimale); - minute = entier.intValue(); - Double reste = Math.floor((minuteDecimale - entier) * 60); - seconde = reste.intValue(); - } + this.decimalMinute = minuteDecimale; } public void setSeconde(Integer seconde) { @@ -236,6 +247,7 @@ SexagecimalPosition other = (SexagecimalPosition) obj; return sign == other.sign && ObjectUtils.equals(degre, other) && + ObjectUtils.equals(decimalMinute, other.decimalMinute) && ObjectUtils.equals(minute, other.minute) && ObjectUtils.equals(seconde, other.seconde); @@ -252,7 +264,8 @@ hash = 5 * (sign ? 1 : 0); hash = 7 * hash + (degre != null ? degre.hashCode() : 0); hash = 11 * hash + (minute != null ? minute.hashCode() : 0); - hash = 13 * hash + (seconde != null ? seconde.hashCode() : 0); + hash = 13 * hash + (decimalMinute != null ? decimalMinute.hashCode() : 0); + hash = 17 * hash + (seconde != null ? seconde.hashCode() : 0); return hash; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-06-10 13:16:14 UTC (rev 1090) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-06-10 13:40:13 UTC (rev 1091) @@ -255,7 +255,6 @@ showReset: false; useFloat: true; useSign: false; - numberPattern: {DECIMAL2_DIGITS_PATTERN}; } .second {
participants (1)
-
kmorin@users.forge.codelutin.com