=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/xml/Util.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/xml/Util.java 2012-03-23 16:01:51 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/xml/Util.java 2013-07-17 21:21:33 +0000 @@ -1,11 +1,5 @@ package org.hisp.dhis.importexport.xml; -import java.text.NumberFormat; -import java.text.ParseException; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.Locale; - /* * Copyright (c) 2004-2005, University of Oslo * All rights reserved. @@ -33,18 +27,23 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.text.NumberFormat; +import java.text.ParseException; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.Locale; + +import org.apache.commons.math.util.MathUtils; + /** * * @author bobj - * - * Some static helper functions - * */ public class Util { /** * Compensating for Excel wonky storage for dates - * + * * @param xltimestr the number of days since 1/1/1900 as undertood by excel * @return */ @@ -69,28 +68,30 @@ } /** - * Tokenizer to convert coordinates in GML to a sequence of nnn,nnn + * Tokenizer to convert coordinates in GML to a sequence of + * nnn,nnn + * * @param coordinates * @return */ - public static String gmlToCoords(String coordinates, String decimalPlacesAsString) - throws ParseException + public static String gmlToCoords( String coordinates, String decimalPlacesAsString ) + throws ParseException { - NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH); + NumberFormat nf = NumberFormat.getInstance( Locale.ENGLISH ); + + int decimals = Integer.parseInt( decimalPlacesAsString ); - int decimalPlaces = Integer.parseInt( decimalPlacesAsString); - String formatString = "%."+decimalPlaces+"f,%."+decimalPlaces+"f"; StringBuilder sb = new StringBuilder(); - String[] coords = coordinates.split( "\\s"); + String[] coords = coordinates.split( "\\s" ); - for (String coordAsString : coords) + for ( String coordAsString : coords ) { - String[] latlon = coordAsString.split( ","); + String[] latlon = coordAsString.split( "," ); double lat = nf.parse( latlon[0] ).doubleValue(); double lon = nf.parse( latlon[1] ).doubleValue(); - sb.append( ""); - sb.append( String.format(formatString, lat, lon)); - sb.append( ""); + sb.append( "" ); + sb.append( MathUtils.round( lat, decimals ) + "," + MathUtils.round( lon, decimals ) ); + sb.append( "" ); } return sb.toString(); === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/xml/UtilTest.java' --- dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/xml/UtilTest.java 2013-07-17 20:56:02 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/test/java/org/hisp/dhis/importexport/xml/UtilTest.java 2013-07-17 21:21:33 +0000 @@ -27,31 +27,24 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.text.ParseException; import org.junit.Assert; import org.junit.Test; /** - * * @author bobj */ -public class UtilTest { - +public class UtilTest +{ @Test public void testCoords() + throws Exception { - String src = "34.5,65,7 1234.67890,0.0056"; + String src = "34.5,65,7 1234.67890,0.0056 451.23,-0.232561"; String decimals = "4"; - - String expected = "34.5000,65.00001234.6789,0.0056"; - - try - { - String result = Util.gmlToCoords( src, decimals ); - Assert.assertEquals( expected, result ); - } catch ( ParseException ex ) - { - Assert.fail( ex.getMessage() ); - } + + String expected = "34.5,65.01234.6789,0.0056451.23,-0.2326"; + + String result = Util.gmlToCoords( src, decimals ); + Assert.assertEquals( expected, result ); } }