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;
/**
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();
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
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]));