package soapConnection; import android.util.Log; import java.io.UnsupportedEncodingException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * Created by JettenM on 05.07.2016. */ public class Packet { public DataIdentifier ChatDataIdentifier; public String ChatName; public int SenderPersonOid; public int RecipientPersonOid; public String ChatMessage; public Date MessageTimeStamp; public String Tenant; public boolean IsDelivered; public int ServerseitigeOid; public int ClientseitigeOid; public Packet() { ChatDataIdentifier = DataIdentifier.NULL; ChatMessage = ""; ChatName = SoapConnectionManager.User.getFullName(); Tenant = ""; SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue(); RecipientPersonOid = 0; IsDelivered = false; MessageTimeStamp = Calendar.getInstance().getTime(); } public String getFormattedMessageTimeStamp() { DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); return df.format(MessageTimeStamp); } //Aufbau Message: // die ersten fünf ";" ignorieren // SenderOid;RecipientOid;ClientNameLength;MessageLength;ChatDataIdentifier;ServerseitigeOid;ClientseitigeOid;Tenant;[ClientName][ChatMessage][MessageTimeStamp][IsDelivered] //23;281;20;389;1;38;932[Tenant]; 8 Semikola public Packet(String message) { Log.d("PACKET >>>>>>>>>", message); String[] gesplittet = message.split(";"); String senderPersonOidString = gesplittet[0]; String recipientPersonOidString = gesplittet[1]; String chatNameLengthString = gesplittet[2]; String chatMessageLengthString = gesplittet[3]; String chatIdentifierString = gesplittet[4]; String serverseitigeOidString = gesplittet[5]; String clientseitigeOidString = gesplittet[6]; Tenant = gesplittet[7]; SenderPersonOid = Integer.parseInt(senderPersonOidString); RecipientPersonOid = Integer.parseInt(recipientPersonOidString); ServerseitigeOid = Integer.parseInt(serverseitigeOidString); ClientseitigeOid = Integer.parseInt(clientseitigeOidString); ChatDataIdentifier = DataIdentifier.getEnumValue(Integer.parseInt(chatIdentifierString)); int chatNameLength = Integer.parseInt(chatNameLengthString); int chatMessageLength = Integer.parseInt(chatMessageLengthString); int headerLength = senderPersonOidString.length() + recipientPersonOidString.length() + chatNameLengthString.length() + chatMessageLengthString.length() + chatIdentifierString.length() + Tenant.length() + serverseitigeOidString.length() + clientseitigeOidString.length() + 9; String actualMessage = message.substring(headerLength - 1); ChatName = actualMessage.substring(0, chatNameLength); ChatMessage = actualMessage.substring(chatNameLength, chatMessageLength + chatNameLength); String dateString = actualMessage.substring(chatMessageLength + chatNameLength); DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.GERMAN); try { MessageTimeStamp = df.parse(dateString); } catch (ParseException e) { e.printStackTrace(); } IsDelivered = Integer.parseInt(actualMessage.substring(chatMessageLength + chatNameLength + 19, chatMessageLength + chatNameLength + 20)) != 0; } public byte[] getDataStream() { String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length()+ ";" + ChatDataIdentifier.getValue() + ";" + ServerseitigeOid + ";" + ClientseitigeOid + ";" + Tenant + ";"; dataStreamAsString += ChatName + ChatMessage + getFormattedMessageTimeStamp() + "" + (IsDelivered ? 1 : 0); byte[] blaaah = new byte[dataStreamAsString.length()]; try { blaaah = dataStreamAsString.getBytes("UTF8"); } catch (UnsupportedEncodingException e) { Log.e("Packet.getDataStream", e.getMessage()); } return blaaah; } public void writeToLog() { Log.i("PACKET_LOG", "SenderPersonOid: " + SenderPersonOid + "\nRecipientPersonOid: " + RecipientPersonOid + "\nChatDataIdentifier: " + ChatDataIdentifier.name() + "\nChatName: " + ChatName + "\nChatMessage: " + ChatMessage + "\nTenant: " + Tenant + "\nIsDelivered: " + IsDelivered + "\nMessageTimeStamp: " + MessageTimeStamp + "\nServerseitigeOid: " + ServerseitigeOid + "\nClientseitigeOid: " + ClientseitigeOid); } }