Since Froyo doesn't support String.getBytes(Charset), implement a helper function...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 22 Mar 2012 23:15:18 +0000 (23:15 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 22 Mar 2012 23:15:18 +0000 (23:15 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/branches/froyo_12.03@480 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/file/GeneralRocketLoader.java
core/src/net/sf/openrocket/util/TextUtil.java
core/test/net/sf/openrocket/util/TextUtilTest.java

index 775d9eddfa9dc219ce1e3b1a2bbea9ce3398f60f..16f9c9acd748448d1d99fb43837b19667b5cb5ad 100644 (file)
@@ -12,6 +12,7 @@ import java.util.zip.ZipInputStream;
 import net.sf.openrocket.document.OpenRocketDocument;
 import net.sf.openrocket.file.openrocket.importt.OpenRocketLoader;
 import net.sf.openrocket.file.rocksim.importt.RocksimLoader;
+import net.sf.openrocket.util.TextUtil;
 
 
 /**
@@ -26,9 +27,9 @@ public class GeneralRocketLoader extends AbstractRocketLoader {
        private static final int READ_BYTES = 300;
        
        private static final byte[] GZIP_SIGNATURE = { 31, -117 }; // 0x1f, 0x8b
-       private static final byte[] ZIP_SIGNATURE = "PK".getBytes(Charset.forName("US-ASCII"));
-       private static final byte[] OPENROCKET_SIGNATURE = "<openrocket".getBytes(Charset.forName("US-ASCII"));
-       private static final byte[] ROCKSIM_SIGNATURE = "<RockSimDoc".getBytes(Charset.forName("US-ASCII"));
+       private static final byte[] ZIP_SIGNATURE = TextUtil.convertStringToBytes("PK",Charset.forName("US-ASCII"));
+       private static final byte[] OPENROCKET_SIGNATURE = TextUtil.convertStringToBytes("<openrocket",Charset.forName("US-ASCII"));
+       private static final byte[] ROCKSIM_SIGNATURE = TextUtil.convertStringToBytes("<RockSimDoc",Charset.forName("US-ASCII"));
        
        private final OpenRocketLoader openRocketLoader = new OpenRocketLoader();
        
index 32dffd849a4eb0c13cc92d8c1eb613df76e5b327..0189545e0dd7f00810515801b1f5fb6f3d9e3cad 100644 (file)
@@ -1,12 +1,32 @@
 package net.sf.openrocket.util;
 
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+
 
 public class TextUtil {
+
+       
        private static final char[] HEX = {
                        '0', '1', '2', '3', '4', '5', '6', '7',
                        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
        };
-       
+
+       /**
+        * Return the byte array for the string in the given charset.
+        * 
+        * This function is implemented because Froyo (Android API 8) does not support
+        * String.getBytes(Charset)
+        * 
+        * @param string
+        * @param charSet
+        * @return
+        */
+       public static byte[] convertStringToBytes( String string, Charset charSet ) {
+               ByteBuffer encoded = charSet.encode(string);
+               return encoded.array();
+       }
+
        
        /**
         * Return the bytes formatted as a hexadecimal string.  The length of the
index 8ac8319d0aa6b998702aa0cd98fa13dd022f9d64..b880cee0c6a3e84ee094cf9f4dcccd814c1a8147 100644 (file)
@@ -3,12 +3,43 @@ package net.sf.openrocket.util;
 import static java.lang.Math.PI;
 import static org.junit.Assert.assertEquals;
 
+import java.nio.charset.Charset;
 import java.util.Random;
 
 import org.junit.Test;
 
 public class TextUtilTest {
        
+       @Test
+       public void testConvertStringToBytes() {
+               
+               Charset us_ascii = Charset.forName("US-ASCII");
+               
+               byte[] ZIP_SIGNATURE_CORRECT = "PK".getBytes(us_ascii);
+               byte[] ZIP_SIGNATURE_TEST = TextUtil.convertStringToBytes( "PK", us_ascii);
+               
+               assertEquals( ZIP_SIGNATURE_CORRECT.length, ZIP_SIGNATURE_TEST.length );
+               for( int i =0; i< ZIP_SIGNATURE_CORRECT.length; i++ ) {
+                       assertEquals(ZIP_SIGNATURE_CORRECT[i], ZIP_SIGNATURE_TEST[i]);
+               }
+               
+               byte[] OPENROCKET_SIGNATURE_CORRECT = "<openrocket".getBytes(us_ascii);
+               byte[] OPENROCKET_SIGNATURE_TEST = TextUtil.convertStringToBytes( "<openrocket", us_ascii);
+               
+               assertEquals( OPENROCKET_SIGNATURE_CORRECT.length, OPENROCKET_SIGNATURE_TEST.length);
+               for( int i =0; i< OPENROCKET_SIGNATURE_CORRECT.length; i++ ) {
+                       assertEquals(OPENROCKET_SIGNATURE_CORRECT[i], OPENROCKET_SIGNATURE_TEST[i]);
+               }
+               
+               byte[] ROCKSIM_SIGNATURE_CORRECT = "<RockSimDoc".getBytes(us_ascii);
+               byte[] ROCKSIM_SIGNATURE_TEST = TextUtil.convertStringToBytes( "<RockSimDoc", us_ascii);
+               
+               assertEquals( ROCKSIM_SIGNATURE_CORRECT.length, ROCKSIM_SIGNATURE_TEST.length );
+               for( int i =0; i< ROCKSIM_SIGNATURE_CORRECT.length; i++ ) {
+                       assertEquals(ROCKSIM_SIGNATURE_CORRECT[i], ROCKSIM_SIGNATURE_TEST[i]);
+               }
+       }
+       
        @Test
        public void testHexString() {
                assertEquals("", TextUtil.hexString(new byte[0]));