package com.alibaba.hsclient.util;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import com.alibaba.hsclient.bean.ResultInfo;
public class HSUtils {
private static final String DEFAULT_ENCODING = "UTF-8";
private String encoding = DEFAULT_ENCODING;
public HSUtils() {
}
public static final boolean isBlank(String s) {
if (s == null || s.trim().length() == 0) {
return true;
}
return false;
}
public HSUtils(String encoding) {
this.encoding = encoding;
}
public byte[] readToken(byte[] data, int index)
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
int idx = index;
while(!(data[idx] == 0x09 || data[idx] == 0x0a))
{
out.write(data[index]);
idx = idx +1;
}
idx = idx+1;
out.toByteArray();
return null;
}
public byte[] filterLeft(byte[] data)
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
int i = 0;
while(i<data.length)
{
if (data[i] == 0x01)
{
out.write(data[i+1]^0x40);
i = i+2;
}
else
{
out.write(data[i]);
i = i+1;
}
}
return out.toByteArray();
}
public ResultInfo parse(byte[] data) throws UnsupportedEncodingException {
ResultInfo result = new ResultInfo();
for (int i = 0; i < data.length;) {
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int errorCode = data[i] - 0x30;
i++;
if (i >= data.length)
break;
if (data[i] != Const.TOKEN_SEPARATOR_BYTE)
throw new RuntimeException(); // TOOD
i++;
if (i >= data.length)
break;// 0x09
int numColumns = data[i] - 0x30;
result.setErrorCode(errorCode);
result.setNumColumns(numColumns);
i++;
if (i >= data.length)
break;
if (data[i] == Const.COMMAND_TERMINATE_BYTE) {
result.addMessages("");
i++;// 0x09 or 0x0a
continue;
} else {
i++;// 0x09 or 0x0a
}
while (true) {
if (data.length <= i)
break;
byte b = data[i];
i++;
if (b == Const.COMMAND_TERMINATE_BYTE) {
result.addMessages(new String(buf.toByteArray(), this.encoding));
break;
}
if (b == Const.TOKEN_SEPARATOR_BYTE) {
result.addMessages(new String(buf.toByteArray(), this.encoding));
buf = new ByteArrayOutputStream();
continue;
}
buf.write(b);
}
}
return result;
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
}