dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #23811
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11603: Map generation, impl utility method for generating width and height
------------------------------------------------------------
revno: 11603
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2013-08-07 15:03:17 +0200
message:
Map generation, impl utility method for generating width and height
added:
dhis-2/dhis-services/dhis-service-mapgeneration/src/test/java/org/hisp/dhis/mapgenerator/MapUtilsTest.java
modified:
dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/MapUtils.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/MapUtils.java'
--- dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/MapUtils.java 2013-07-18 17:16:22 +0000
+++ dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/MapUtils.java 2013-08-07 13:03:17 +0000
@@ -196,6 +196,45 @@
return image;
}
+
+ /**
+ * Calcuates the width and height of an two-dimensional area. If width is set,
+ * the width will be used and the height will be calculated. If the height is
+ * set, the height will be used and the width will be calculated. If both width
+ * and height are set: If area is higher than wider, the height will be used
+ * and the width calculated; if the area is wider than higher, the width will
+ * be used and the height calculated.
+ *
+ * @param maxWidth the maximum width.
+ * @param maxHeight the maxium height.
+ * @param widthToHeightFactor the width to height factor.
+ * @return array where first position holds the width and second the height.
+ * @throws IllegalArgumentException if none of width and height are specified.
+ */
+ public static int[] getWidthHeight( Integer maxWidth, Integer maxHeight, double widthToHeightFactor )
+ {
+ if ( maxWidth == null && maxHeight == null )
+ {
+ throw new IllegalArgumentException( "At least one of width and height must be specified" );
+ }
+
+ boolean high = widthToHeightFactor < 1d;
+ boolean bothSpanSet = maxWidth != null && maxHeight != null;
+
+ if ( maxWidth == null || ( bothSpanSet && high ) )
+ {
+ maxWidth = (int) Math.ceil( maxHeight * widthToHeightFactor );
+ }
+
+ if ( maxHeight == null || ( bothSpanSet && !high ) )
+ {
+ maxHeight = (int) Math.ceil( maxWidth / widthToHeightFactor );
+ }
+
+ int[] result = { maxWidth, maxHeight };
+
+ return result;
+ }
/**
* Creates a feature layer based on a map object.
=== added file 'dhis-2/dhis-services/dhis-service-mapgeneration/src/test/java/org/hisp/dhis/mapgenerator/MapUtilsTest.java'
--- dhis-2/dhis-services/dhis-service-mapgeneration/src/test/java/org/hisp/dhis/mapgenerator/MapUtilsTest.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-mapgeneration/src/test/java/org/hisp/dhis/mapgenerator/MapUtilsTest.java 2013-08-07 13:03:17 +0000
@@ -0,0 +1,61 @@
+package org.hisp.dhis.mapgenerator;
+
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+import static org.hisp.dhis.mapgeneration.MapUtils.*;
+
+public class MapUtilsTest
+{
+ @Test
+ public void testGetWidthHeight()
+ {
+ assertEquals( 150, getWidthHeight( 200, 300, 0.5 )[0] );
+ assertEquals( 300, getWidthHeight( 200, 300, 0.5 )[1] );
+ assertEquals( 200, getWidthHeight( 200, 300, 2 )[0] );
+ assertEquals( 100, getWidthHeight( 200, 300, 2 )[1] );
+
+ assertEquals( 200, getWidthHeight( 200, null, 0.5 )[0] );
+ assertEquals( 400, getWidthHeight( 200, null, 0.5 )[1] );
+ assertEquals( 200, getWidthHeight( 200, null, 2 )[0] );
+ assertEquals( 100, getWidthHeight( 200, null, 2 )[1] );
+
+ assertEquals( 150, getWidthHeight( null, 300, 0.5 )[0] );
+ assertEquals( 300, getWidthHeight( null, 300, 0.5 )[1] );
+ assertEquals( 600, getWidthHeight( null, 300, 2 )[0] );
+ assertEquals( 300, getWidthHeight( null, 300, 2 )[1] );
+ }
+
+ @Test( expected = IllegalArgumentException.class )
+ public void testGetWidthHeightIllegalArgument()
+ {
+ getWidthHeight( null, null, 0.5 );
+ }
+}