diff --git a/Android/BewoMitarbeiterApp/app/app.iml b/Android/BewoMitarbeiterApp/app/app.iml
index 2a56acebd..f88277d2a 100644
--- a/Android/BewoMitarbeiterApp/app/app.iml
+++ b/Android/BewoMitarbeiterApp/app/app.iml
@@ -96,6 +96,7 @@
+
diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java
index c58208ded..362b2bc15 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java
+++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java
@@ -4,6 +4,7 @@ import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
@@ -17,6 +18,7 @@ import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
+import android.util.Base64;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -31,27 +33,38 @@ import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
+import javax.crypto.NoSuchPaddingException;
+
import soapConnection.DataIdentifier;
import soapConnection.Packet;
-import soapConnection.SoapConnectionManager;
+
+import util.SecurityUtils;
+import util.Util;
/**
* Created by bib on 03.05.2016.
*/
public class ChatActivity extends ActionBarActivity{
+ private static final String LOG_TAG = "CHAT";
+
//View Variablen
protected TextView chat;
protected EditText text;
@@ -59,20 +72,18 @@ public class ChatActivity extends ActionBarActivity{
//Server Variablen
public static Socket socket;
- protected static final String dstAddress = "192.168.1.103"; //10.0.2.2"
- protected static final int dstPort = 5000;
- DataOutputStream st;
+ DataOutputStream socketOutputStream;
- String SaveCompleteMS;
+ String saveCompleteMessage;
- BufferedReader in = null;
+// BufferedReader inputReader = null;
//Design View
protected ListView listView;
protected boolean isMe = true;
- protected List chatMessages;
- protected ArrayAdapter adapter;
- ChatMessageFormat chatMessage;
+ public static List chatMessages;
+ public static ArrayAdapter adapter;
+ public static ChatMessageFormat chatMessage;
Thread currentlisten;
@@ -119,22 +130,12 @@ public class ChatActivity extends ActionBarActivity{
titlepic.setImageBitmap(GetCircleBitmap(customerImage));
}
- //Online Status listener
- /* ImageView img = (ImageView) mCustomView.findViewById(R.id.status);
- img.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- ChatActivity.this.openOptionsMenu(); // activity's onCreateOptionsMenu gets called
- //optionsMenu.performIdentifierAction(R.id., 0);
- }
- });*/
-
titlename.setText(name);
action.setCustomView(mCustomView);
action.setDisplayShowCustomEnabled(true);
senden = (Button)findViewById(R.id.Sendebutton);
- //chat = (TextView)findViewById(R.id.ChatText);
chatMessages = new ArrayList<>();
@@ -144,26 +145,25 @@ public class ChatActivity extends ActionBarActivity{
listView.setAdapter(adapter);
try {
-
-
socket = MainActivityMitarbeiter.socket;
- in = MainActivityMitarbeiter.in;
- //nachricht an server senden welcher name jetz aktiv connected ist
- st = new DataOutputStream(socket.getOutputStream());
- }catch(Exception e){/*Fail*/}
+ MainActivityMitarbeiter.Test();
+ Log.i("CHAT", "listen is still alive: " + MainActivityMitarbeiter.listen.isAlive());
+
+ socketOutputStream = new DataOutputStream(socket.getOutputStream());
+
+ } catch(Exception e){
+ Log.e("CHAT_ERROR", "Fehler bei der Socket-Erstellung: " + e.getMessage());
+ }
- // MainActivityMitarbeiter.listen.interrupt();
- // MainActivityMitarbeiter.listen = null;
CreateFile();
ReadMessageToStorage();
-
//Öffnet eine Verbindung zum Server
- // new Thread(new OpenConnection()).start();
+ //new Thread(new OpenConnection()).start();
text = (EditText)findViewById(R.id.editText);
@@ -175,12 +175,12 @@ public class ChatActivity extends ActionBarActivity{
//isMe = true;
- if(text.getText().toString().equals("exit")){
+ if(text.getText().toString().equals("exit")) {
//eine möglich keit die connection zu schließen
// new Thread(new ConnectionClose()).start();
- }else if(!text.getText().toString().equals("")){
+ } else if(!text.getText().toString().equals("")) {
new Thread(new MessageSender()).start();
- }else{
+ } else {
Toast.makeText(ChatActivity.this, "Sie müssen schon Text eingeben ", Toast.LENGTH_SHORT).show();
}
}
@@ -191,63 +191,54 @@ public class ChatActivity extends ActionBarActivity{
t.start();
//MainActivityMitarbeiter.listen.sus
+ //sharedpreferences = true;
+
+ SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putBoolean("IsInChatActivity", true);
+ editor.commit();
}
- /*public class OpenConnection implements Runnable{
- public void run(){
- try {
- socket = new Socket(dstAddress,dstPort);
- // Log.v("Status: ","Vorhanden 3");
-
- //nachricht an server senden welcher name jetz aktiv connected ist
- dataOutputStream = new DataOutputStream(socket.getOutputStream());
- name=name+"/1";
- byte[] ts = name.getBytes();
- dataOutputStream.write(ts);
- dataOutputStream.flush();
-
- } catch (Exception e) {
- // e.printStackTrace();
- Log.v("Connection: ","Konnte nicht Aufgebaut");
- socket = null;
- //methode zur abfrage
-
- }
- }
- }*/
-
public class MessageSender implements Runnable{
public void run(){
- String al = text.getText().toString();
-
- byte[] ts = al.getBytes();
-
-
- //TODO: Packet erstellen
- //ChatActivity.
-
try{
- if(socket!= null ) {
+ Log.i(LOG_TAG, "Sende Nachricht...");
+
+ if(socket != null ) {
+
+ Log.d(LOG_TAG, "Ist der Socket mit dem Server Verbunden: " + (socket.isConnected()));
+
Packet p = new Packet();
p.ChatMessage = text.getText().toString();
- p.SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue();
p.ChatDataIdentifier = DataIdentifier.MESSAGE;
- p.ChatName = SoapConnectionManager.User.getFullName();
p.RecipientPersonOid = personOid;
- st.write(p.GetDataStream());
- st.flush();
+ SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0);
+
+ byte[] tenantByteArray = Base64.decode(settings.getString(Util.PREFS_TENANT_KEY, null), Base64.DEFAULT);
+ ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray);
+
+ p.Tenant = SecurityUtils.decrypt(tenantStream).toString();
+
+ socketOutputStream.write(p.GetDataStream());
+ socketOutputStream.flush();
+ }
+ else {
+ Log.i("SEND_CHAT_MESSAGE","Socket ist null");
}
// Update der GUI
listView.post(new Runnable() {
@Override
public void run() {
+
+ Log.i(LOG_TAG, "Führe GUI-Update durch...");
+
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
String formattedDate = df.format(c.getTime());
- SaveCompleteMS = text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n";
+ saveCompleteMessage = text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n";
WriteMessagesfromStorage(text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n");
@@ -256,113 +247,73 @@ public class ChatActivity extends ActionBarActivity{
adapter.notifyDataSetChanged();
text.setText("");
-
}
});
}catch(IOException s){
Log.v("Status: ","Senden einer Nachricht konnte nicht ausgeführt werden. Save wird ausgeführt");
- SaveAfterLoseConnection(SaveCompleteMS);
+ SaveAfterLoseConnection(saveCompleteMessage);
s.printStackTrace();
+ } catch (NoSuchPaddingException | InvalidAlgorithmParameterException | NoSuchAlgorithmException | InvalidKeyException e) {
+ e.printStackTrace();
}
}
}
- /* public class ConnectionClose implements Runnable{
- public void run(){
- try {
- // Log.v("Bin ich Überhaupt", "Hier drinne");
- if (dataOutputStream != null) {
- dataOutputStream.flush();
- dataOutputStream.close();
- }
- if (socket != null)
- socket = null;
- // Log.v("Schliesen :","?? Möglich");
- // }
- Log.v("Status","Socket succesfull closed");
- }catch(IOException se){
- Log.v("Status: ","Schließen nicht möglich. Es ist ein Fehler aufgetreten");
- }
- }
- }*/
-
// Erhalte Messages all the time
public class SocketListener implements Runnable{
- String str;
- long i = 1;
- //BufferedReader in = null;
+ Packet chatPacket;
+
public void run(){
try{
- //DesignTechnische gründe
- Log.v("Komme","ICh den Rein");
while(true){
-
if (socket != null) {
- Log.v("Komme","So wie es aussieht nicht ");
if(socket.isConnected()) {
- Log.v("Connection Steht ", "Connection Steht");
- Log.v("Komme","So wie es aussieht nicht2 ");
- //final TextView text = (TextView)findViewById(R.id.ChatText);
-
final ListView listV = (ListView) findViewById(R.id.list_msg);
- Log.v("Komme","So wie es aussieht nicht 3");
- // in = new BufferedReader(new InputStreamReader(MainActivityMitarbeiter.socket.getInputStream()));
+ InputStream stream = socket.getInputStream();
- /*---> da wird das pendant ausgeführt und nicht dieses */ String s = in.readLine();
- Log.v("Komme","So wie es aussieht nicht 4");
- CharSequence cs = text.getText();
+ int size = stream.available();
- // wir nehmen mal cs raus
- //str = cs + "\r\n" + s;
- str = s;
+ if(size == 0) {
+ continue;
+ }
- if (s == null)
- break;
+ Log.i("", "");
+
+ StringBuilder total = new StringBuilder(stream.available());
+
+ int counter = 0;
+
+ while(counter < size) {
+
+ char c = (char) stream.read();
+ total.append(c);
+
+ counter++;
+ }
+
+ chatPacket = new Packet(total.toString());
- //Design Spezifisch
listV.post(new Runnable() {
@Override
public void run() {
- Calendar c = Calendar.getInstance();
- SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
- String formattedDate = df.format(c.getTime());
+ WriteMessagesfromStorage(chatPacket.ChatMessage + "/" + false + "%" + chatPacket.getFormattedMessageTimeStamp() + "\n");
- boolean determind = false;
-
- WriteMessagesfromStorage(str+"/"+determind+"%"+formattedDate+"\n");
-
- chatMessage = new ChatMessageFormat(str, determind, formattedDate);
+ chatMessage = new ChatMessageFormat(chatPacket.ChatMessage, false, chatPacket.getFormattedMessageTimeStamp());
chatMessages.add(chatMessage);
adapter.notifyDataSetChanged();
-
- Log.v("","");
-
- if(isOnStop == true){
- SetNotify("Bärtiger Hanz",str);
- }
-
}
});
-
- i++;
+ } else {
+ Log.i("SOCKETLISTENER/CHAT", "Nicht mit dem Socket verbunden");
}
- } else {
-
- if (in != null)
- in.close();
}
-
- // else Log.v("Connection","nicht aufgebaut"); nach tausend versuchen break und fehler ausgabe
-
}
}catch(Exception e){
- Log.v("Status ","Verbindung zum Server wurde seitens dem Server getrennt ");
- // Log.e(getClass().getName(),e.getMessage());
- // e.printStackTrace();
+ Log.e("Status ","Verbindung zum Server wurde seitens dem Server getrennt ");
}
}
}
@@ -433,11 +384,11 @@ public class ChatActivity extends ActionBarActivity{
byte[] ts = al.getBytes();
try {
- if (socket != null && st != null) {
+ if (socket != null && socketOutputStream != null) {
//try catch bei catch SaveAfterLoseConnection();
- st.write(ts);
- st.flush();
+ socketOutputStream.write(ts);
+ socketOutputStream.flush();
}
}catch(Exception xs){
@@ -518,9 +469,12 @@ public class ChatActivity extends ActionBarActivity{
}
public void onResume() {
- isOnStop = false;
+ SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putBoolean("IsInChatActivity", true);
+ editor.commit();
super.onResume();
}
@@ -529,9 +483,12 @@ public class ChatActivity extends ActionBarActivity{
// Thread t = new Thread(new ConnectionClose());
// t.start();
+ SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putBoolean("IsInChatActivity", false);
+ editor.commit();
- isOnStop = true;
super.onStop();
}
@@ -539,7 +496,10 @@ public class ChatActivity extends ActionBarActivity{
// Thread t = new Thread(new ConnectionClose());
// t.start();
// currentlisten = null;
-
+ SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putBoolean("IsInChatActivity", false);
+ editor.commit();
super.onDestroy();
}
diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java
index 005ea57cf..fc3df8b4d 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java
+++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java
@@ -5,9 +5,11 @@ import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.graphics.Color;
import android.support.v4.app.NotificationCompat;
import android.os.Bundle;
+import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -15,11 +17,12 @@ import android.view.View;
import android.widget.Button;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.InputStream;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@@ -31,6 +34,9 @@ import soapConnection.Packet;
import soapConnection.SoapCalls;
import soapConnection.SoapConnectionManager;
+import util.SecurityUtils;
+import util.Util;
+
public class MainActivityMitarbeiter extends Activity {
@@ -39,10 +45,8 @@ public class MainActivityMitarbeiter extends Activity {
protected Button logoutbutton;
public static Socket socket;
- protected static final String dstAddress = SoapCalls.DESTINATION_ADDRESS;
- protected static final int dstPort = 5000;
DataOutputStream dataOutputStream;
- public static BufferedReader in = null;
+// public static BufferedReader inputReader = null;
//Name, der Zum Server gesendet wird
protected String name;
@@ -55,7 +59,7 @@ public class MainActivityMitarbeiter extends Activity {
File Unsendfile;
public static Thread listen;
-
+ public static SocketListener socketListener;
//Für Notification
private static boolean isOnStop = false;
@@ -139,7 +143,7 @@ public class MainActivityMitarbeiter extends Activity {
public class OpenConnection implements Runnable{
public void run(){
try {
- socket = new Socket(dstAddress, dstPort);
+ socket = new Socket(SoapCalls.DESTINATION_ADDRESS, SoapCalls.DESTINATION_PORT);
Log.d("OpenConnection","Verbindung hergestellt");
SendAfterGetConnection();
@@ -152,7 +156,8 @@ public class MainActivityMitarbeiter extends Activity {
// dataOutputStream.flush();
// Starte SocketListener
- listen = new Thread(new SocketListener());
+ socketListener = new SocketListener();
+ listen = new Thread(socketListener);
listen.start();
} catch (Exception e) {
@@ -174,54 +179,60 @@ public class MainActivityMitarbeiter extends Activity {
}
}
+ public static void Test() {
+ if(listen.isAlive()) {
+ try {
+ socketListener.terminate();
+ listen.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
public class SocketListener implements Runnable {
- String str;
+ private volatile boolean running = true;
+
+ public void terminate() {
+ running = false;
+ }
public void run() {
try {
- while (true) {
+ while (running) {
if (socket != null) {
if (socket.isConnected()) { //----------> isThreadPausabfrage das könnte das Problem mit dem SocketListener vorort beheben
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- Log.v("Connection Steht ", "Message Erhalten");
- String s = in.readLine();
+ InputStream stream = socket.getInputStream();
- String[] splitt = s.split(":");
+ int size = stream.available();
- str = s;
-
- if (s == null) {
- break;
+ if(size == 0) {
+ continue;
}
- Calendar c = Calendar.getInstance();
- SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
- String formattedDate = df.format(c.getTime());
+ StringBuilder total = new StringBuilder(stream.available());
- boolean determind = false;
+ int counter = 0;
- Log.v("MESSAGE",splitt[0]);
- CreateFile(splitt[0]);
+ while(counter < size) {
- Log.v("MESSAGE", "Komme ich in den Save-Bereich hinein");
+ char c = (char) stream.read();
- WriteMessagesfromStorage(splitt[1] + "/" + determind + "%" + formattedDate + "\n");
+ total.append(c);
- SetNotify(splitt[0], splitt[1]);
-
- } else {
- if (in != null) {
- in.close();
+ counter++;
}
+
+ Log.i("MESSAGE/MAIN", "Empfangene Nachricht: " + total.toString());
}
}
}
} catch(Exception e) {
- Log.v("Status ","Verbindung zum Server wurde serverseitig getrennt ");
- // Log.e(getClass().getName(),e.getMessage());
- in = null;
+ Log.e("Listener/Main", "" + e);
+
+ e.printStackTrace();
}
}
}
@@ -238,13 +249,9 @@ public class MainActivityMitarbeiter extends Activity {
socket.close();
}
- if(in != null) {
- in = null;
- }
-
- Log.v("Status","Socket succesfully closed");
+ Log.i("MAIN CONNECTION CLOSE","Socket succesfully closed");
}catch(IOException se){
- Log.v("Fehler Aufgetreten",se.getMessage());
+ Log.e("MAIN ERROR:", se.getMessage());
}
}
}
@@ -274,9 +281,14 @@ public class MainActivityMitarbeiter extends Activity {
if(socket.isConnected()) {
try {
Packet p = new Packet();
- p.ChatName = SoapConnectionManager.User.getFullName();
+
+ SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0);
+
+ byte[] tenantByteArray = Base64.decode(settings.getString(Util.PREFS_TENANT_KEY, null), Base64.DEFAULT);
+ ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray);
+
+ p.Tenant = SecurityUtils.decrypt(tenantStream).toString();
p.ChatDataIdentifier = DataIdentifier.LOGIN;
- p.SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue();
new Thread(new TestMessageSender(p.GetDataStream())).start();
} catch(Exception e) {
diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MessageAdapter.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MessageAdapter.java
index 0dc528f54..cb414821a 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MessageAdapter.java
+++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MessageAdapter.java
@@ -18,8 +18,6 @@ public class MessageAdapter extends ArrayAdapter {
private Activity activity;
private List messages;
-
-
public MessageAdapter(Activity context, int resource, List objects) {
super(context, resource, objects);
this.activity = context;
@@ -36,37 +34,21 @@ public class MessageAdapter extends ArrayAdapter {
ChatMessageFormat chatMessage = getItem(position);
int viewType = getItemViewType(position);
-
-
//Splitt message um zu wissen ob from server oder nicht
- String line = chatMessage.getMessage();
-
- String[] splitt = line.split(":");
+// String line = chatMessage.getMessage();
//Server nachricht kenntlich machen
if (chatMessage.getIsME()) {
layoutResource = R.layout.item_chat_right;
- } else if(splitt[0].equals("Server")) {
- layoutResource = R.layout.item_chat_sever_right;
+// } else if(splitt[0].equals("Server")) {
+// layoutResource = R.layout.item_chat_sever_right;
}else {
layoutResource = R.layout.item_chat_left;
}
-/* Original
- if (chatMessage.getIsME()) {
- layoutResource = R.layout.item_chat_left;
- } else {
- layoutResource = R.layout.item_chat_right;
- }
-*/
- /* if (convertView != null) {
- holder = (ViewHolder) convertView.getTag();
- Log.v("Status","Bin ich hier ?? ");
- } else {*/
convertView = inflater.inflate(layoutResource, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
- //}
//set message content
holder.msg.setText(chatMessage.getMessage());
@@ -74,8 +56,9 @@ public class MessageAdapter extends ArrayAdapter {
//TODO eine weitere option für Chatmessage hinzufügen zum abfragen wegen send Message
- if(holder.send_tick != null)
- holder.send_tick.setText(Html.fromHtml("✓")+""+Html.fromHtml("✓"));
+ if(holder.send_tick != null) {
+ holder.send_tick.setText(Html.fromHtml("✓") + "" + Html.fromHtml("✓"));
+ }
if(chatMessage.getIsME()){
diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java
index 1954e2c01..a875af2a1 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java
+++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java
@@ -7,7 +7,8 @@ public enum DataIdentifier {
MESSAGE(0),
LOGIN(1),
LOGOUT(2),
- NULL(3);
+ NULL(3),
+ STATUS_NOTIFICATION(4);
private final int value;
DataIdentifier(int value) {
@@ -17,4 +18,16 @@ public enum DataIdentifier {
public int getValue() {
return value;
}
+
+ public static DataIdentifier getEnumValue(int pValue) {
+ DataIdentifier[] identifiers = DataIdentifier.values();
+
+ for (DataIdentifier identifier : identifiers) {
+ if (identifier.getValue() == pValue) {
+ return identifier;
+ }
+ }
+
+ return DataIdentifier.NULL;
+ }
}
diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java
index b87bfbff7..6953520da 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java
+++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java
@@ -4,7 +4,13 @@ import android.util.Log;
import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
+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.
@@ -15,29 +21,73 @@ public class Packet {
public int SenderPersonOid;
public int RecipientPersonOid;
public String ChatMessage;
+ public Date MessageTimeStamp;
+ public String Tenant;
public Packet() {
ChatDataIdentifier = DataIdentifier.NULL;
- ChatMessage = null;
- ChatName = null;
- SenderPersonOid = 0;
+ ChatMessage = "";
+ ChatName = SoapConnectionManager.User.getFullName();
+ Tenant = "";
+ SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue();
RecipientPersonOid = 0;
+
+ MessageTimeStamp = Calendar.getInstance().getTime();
}
+ public String getFormattedMessageTimeStamp() {
+ DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
+ return df.format(MessageTimeStamp);
+ }
- public Packet(byte[] dataStream) {
- ChatDataIdentifier = DataIdentifier.values()[ByteBuffer.allocate(4).getInt()];
+ //Aufbau Message:
+ // die ersten fünf ";" ignorieren
+ // SenderOid;RecipientOid;ClientNameLength;MessageLength;ChatDataIdentifier;Tenant;[ClientName][ChatMessage][MessageTimeStamp]
+ //23;281;20;389;1;[Tenant]; 6 Semikola
+ public Packet(String 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];
+ Tenant = gesplittet[5];
+
+ SenderPersonOid = Integer.parseInt(senderPersonOidString);
+ RecipientPersonOid = Integer.parseInt(recipientPersonOidString);
+
+ 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() + 7;
+ 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();
+ }
}
public byte[] GetDataStream() {
- String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length() + ";";
+ String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length()+ ";" + ChatDataIdentifier.getValue() + ";" + Tenant + ";";
- dataStreamAsString += ChatName + ChatMessage;
+ dataStreamAsString += ChatName + ChatMessage + getFormattedMessageTimeStamp();
- byte[] blaaah = new byte[1024];
+ byte[] blaaah = new byte[dataStreamAsString.length()];
try {
blaaah = dataStreamAsString.getBytes("UTF8");
diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java
index e1df45b53..4f4e14be9 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java
+++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java
@@ -9,6 +9,7 @@ public class SoapCalls {
public static String GET_CONTACTS_FOR_PERSON = "GetContactsForPerson";
public static String DESTINATION_ADDRESS = "192.168.1.103";
+ public static int DESTINATION_PORT = 5000;
public static String TOKEN_CHECK_URL = "http://" + DESTINATION_ADDRESS + "/bewoplanermobil/main/checktoken?token=";
diff --git a/Android/BewoMitarbeiterApp/app/src/main/res/layout/chat.xml b/Android/BewoMitarbeiterApp/app/src/main/res/layout/chat.xml
index 1d0c7e89d..4242f512f 100644
--- a/Android/BewoMitarbeiterApp/app/src/main/res/layout/chat.xml
+++ b/Android/BewoMitarbeiterApp/app/src/main/res/layout/chat.xml
@@ -42,6 +42,7 @@
android:id="@+id/editText"
android:hint="@string/hinttxt_chat"
android:padding="10dp"
+ android:maxLength="1024"
/>