Refactor convertStringToBytes method

This commit is contained in:
Sampo Niskanen 2013-01-06 16:12:12 +02:00
parent e2e509210c
commit 011bcd27e2
3 changed files with 35 additions and 39 deletions

View File

@ -3,7 +3,6 @@ package net.sf.openrocket.file;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.Arrays; import java.util.Arrays;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
@ -28,9 +27,9 @@ public class GeneralRocketLoader extends AbstractRocketLoader {
private static final int READ_BYTES = 300; private static final int READ_BYTES = 300;
private static final byte[] GZIP_SIGNATURE = { 31, -117 }; // 0x1f, 0x8b private static final byte[] GZIP_SIGNATURE = { 31, -117 }; // 0x1f, 0x8b
private static final byte[] ZIP_SIGNATURE = TextUtil.convertStringToBytes("PK",Charset.forName("US-ASCII")); private static final byte[] ZIP_SIGNATURE = TextUtil.asciiBytes("PK");
private static final byte[] OPENROCKET_SIGNATURE = TextUtil.convertStringToBytes("<openrocket",Charset.forName("US-ASCII")); private static final byte[] OPENROCKET_SIGNATURE = TextUtil.asciiBytes("<openrocket");
private static final byte[] ROCKSIM_SIGNATURE = TextUtil.convertStringToBytes("<RockSimDoc",Charset.forName("US-ASCII")); private static final byte[] ROCKSIM_SIGNATURE = TextUtil.asciiBytes("<RockSimDoc");
private final OpenRocketLoader openRocketLoader = new OpenRocketLoader(); private final OpenRocketLoader openRocketLoader = new OpenRocketLoader();
@ -78,7 +77,7 @@ public class GeneralRocketLoader extends AbstractRocketLoader {
OpenRocketDocument doc = loadFromStream(in, motorFinder); OpenRocketDocument doc = loadFromStream(in, motorFinder);
doc.getDefaultStorageOptions().setCompressionEnabled(true); doc.getDefaultStorageOptions().setCompressionEnabled(true);
return doc; return doc;
} else if ( entry.getName().matches(".*\\.[rR][kK][tT]$")) { } else if (entry.getName().matches(".*\\.[rR][kK][tT]$")) {
OpenRocketDocument doc = loadFromStream(in, motorFinder); OpenRocketDocument doc = loadFromStream(in, motorFinder);
return doc; return doc;
} }

View File

@ -13,17 +13,13 @@ public class TextUtil {
}; };
/** /**
* Return the byte array for the string in the given charset. * Return the byte array for the string (in US-ASCII charset).
* *
* This function is implemented because Froyo (Android API 8) does not support * This function is implemented because Froyo (Android API 8) does not support
* String.getBytes(Charset) * String.getBytes(Charset)
*
* @param string
* @param charSet
* @return
*/ */
public static byte[] convertStringToBytes( String string, Charset charSet ) { public static byte[] asciiBytes(String string) {
ByteBuffer encoded = charSet.encode(string); ByteBuffer encoded = Charset.forName("US-ASCII").encode(string);
return encoded.array(); return encoded.array();
} }
@ -188,13 +184,14 @@ public class TextUtil {
/* /*
* Returns a word-wrapped version of given input string using HTML syntax, wrapped to len characters. * Returns a word-wrapped version of given input string using HTML syntax, wrapped to len characters.
*/ */
public static String wrap(String in,int len) { public static String wrap(String in, int len) {
in=in.trim(); in = in.trim();
if(in.length()<len) return in; if (in.length() < len)
if(in.substring(0, len).contains("\n")) return in;
if (in.substring(0, len).contains("\n"))
return in.substring(0, in.indexOf("\n")).trim() + "\n\n" + wrap(in.substring(in.indexOf("\n") + 1), len); return in.substring(0, in.indexOf("\n")).trim() + "\n\n" + wrap(in.substring(in.indexOf("\n") + 1), len);
int place=Math.max(Math.max(in.lastIndexOf(" ",len),in.lastIndexOf("\t",len)),in.lastIndexOf("-",len)); int place = Math.max(Math.max(in.lastIndexOf(" ", len), in.lastIndexOf("\t", len)), in.lastIndexOf("-", len));
return "<html>"+in.substring(0,place).trim()+"<br>"+wrap(in.substring(place),len); return "<html>" + in.substring(0, place).trim() + "<br>" + wrap(in.substring(place), len);
} }
} }

View File

@ -1,8 +1,8 @@
package net.sf.openrocket.util; package net.sf.openrocket.util;
import static java.lang.Math.PI; import static java.lang.Math.PI;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Random; import java.util.Random;
@ -17,19 +17,19 @@ public class TextUtilTest {
Charset us_ascii = Charset.forName("US-ASCII"); Charset us_ascii = Charset.forName("US-ASCII");
byte[] ZIP_SIGNATURE_CORRECT = "PK".getBytes(us_ascii); byte[] ZIP_SIGNATURE_CORRECT = "PK".getBytes(us_ascii);
byte[] ZIP_SIGNATURE_TEST = TextUtil.convertStringToBytes( "PK", us_ascii); byte[] ZIP_SIGNATURE_TEST = TextUtil.asciiBytes("PK");
assertArrayEquals( ZIP_SIGNATURE_CORRECT, ZIP_SIGNATURE_TEST ); assertArrayEquals(ZIP_SIGNATURE_CORRECT, ZIP_SIGNATURE_TEST);
byte[] OPENROCKET_SIGNATURE_CORRECT = "<openrocket".getBytes(us_ascii); byte[] OPENROCKET_SIGNATURE_CORRECT = "<openrocket".getBytes(us_ascii);
byte[] OPENROCKET_SIGNATURE_TEST = TextUtil.convertStringToBytes( "<openrocket", us_ascii); byte[] OPENROCKET_SIGNATURE_TEST = TextUtil.asciiBytes("<openrocket");
assertArrayEquals( OPENROCKET_SIGNATURE_CORRECT, OPENROCKET_SIGNATURE_TEST); assertArrayEquals(OPENROCKET_SIGNATURE_CORRECT, OPENROCKET_SIGNATURE_TEST);
byte[] ROCKSIM_SIGNATURE_CORRECT = "<RockSimDoc".getBytes(us_ascii); byte[] ROCKSIM_SIGNATURE_CORRECT = "<RockSimDoc".getBytes(us_ascii);
byte[] ROCKSIM_SIGNATURE_TEST = TextUtil.convertStringToBytes( "<RockSimDoc", us_ascii); byte[] ROCKSIM_SIGNATURE_TEST = TextUtil.asciiBytes("<RockSimDoc");
assertArrayEquals( ROCKSIM_SIGNATURE_CORRECT, ROCKSIM_SIGNATURE_TEST ); assertArrayEquals(ROCKSIM_SIGNATURE_CORRECT, ROCKSIM_SIGNATURE_TEST);
} }
@Test @Test