Files
BeWoPlaner/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java
2016-08-05 16:23:58 +02:00

117 lines
4.7 KiB
Java

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);
}
}