package DBProxy.MySQL.Protocol; import java.util.ArrayList; public class Row extends Packet { public int type = Flags.ROW_TYPE_TEXT; public int colType = Flags.MYSQL_TYPE_VAR_STRING; public ArrayList<Object> data = new ArrayList<Object>(); public Row () {} public Row (String data1) { this.addData(data1); } public void addData(String data) { this.data.add(data); } public Row (String data1, Integer data2) { this.addData(data1); this.addData(data2); } public Row (String data1, long data2) { this.addData(data1); this.addData(data2); } public Row (String data1, float data2) { this.addData(data1); this.addData(data2); } public Row (String data1, boolean data2) { this.addData(data1); this.addData(data2); } public Row (String data1, String data2) { this.addData(data1); this.addData(data2); } public void addData(Integer data) { this.data.add(Integer.toString(data)); } public void addData(long data) { this.data.add(String.valueOf(data)); } public void addData(float data) { this.data.add(String.valueOf(data)); } public void addData(boolean data) { this.data.add(String.valueOf(data)); } // Add other addData for other types here public ArrayList<byte[]> getPayload() { ArrayList<byte[]> payload = new ArrayList<byte[]>(); for (Object obj: this.data) { switch (this.type) { case Flags.ROW_TYPE_TEXT: if (obj instanceof String) payload.add(Proto.build_lenenc_str((String)obj)); else if (obj instanceof Integer || obj == null) payload.add(Proto.build_lenenc_int((Integer)obj)); else { // trigger error } break; case Flags.ROW_TYPE_BINARY: break; default: break; } } return payload; } public static Row loadFromPacket(byte[] packet) { Row obj = new Row(); Proto proto = new Proto(packet, 3); obj.sequenceId = proto.get_fixed_int(1); return obj; } }