From 5c497a9cc18a9bcd4eb1e015469d1885690adc71 Mon Sep 17 00:00:00 2001 From: staccatomamba Date: Fri, 21 Oct 2016 09:41:14 +0200 Subject: [PATCH] =?UTF-8?q?Packet=20ge=C3=A4ndert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Android/BewoKlientenApp/.idea/.name | 1 - Android/BewoKlientenApp/.idea/gradle.xml | 10 +- Android/BewoKlientenApp/.idea/misc.xml | 2 +- Android/BewoKlientenApp/app/app.iml | 19 +- Android/BewoKlientenApp/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 4 +- Android/BewoMitarbeiterApp/app/app.iml | 22 +- Android/BewoMitarbeiterApp/app/build.gradle | 5 + .../app/src/main/AndroidManifest.xml | 4 +- .../main/java/Database/DatabaseHandler.java | 237 +++++++----- .../BeWoChatApplication.java | 245 +++++++++++- .../bewomitarbeiterapp/ChatActivity.java | 277 ++++++++++++-- .../bewomitarbeiterapp/KontaktAdapter.java | 4 - .../KontaktChatActivity.java | 351 ++++++++++++++++-- .../bewomitarbeiterapp/LoginActivity.java | 101 ++++- .../MainActivityMitarbeiter.java | 185 --------- .../bewomitarbeiterapp/MessageAdapter.java | 23 +- .../src/main/java/entities/ChatMessage.java | 46 ++- .../java/soapConnection/ApplicationUser.java | 2 +- .../java/soapConnection/DataIdentifier.java | 3 +- .../src/main/java/soapConnection/Packet.java | 42 ++- .../main/java/soapConnection/SoapCalls.java | 2 + .../soapConnection/SoapConnectionManager.java | 10 +- .../java/tcpConnection/SocketManager.java | 229 ++++++++++-- .../app/src/main/java/util/BeWoLog.java | 51 +++ .../java/util/ChatMessageDeserializer.java | 11 +- .../main/java/util/ConnectivityReceiver.java | 4 + .../app/src/main/java/util/Util.java | 82 +--- .../app/src/main/katze-web.png | Bin 300159 -> 0 bytes .../noch_nicht_an_server_uebertragen.png | Bin 0 -> 43653 bytes .../activity_main_activity_mitarbeiter.xml | 41 -- .../app/src/main/res/layout/chat.xml | 38 +- .../src/main/res/layout/item_chat_right.xml | 17 +- .../app/src/main/res/layout/splashscreen.xml | 7 +- .../app/src/main/res/values-v21/styles.xml | 2 + .../app/src/main/res/values/styles.xml | 1 + Android/BewoMitarbeiterApp/build.gradle | 2 +- Android/BewoMitarbeiterApp/gradle.properties | 2 +- BeWo/ViewModel/ChatMessageVM.cs | 40 +- BeWoChatServer/Server.cs | 48 ++- BeWoPlanerAndroid/AndroidSoapService.asmx.cs | 24 +- Data/Access/SearchDAO.cs | 35 +- Data/Entities/ChatMessage.cs | 16 + Data/Mappings/ChatMessage.hbm.xml | 29 +- Model/changes 16-10-17.sql | 1 + .../ChatMessageDC_ChatMessage.cs | 14 +- Shared/BeWoEntityEnums.cs | 3 +- Shared/DataContracts/ChatMessageDC.cs | 3 + Shared/Packet.cs | 19 +- 49 files changed, 1630 insertions(+), 686 deletions(-) delete mode 100644 Android/BewoKlientenApp/.idea/.name delete mode 100644 Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java create mode 100644 Android/BewoMitarbeiterApp/app/src/main/java/util/BeWoLog.java delete mode 100644 Android/BewoMitarbeiterApp/app/src/main/katze-web.png create mode 100644 Android/BewoMitarbeiterApp/app/src/main/res/drawable/noch_nicht_an_server_uebertragen.png delete mode 100644 Android/BewoMitarbeiterApp/app/src/main/res/layout/activity_main_activity_mitarbeiter.xml create mode 100644 Model/changes 16-10-17.sql diff --git a/Android/BewoKlientenApp/.idea/.name b/Android/BewoKlientenApp/.idea/.name deleted file mode 100644 index 15e5cf632..000000000 --- a/Android/BewoKlientenApp/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -BewoKlientenApp \ No newline at end of file diff --git a/Android/BewoKlientenApp/.idea/gradle.xml b/Android/BewoKlientenApp/.idea/gradle.xml index 508b3d9b8..fe72da507 100644 --- a/Android/BewoKlientenApp/.idea/gradle.xml +++ b/Android/BewoKlientenApp/.idea/gradle.xml @@ -3,20 +3,16 @@ diff --git a/Android/BewoKlientenApp/.idea/misc.xml b/Android/BewoKlientenApp/.idea/misc.xml index e45faed76..1d9d62604 100644 --- a/Android/BewoKlientenApp/.idea/misc.xml +++ b/Android/BewoKlientenApp/.idea/misc.xml @@ -10,7 +10,7 @@ - + diff --git a/Android/BewoKlientenApp/app/app.iml b/Android/BewoKlientenApp/app/app.iml index c68bbd13b..055cf1a62 100644 --- a/Android/BewoKlientenApp/app/app.iml +++ b/Android/BewoKlientenApp/app/app.iml @@ -32,12 +32,14 @@ + + @@ -64,14 +66,6 @@ - - - - - - - - @@ -80,6 +74,14 @@ + + + + + + + + @@ -92,6 +94,7 @@ + diff --git a/Android/BewoKlientenApp/build.gradle b/Android/BewoKlientenApp/build.gradle index cf01e0df4..b8858c3f1 100644 --- a/Android/BewoKlientenApp/build.gradle +++ b/Android/BewoKlientenApp/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.2' + classpath 'com.android.tools.build:gradle:2.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/Android/BewoKlientenApp/gradle/wrapper/gradle-wrapper.properties b/Android/BewoKlientenApp/gradle/wrapper/gradle-wrapper.properties index e50b62da3..81ed20c8e 100644 --- a/Android/BewoKlientenApp/gradle/wrapper/gradle-wrapper.properties +++ b/Android/BewoKlientenApp/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon May 09 08:53:20 CEST 2016 +#Fri Oct 07 15:42:19 CEST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/Android/BewoMitarbeiterApp/app/app.iml b/Android/BewoMitarbeiterApp/app/app.iml index b3e5de63c..5c1f8f22c 100644 --- a/Android/BewoMitarbeiterApp/app/app.iml +++ b/Android/BewoMitarbeiterApp/app/app.iml @@ -66,14 +66,6 @@ - - - - - - - - @@ -82,11 +74,21 @@ + + + + + + + + + + @@ -97,6 +99,8 @@ + + @@ -109,8 +113,10 @@ + + diff --git a/Android/BewoMitarbeiterApp/app/build.gradle b/Android/BewoMitarbeiterApp/app/build.gradle index 3f2bc31d5..c30208740 100644 --- a/Android/BewoMitarbeiterApp/app/build.gradle +++ b/Android/BewoMitarbeiterApp/app/build.gradle @@ -4,8 +4,13 @@ android { compileSdkVersion 21 buildToolsVersion '23.0.3' + dexOptions { + maxProcessCount 2 + javaMaxHeapSize "2g" + } defaultConfig { applicationId "beyondsoft.bewomitarbeiterapp" + multiDexEnabled true minSdkVersion 18 targetSdkVersion 21 versionCode 1 diff --git a/Android/BewoMitarbeiterApp/app/src/main/AndroidManifest.xml b/Android/BewoMitarbeiterApp/app/src/main/AndroidManifest.xml index c9a4c68fc..ba643d480 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/AndroidManifest.xml +++ b/Android/BewoMitarbeiterApp/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + + + > diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/Database/DatabaseHandler.java b/Android/BewoMitarbeiterApp/app/src/main/java/Database/DatabaseHandler.java index eb4dd7e7d..5166a061c 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/Database/DatabaseHandler.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/Database/DatabaseHandler.java @@ -18,6 +18,7 @@ import java.util.Locale; import beyondsoft.bewomitarbeiterapp.ContactListItem; import entities.ChatMessage; import soapConnection.SoapConnectionManager; +import util.BeWoLog; /** * Created by bib on 07.06.2016. @@ -27,7 +28,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { private static final String LOGTAG = "DATABASE_HANDLER"; //DataBase version - private static final int DATABASE_VERSION = 1; + private static final int DATABASE_VERSION = 8; //Database name private static final String DATABASE_NAME = "Contacts_Manager"; @@ -74,6 +75,21 @@ public class DatabaseHandler extends SQLiteOpenHelper { private static final String KEY_IS_DELIVERED_CHATMESSAGE = "isdelivered"; private static final String KEY_SERVERSEITIGE_OID_CHATMESSAGE = "serverseitigeoid"; private static final String KEY_IS_TEAM_CHATMESSAGE = "isteam"; + private static final String KEY_MESSAGE_ID_CHATMESSAGE = "messageid"; + private static final String KEY_SENDDATE_CHATMESSAGE = "senddate"; + + private static final String[] CHAT_MESSAGE_COLUMNS = new String[] { + KEY_ID_CHATMESSAGE, + KEY_SENDER_PERSON_OID_CHATMESSAGE, + KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, + KEY_INSTS_CHATMESSAGE, + KEY_CHAT_TEXT_CHATMESSAGE, + KEY_IS_DELIVERED_CHATMESSAGE, + KEY_SERVERSEITIGE_OID_CHATMESSAGE, + KEY_IS_TEAM_CHATMESSAGE, + KEY_MESSAGE_ID_CHATMESSAGE, + KEY_SENDDATE_CHATMESSAGE + }; private static DatabaseHandler mInstance = null; @@ -126,7 +142,9 @@ public class DatabaseHandler extends SQLiteOpenHelper { KEY_CHAT_TEXT_CHATMESSAGE + " TEXT," + KEY_IS_DELIVERED_CHATMESSAGE + " INTEGER," + KEY_SERVERSEITIGE_OID_CHATMESSAGE + " INTEGER DEFAULT NULL," + - KEY_IS_TEAM_CHATMESSAGE + " INTEGER DEFAULT 0)"; + KEY_IS_TEAM_CHATMESSAGE + " INTEGER DEFAULT 0," + + KEY_MESSAGE_ID_CHATMESSAGE + " TEXT," + + KEY_SENDDATE_CHATMESSAGE + " DATETIME DEFAULT NULL)"; db.execSQL(createChatMessageTable); @@ -168,23 +186,11 @@ public class DatabaseHandler extends SQLiteOpenHelper { public void addChatMessages(ArrayList messages) { SQLiteDatabase db = this.getWritableDatabase(); - ContentValues values = new ContentValues(); - try { db.beginTransaction(); for(ChatMessage message : messages) { - values.put(KEY_SENDER_PERSON_OID_CHATMESSAGE, message.SenderPersonOid); - values.put(KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, message.RecipientPersonOid); - values.put(KEY_INSTS_CHATMESSAGE, getDateTimeString(message.InsTs)); - values.put(KEY_CHAT_TEXT_CHATMESSAGE, message.ChatText); - values.put(KEY_IS_DELIVERED_CHATMESSAGE, message.IsDelivered ? 1 : 0); - values.put(KEY_SERVERSEITIGE_OID_CHATMESSAGE, message.ServerseitigeOid); - values.put(KEY_IS_TEAM_CHATMESSAGE, message.IsTeam ? 1 : 0); - - db.insertOrThrow(TABLE_CHATMESSAGE, null, values); - - values.clear(); + db.insertOrThrow(TABLE_CHATMESSAGE, null, fillValuesForChatMessage(message)); } db.setTransactionSuccessful(); @@ -211,37 +217,30 @@ public class DatabaseHandler extends SQLiteOpenHelper { values.put(KEY_IS_DELIVERED_CHATMESSAGE, message.IsDelivered ? 1 : 0); values.put(KEY_SERVERSEITIGE_OID_CHATMESSAGE, message.ServerseitigeOid); values.put(KEY_IS_TEAM_CHATMESSAGE, message.IsTeam ? 1 : 0); + values.put(KEY_MESSAGE_ID_CHATMESSAGE, message.MessageId); + values.put(KEY_SENDDATE_CHATMESSAGE, (message.SendDate == null ? null : getDateTimeString(message.SendDate))); return values; } public int updateChatMessage(ChatMessage message) { SQLiteDatabase writableDatabase = this.getWritableDatabase(); - ContentValues values = new ContentValues(); - values.put(KEY_SENDER_PERSON_OID_CHATMESSAGE, message.SenderPersonOid); - values.put(KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, message.RecipientPersonOid); - values.put(KEY_INSTS_CHATMESSAGE, getDateTimeString(message.InsTs)); - values.put(KEY_CHAT_TEXT_CHATMESSAGE, message.ChatText); - values.put(KEY_IS_DELIVERED_CHATMESSAGE, message.IsDelivered ? 1 : 0); - values.put(KEY_SERVERSEITIGE_OID_CHATMESSAGE, message.ServerseitigeOid); - values.put(KEY_IS_TEAM_CHATMESSAGE, message.IsTeam ? 1 : 0); - - return writableDatabase.update(TABLE_CHATMESSAGE, values, KEY_ID_CHATMESSAGE + " = ?", new String[] { String.valueOf(message.Id)}); + return writableDatabase.update(TABLE_CHATMESSAGE, fillValuesForChatMessage(message), KEY_ID_CHATMESSAGE + " = ?", new String[] { String.valueOf(message.Id)}); } - public ArrayList getExistingChatMessageIds() { - ArrayList result = new ArrayList(); + public ArrayList getExistingChatMessageUUIDs() { + ArrayList result = new ArrayList<>(); SQLiteDatabase db = this.getReadableDatabase(); - String selectQuery = "SELECT "+ KEY_SERVERSEITIGE_OID_CHATMESSAGE + " FROM " + TABLE_CHATMESSAGE + " WHERE " + KEY_SERVERSEITIGE_OID_CHATMESSAGE + " <> 0"; + String selectQuery = "SELECT "+ KEY_MESSAGE_ID_CHATMESSAGE + " FROM " + TABLE_CHATMESSAGE + " WHERE " + KEY_MESSAGE_ID_CHATMESSAGE + " IS NOT NULL"; Cursor cursor = db.rawQuery(selectQuery, null); if(cursor.moveToFirst()) { do { - result.add(cursor.getInt(0)); + result.add(cursor.getString(0)); } while(cursor.moveToNext()); } @@ -250,18 +249,18 @@ public class DatabaseHandler extends SQLiteOpenHelper { return result; } - public ArrayList getExistingTeamChatMessageIds() { - ArrayList result = new ArrayList(); + public ArrayList getExistingTeamChatMessageUUIDs() { + ArrayList result = new ArrayList(); SQLiteDatabase db = this.getReadableDatabase(); - String selectQuery = "SELECT " + KEY_SERVERSEITIGE_OID_CHATMESSAGE + " FROM " + TABLE_CHATMESSAGE + " WHERE " + KEY_SERVERSEITIGE_OID_CHATMESSAGE + " <> 0 AND " + KEY_IS_TEAM_CHATMESSAGE + " = 1"; + String selectQuery = "SELECT " + KEY_MESSAGE_ID_CHATMESSAGE + " FROM " + TABLE_CHATMESSAGE + " WHERE " + KEY_MESSAGE_ID_CHATMESSAGE + " IS NOT NULL AND " + KEY_IS_TEAM_CHATMESSAGE + " = 1"; Cursor cursor = db.rawQuery(selectQuery, null); if(cursor.moveToFirst()) { do { - result.add(cursor.getInt(0)); + result.add(cursor.getString(0)); } while(cursor.moveToNext()); } @@ -317,17 +316,8 @@ public class DatabaseHandler extends SQLiteOpenHelper { Cursor cursor = readableDatabase.query( TABLE_CHATMESSAGE, - new String[] { - KEY_ID_CHATMESSAGE, - KEY_SENDER_PERSON_OID_CHATMESSAGE, - KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, - KEY_INSTS_CHATMESSAGE, - KEY_CHAT_TEXT_CHATMESSAGE, - KEY_IS_DELIVERED_CHATMESSAGE, - KEY_SERVERSEITIGE_OID_CHATMESSAGE, - KEY_IS_TEAM_CHATMESSAGE - }, - KEY_ID_CHATMESSAGE + "=?", + CHAT_MESSAGE_COLUMNS, + KEY_ID_CHATMESSAGE + " =? ", new String[]{String.valueOf(id)}, null, null, null, null); @@ -341,10 +331,20 @@ public class DatabaseHandler extends SQLiteOpenHelper { boolean isDelivered = cursor.getInt(5) == 1; int serverseitigeOid = cursor.getInt(6); boolean isTeam = cursor.getInt(7) == 1; + String messageUUID = cursor.getString(8); + + Date sendDate = null; + if(cursor.getString(9) != null) { + sendDate = getDateFromString(cursor.getString(9)); + } cursor.close(); - return new ChatMessage(messageId, senderPersonOid, recipientPersonOid, insTs, chatText, isDelivered, serverseitigeOid, isTeam); + ChatMessage result = new ChatMessage(messageId, senderPersonOid, recipientPersonOid, insTs, chatText, isDelivered, serverseitigeOid, isTeam, messageUUID); + + result.SendDate = sendDate; + + return result; } return null; @@ -357,23 +357,14 @@ public class DatabaseHandler extends SQLiteOpenHelper { Cursor cursor = readableDatabase.query( TABLE_CHATMESSAGE, - new String[] { - KEY_ID_CHATMESSAGE, - KEY_SENDER_PERSON_OID_CHATMESSAGE, - KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, - KEY_INSTS_CHATMESSAGE, - KEY_CHAT_TEXT_CHATMESSAGE, - KEY_IS_DELIVERED_CHATMESSAGE, - KEY_SERVERSEITIGE_OID_CHATMESSAGE, - KEY_IS_TEAM_CHATMESSAGE - }, - KEY_IS_TEAM_CHATMESSAGE + " = 0 AND " + + CHAT_MESSAGE_COLUMNS, + KEY_IS_TEAM_CHATMESSAGE + " = 0 AND ((" + KEY_SENDER_PERSON_OID_CHATMESSAGE + "=? AND " + - KEY_RECIPIENT_PERSON_OID_CHATMESSAGE + "=? OR " + + KEY_RECIPIENT_PERSON_OID_CHATMESSAGE + "=?) OR (" + KEY_RECIPIENT_PERSON_OID_CHATMESSAGE + "=? AND " + - KEY_SENDER_PERSON_OID_CHATMESSAGE + "=?" + KEY_SENDER_PERSON_OID_CHATMESSAGE + "=?))" , - new String[] {String.valueOf(SoapConnectionManager.User.getPersonOid()), String.valueOf(recipientOid), String.valueOf(SoapConnectionManager.User.getPersonOid()), String.valueOf(recipientOid)}, + new String[] {String.valueOf(SoapConnectionManager.getUser().getPersonOid()), String.valueOf(recipientOid), String.valueOf(SoapConnectionManager.getUser().getPersonOid()), String.valueOf(recipientOid)}, null, null, null, null); if(cursor.moveToFirst()) { @@ -386,9 +377,14 @@ public class DatabaseHandler extends SQLiteOpenHelper { cursor.getString(4), cursor.getInt(5) == 1, cursor.getInt(6), - cursor.getInt(7) == 1 + cursor.getInt(7) == 1, + cursor.getString(8) ); + if(cursor.getString(9) != null) { + message.SendDate = getDateFromString(cursor.getString(9)); + } + messages.add(message); } while(cursor.moveToNext()); } @@ -405,7 +401,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { Cursor cursor = readableDatabase.query( TABLE_CHATMESSAGE, - new String[] {KEY_ID_CHATMESSAGE, KEY_SENDER_PERSON_OID_CHATMESSAGE, KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, KEY_INSTS_CHATMESSAGE, KEY_CHAT_TEXT_CHATMESSAGE, KEY_IS_DELIVERED_CHATMESSAGE, KEY_SERVERSEITIGE_OID_CHATMESSAGE, KEY_IS_TEAM_CHATMESSAGE}, + CHAT_MESSAGE_COLUMNS, KEY_RECIPIENT_PERSON_OID_CHATMESSAGE + "=? AND " + KEY_IS_TEAM_CHATMESSAGE + "= 1", new String[] {String.valueOf(teamOid)}, null, null, null, null); @@ -420,9 +416,14 @@ public class DatabaseHandler extends SQLiteOpenHelper { cursor.getString(4), cursor.getInt(5) == 1, cursor.getInt(6), - cursor.getInt(7) == 1 + cursor.getInt(7) == 1, + cursor.getString(8) ); + if(cursor.getString(9) != null) { + message.SendDate = getDateFromString(cursor.getString(9)); + } + messages.add(message); } while(cursor.moveToNext()); } @@ -513,9 +514,14 @@ public class DatabaseHandler extends SQLiteOpenHelper { cursor.getString(4), cursor.getInt(5) == 1, cursor.getInt(6), - cursor.getInt(7) == 1 + cursor.getInt(7) == 1, + cursor.getString(8) ); + if(cursor.getString(9) != null) { + message.SendDate = getDateFromString(cursor.getString(9)); + } + result.add(message); } while(cursor.moveToNext()); @@ -612,46 +618,30 @@ public class DatabaseHandler extends SQLiteOpenHelper { return null; } - public boolean GetIsMessageInDatabase(int pServerseitigeOid) { - + public boolean GetIsMessageInDatabase(String pMessageId) { SQLiteDatabase readableDatabase = this.getReadableDatabase(); Cursor cursor = readableDatabase.query(TABLE_CHATMESSAGE, - new String[] { - KEY_ID_CHATMESSAGE, - KEY_SENDER_PERSON_OID_CHATMESSAGE, - KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, - KEY_INSTS_CHATMESSAGE, - KEY_CHAT_TEXT_CHATMESSAGE, - KEY_IS_DELIVERED_CHATMESSAGE, - KEY_SERVERSEITIGE_OID_CHATMESSAGE, - KEY_IS_TEAM_CHATMESSAGE - }, - KEY_SERVERSEITIGE_OID_CHATMESSAGE + " =?", - new String[] {String.valueOf(pServerseitigeOid)}, + CHAT_MESSAGE_COLUMNS, + KEY_MESSAGE_ID_CHATMESSAGE + " =? ", + new String[] {pMessageId}, null, null, null, null); return cursor != null && cursor.moveToFirst(); } public ArrayList getUnsentChatMessages() { + BeWoLog.writeToLogFile("Lade unverschickte Nachrichten aus der Datenbank. (getUnsentMessages)"); + ArrayList messages = new ArrayList<>(); SQLiteDatabase readableDatabase = this.getReadableDatabase(); - Cursor cursor = readableDatabase.query(TABLE_CHATMESSAGE, - new String[] { - KEY_ID_CHATMESSAGE, - KEY_SENDER_PERSON_OID_CHATMESSAGE, - KEY_RECIPIENT_PERSON_OID_CHATMESSAGE, - KEY_INSTS_CHATMESSAGE, - KEY_CHAT_TEXT_CHATMESSAGE, - KEY_IS_DELIVERED_CHATMESSAGE, - KEY_SERVERSEITIGE_OID_CHATMESSAGE, - KEY_IS_TEAM_CHATMESSAGE - }, - KEY_IS_DELIVERED_CHATMESSAGE + " =? AND " + KEY_SENDER_PERSON_OID_CHATMESSAGE + " =?", - new String[] {String.valueOf(0), String.valueOf(SoapConnectionManager.User.getPersonOid())}, null, null, null, null); + Cursor cursor = readableDatabase.query( + TABLE_CHATMESSAGE, + CHAT_MESSAGE_COLUMNS, + KEY_IS_DELIVERED_CHATMESSAGE + " =? AND " + KEY_SENDER_PERSON_OID_CHATMESSAGE + " =? ", + new String[] {String.valueOf(0), String.valueOf(SoapConnectionManager.getUser().getPersonOid())}, null, null, null, null); if(cursor.moveToFirst()) { do{ @@ -663,9 +653,16 @@ public class DatabaseHandler extends SQLiteOpenHelper { cursor.getString(4), cursor.getInt(5) == 1, cursor.getInt(6), - cursor.getInt(7) == 1 + cursor.getInt(7) == 1, + cursor.getString(8) ); + BeWoLog.writeToLogFile("MessageId: " + message.MessageId + "; IsDelivered: " + message.IsDelivered + "; Name der IsDelivered-Spalte: " + cursor.getColumnName(5) + ". (getUnsentMessages)"); + + if(cursor.getString(9) != null) { + message.SendDate = getDateFromString(cursor.getString(9)); + } + messages.add(message); } while(cursor.moveToNext()); } @@ -674,4 +671,62 @@ public class DatabaseHandler extends SQLiteOpenHelper { return messages; } + + public ArrayList getChatMessagesByMessageIds(ArrayList messageIds) { + String abc = ""; + for(String mid : messageIds) { + abc += messageIds; + if(messageIds.indexOf(mid) != (messageIds.size() - 1)) { + abc += "\n"; + } + } + BeWoLog.writeToLogFile(abc); + + ArrayList result = new ArrayList<>(); + + SQLiteDatabase readableDatabase = this.getReadableDatabase(); + + String whereClause = ""; + + for(int i = 0; i < messageIds.size(); i++) { + whereClause = whereClause + KEY_MESSAGE_ID_CHATMESSAGE + " = '" + messageIds.get(i) + "' "; + + if(i != (messageIds.size() - 1)) { + whereClause += " OR "; + } + } + + Cursor cursor = readableDatabase.query(TABLE_CHATMESSAGE, CHAT_MESSAGE_COLUMNS, whereClause, null, null, null, null); + + if(cursor.moveToFirst()) { + do{ + ChatMessage message = new ChatMessage( + cursor.getInt(0), + cursor.getInt(1), + cursor.getInt(2), + getDateFromString(cursor.getString(3)), + cursor.getString(4), + cursor.getInt(5) == 1, + cursor.getInt(6), + cursor.getInt(7) == 1, + cursor.getString(8) + ); + + String blubb = ""; + for(int i = 0; i < cursor.getColumnCount(); i++) { + blubb += "" + i + ". " + cursor.getColumnName(i) + "; "; + } + + BeWoLog.writeToLogFile(blubb); + + if(cursor.getString(9) != null) { + message.SendDate = getDateFromString(cursor.getString(9)); + } + + result.add(message); + } while(cursor.moveToNext()); + } + + return result; + } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java index 7e908ea52..ab451dc28 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java @@ -5,6 +5,9 @@ import android.app.NotificationManager; import android.content.Context; import android.util.Log; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; import com.octo.android.robospice.SpiceManager; import com.octo.android.robospice.UncachedSpiceService; import com.octo.android.robospice.persistence.exception.SpiceException; @@ -13,16 +16,31 @@ import com.octo.android.robospice.request.listener.RequestListener; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapPrimitive; +import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import Database.DatabaseHandler; +import entities.ChatMessage; +import soapConnection.DataIdentifier; import soapConnection.JsonSoapPrimitiveRequest; +import soapConnection.Packet; import soapConnection.SoapCalls; +import soapConnection.SoapConnectionManager; +import tcpConnection.LoginCallback; +import tcpConnection.SocketManager; +import util.BeWoLog; +import util.ChatMessageDeserializer; import util.ConnectivityReceiver; +import static soapConnection.SoapCalls.CHECK_MESSAGE_IDS; + /** * Created by JettenM on 24.08.2016. */ @@ -49,6 +67,17 @@ public class BeWoChatApplication extends Application { private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + public static Date lastOnlineTS; + + private static int refreshIntervalInMinutes = 6; + public static int getRefreshIntervalInMilliseconds() { + return refreshIntervalInMinutes * 60 * 1000; + } + + public static int getRefreshIntervalInMinutes() { + return refreshIntervalInMinutes; + } + @Override public void onCreate() { super.onCreate(); @@ -65,13 +94,18 @@ public class BeWoChatApplication extends Application { @Override public void run() { JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.KEEP_ALIVE, new ArrayList()); - spiceManager.execute(request, new JsonSoapPrimitiveRequestListener()); + + if(ConnectivityReceiver.isConnected()) { + if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < getRefreshIntervalInMilliseconds()) { + spiceManager.execute(request, new JsonSoapPrimitiveRequestListener()); + } + } Log.i("LOOPER", "Halte Verbindung zum Soap-Server am leben..."); } }; - final ScheduledFuture blubbHandle = scheduler.scheduleAtFixedRate(blubb, 10, 10, TimeUnit.MINUTES); + final ScheduledFuture blubbHandle = scheduler.scheduleAtFixedRate(blubb, refreshIntervalInMinutes, refreshIntervalInMinutes, TimeUnit.MINUTES); scheduler.schedule(new Runnable() { @Override @@ -89,6 +123,16 @@ public class BeWoChatApplication extends Application { ConnectivityReceiver.connectivityReceiverListener = listener; } + public static void writeExceptionToLog(Throwable ex) { + String logText = "Ausnahme: " + ex.toString() + "; Message: " + ex.getMessage() + "; Cause: " + ex.getCause(); + for(StackTraceElement ste : ex.getStackTrace()) { + String steAsString = ste.toString(); + logText += "\t" + steAsString; + } + + BeWoLog.writeToLogFile(logText); + } + public BeWoChatApplication() { defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); @@ -98,6 +142,9 @@ public class BeWoChatApplication extends Application { Log.e("UNCAUGHT_EXCEPTION", "Eine unbehandelte Ausnahme ist aufgetreten!\n" + ex.getMessage()); ex.printStackTrace(); + + writeExceptionToLog(ex); + NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); nm.cancelAll(); @@ -113,16 +160,210 @@ public class BeWoChatApplication extends Application { @Override public void onRequestFailure(SpiceException spiceException) { + Log.e("BEWOAPP", "Fehler beim am Leben erhalten!"); + BeWoLog.writeToLogFile("Verbindungserneuerung ist fehlgeschlagen (JsonSoapPrimitiveRequestListener->onRequestFailure)"); } @Override public void onRequestSuccess(SoapPrimitive soapPrimitive) { if(soapPrimitive == null) { Log.e("BEWOAPP", "Antwort ist null!"); + BeWoLog.writeToLogFile("Die Verbindungserneuerung lieferte Null zurück. (JsonSoapPrimitiveRequestListener->onRequestSuccess)"); } else { + BeWoChatApplication.lastOnlineTS = Calendar.getInstance().getTime(); + BeWoLog.writeToLogFile("Erneuere die Verbindung. (JsonSoapPrimitiveRequestListener->onRequestSuccess)"); Log.i("BEWOAPP", "Die Antwort hat einen Wert"); } } } + + private static class JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener implements RequestListener { + + private final static String LOGTAG = "UUID_CHECK"; + + @Override + public void onRequestFailure(SpiceException spiceException) { + Log.e(LOGTAG, "Die Anfrage an den Server ist gescheitert! (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestFailure)"); + BeWoLog.writeToLogFile("Die Anfrage an den Server ist gescheitert. Kann nicht überprüfen, ob die Nachrichten dem Server bekannt sind! Exception: <<" + spiceException.toString() + ">> (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestFailure)"); + } + + @Override + public void onRequestSuccess(SoapPrimitive soapPrimitive) { + if(soapPrimitive == null) { + Log.e(LOGTAG, "Antwort vom Server ist null!"); + BeWoLog.writeToLogFile("Antwort vom Server ist null. Kann nicht überprüfen, ob die Nachrichten dem Server bekannt sind! (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)"); + return; + } + + BeWoLog.writeToLogFile("Die Anfrage an den Server war mit Erfolg gekrönt. Liste mit dem Server bekannten Nachrichten erhalten. (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)"); + + GsonBuilder builder = new GsonBuilder(); + + Gson gson = builder.create(); + + Type listType = new TypeToken>(){}.getType(); + + final ArrayList result = gson.fromJson(soapPrimitive.toString(), listType); + + if(result != null) { + if(result.size() == 0) { + return; + } + + String blubb = ""; + for(String ms : result) { + blubb += ms; + + if(result.indexOf(ms) != (result.size() - 1)) { + blubb += "\n"; + } + } + BeWoLog.writeToLogFile("Vom Server zurückgelieferte MessageIds: " + blubb); + + DatabaseHandler databaseHandler = DatabaseHandler.getInstance(BeWoChatApplication.getInstance()); + ArrayList messages2send = databaseHandler.getChatMessagesByMessageIds(result); + + BeWoLog.writeToLogFile("Es existieren " + messages2send.size() + " Nachrichten, deren Response verloren gegangen ist. (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)"); + + for(ChatMessage cm : messages2send) { + final Packet unsentPacket = new Packet(); + + unsentPacket.ChatDataIdentifier = cm.IsTeam ? DataIdentifier.TEAM : DataIdentifier.MESSAGE; + unsentPacket.ChatMessage = cm.ChatText; + unsentPacket.ChatName = SoapConnectionManager.getUser().getFullName(); + unsentPacket.RecipientPersonOid = cm.RecipientPersonOid; + unsentPacket.ClientseitigeOid = cm.Id; + unsentPacket.MessageTimeStamp = cm.InsTs; + unsentPacket.SenderPersonOid = cm.SenderPersonOid; + unsentPacket.Tenant = SoapConnectionManager.getUser().getTenant(); + unsentPacket.IsDelivered = cm.IsDelivered; + unsentPacket.MessageId = cm.MessageId; + + BeWoLog.writeToLogFile("Verschicke Nachricht, deren Response verloren gegangen ist. ("+unsentPacket.MessageId+") (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)" + unsentPacket.toString()); + SocketManager.sendMessage(unsentPacket); + + try { + Thread.sleep(75); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } else { + BeWoLog.writeToLogFile("Result ist null. Konversion von Json zu Objekten ist gescheitert. (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)"); + } + } + } + + public static void reconnectWithServer(boolean isConnected, final Context context) { + Log.e("UTIL", isConnected ? "Ist mit dem Internet/WLAN verbunden" : "Ist mit keinem Netzwerk verbunden"); + + if(isConnected) { + try { + BeWoLog.writeToLogFile("Setze Socket zurück.(reconnectWithServer)"); +// SocketManager.shutDownConnectionToServer("reconnectWithServer"); + + BeWoLog.writeToLogFile("Setze LoginCallback des Sockets. (reconnectWithServer)"); + SocketManager.loginCallback = new LoginCallback() { + @Override + public void doCallback() { + Log.e("LOGIN_CALLBACK", "LoginCallback aufgerufen. Verschicke nicht verschickte Nachrichten..."); + BeWoLog.writeToLogFile("Verschicke nicht verschickte Nachrichten. (reconnectWithServer)"); + sendUnsentMessages(context); + + sendStatusRequest(); + + // TODO: Nachrichten herunterladen, sofern man sich in der ChatActivity befindet + + } + }; + + BeWoLog.writeToLogFile("Verbinde mit dem Socket. (reconnectWithServer)"); + SocketManager.connectToServer("BeWoApplication -> reconnectWithServer"); + + Log.i("RECONNECT_WITH_SERVER", "connectToServer aufgerufen..."); + } + catch(Exception es) { + Log.e("RECONNECT_WITH_SERVER", "Ausnahme beim Login nach Reconnect"); + BeWoLog.writeToLogFile("Ausnahme beim Login nach Reconnect. (reconnectWithServer)"); + es.printStackTrace(); + } + } + } + + public static void sendUnsentMessages(final Context context) { + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + try { + BeWoLog.writeToLogFile("Lade nicht verschickte Nachrichten aus der Datenbank zum verschicken."); + DatabaseHandler databaseHandler = DatabaseHandler.getInstance(context); + + ArrayList unsentMessages = databaseHandler.getUnsentChatMessages(); + ArrayList messagesWithoutResponse = new ArrayList<>(); + + if(unsentMessages.size() > 0) { + BeWoLog.writeToLogFile("Habe " + unsentMessages.size() + " Nachrichten gefunden."); + + } else { + BeWoLog.writeToLogFile("Habe keine nicht verschickten Nachrichten gefunden."); + } + + for(ChatMessage cm : unsentMessages) { + if (cm.SendDate == null) { + final Packet unsentPacket = new Packet(); + + unsentPacket.ChatDataIdentifier = cm.IsTeam ? DataIdentifier.TEAM : DataIdentifier.MESSAGE; + unsentPacket.ChatMessage = cm.ChatText; + unsentPacket.ChatName = SoapConnectionManager.getUser().getFullName(); + unsentPacket.RecipientPersonOid = cm.RecipientPersonOid; + unsentPacket.ClientseitigeOid = cm.Id; + unsentPacket.MessageTimeStamp = cm.InsTs; + unsentPacket.SenderPersonOid = cm.SenderPersonOid; + unsentPacket.Tenant = SoapConnectionManager.getUser().getTenant(); + unsentPacket.IsDelivered = cm.IsDelivered; + unsentPacket.MessageId = cm.MessageId; + + BeWoLog.writeToLogFile("Verschicke Nachricht("+unsentPacket.ChatMessage+") mit MessageId (" + unsentPacket.MessageId + ") "); + SocketManager.sendMessage(unsentPacket); + Thread.sleep(75); + } else { + messagesWithoutResponse.add(cm); + } + } + + BeWoLog.writeToLogFile("Habe " + messagesWithoutResponse.size() + " Nachrichten gefunden, deren Message-Response verloren gegangen ist."); + + String pExceptions = ""; + for(int i = 0; i < messagesWithoutResponse.size(); i++) { + pExceptions += messagesWithoutResponse.get(i).MessageId; + + if(i != (messagesWithoutResponse.size() - 1)) { + pExceptions += ";"; + } + } + + ArrayList propertyInfos = new ArrayList<>(); + propertyInfos.add(SoapConnectionManager.BuildProperty("messageIds", pExceptions, String.class)); + JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.CHECK_MESSAGE_IDS, propertyInfos); + spiceManager.execute(request, new JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + + thread.start(); + } + + public static void sendStatusRequest() { + final Packet requestPacket = new Packet(); + + requestPacket.ChatDataIdentifier = DataIdentifier.STATUS_REQUEST; + requestPacket.ChatName = SoapConnectionManager.getUser().getFullName(); + requestPacket.SenderPersonOid = SoapConnectionManager.getUser().getPersonOid().intValue(); + requestPacket.Tenant = SoapConnectionManager.getUser().getTenant(); + + SocketManager.sendMessage(requestPacket); + } } 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 f8786db3b..4f8f9bf69 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java @@ -3,6 +3,7 @@ package beyondsoft.bewomitarbeiterapp; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -15,12 +16,12 @@ import android.graphics.RectF; import android.os.Bundle; 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; import android.view.MenuItem; import android.view.View; -import android.widget.AbsListView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; @@ -40,12 +41,14 @@ import com.octo.android.robospice.request.listener.RequestListener; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapPrimitive; +import java.io.ByteArrayInputStream; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Calendar; import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.UUID; import Database.DatabaseHandler; import entities.ChatEntity; @@ -56,10 +59,13 @@ import soapConnection.Packet; import soapConnection.SoapCalls; import soapConnection.SoapConnectionManager; +import tcpConnection.LoginCallback; import tcpConnection.SocketManager; import tcpConnection.UIHandler; +import util.BeWoLog; import util.ChatMessageDeserializer; import util.ConnectivityReceiver; +import util.SecurityUtils; import util.Util; /** @@ -81,6 +87,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei protected String teamMemberNames; protected boolean isTeam; protected boolean isEmployee; + protected byte[] image; private SpiceManager spiceManager = new SpiceManager(UncachedSpiceService.class); @@ -90,15 +97,20 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei private final static String LOGTAG = "CHAT_ACTIVITY"; + @Override public void onNetworkConnectionChanged(boolean isConnected) { - Util.reconnectWithServer(isConnected, ChatActivity.this); + BeWoLog.writeToLogFile("onNetworkConnectionChanged in ChatActivity aufgerufen. Bin "+ (isConnected ? "online" : "offline")); + + BeWoChatApplication.reconnectWithServer(isConnected, ChatActivity.this); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + BeWoLog.writeToLogFile("Erzeuge die ChatActivity"); + setContentView(R.layout.chat); ActionBar action = getSupportActionBar(); @@ -118,39 +130,42 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei listView = (ListView)findViewById(R.id.list_msg); - listView.setOnScrollListener(new AbsListView.OnScrollListener() { - - @Override - public void onScrollStateChanged(AbsListView view, int scrollState) { - if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { - Log.i("ON_SCROLL_STATE_CHANGED", "Berühre das Ende"); - } - } - - @Override - public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { - Log.i("ON_SCROLL", "Scrolle... firstVisibleItem: " + firstVisibleItem + "; visibleItemCount: " + visibleItemCount + "; totalItemCount" + totalItemCount); - } - }); +// listView.setOnScrollListener(new AbsListView.OnScrollListener() { +// +// @Override +// public void onScrollStateChanged(AbsListView view, int scrollState) { +// if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { +// Log.i("ON_SCROLL_STATE_CHANGED", "Berühre das Ende"); +// } +// } +// +// @Override +// public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { +// Log.i("ON_SCROLL", "Scrolle... firstVisibleItem: " + firstVisibleItem + "; visibleItemCount: " + visibleItemCount + "; totalItemCount" + totalItemCount); +// } +// }); Bundle zielkorb = getIntent().getExtras(); recipientName = zielkorb.getString("Name"); recipientPersonOid = zielkorb.getInt("RecipientOid"); - byte[] bildArray = zielkorb.getByteArray("Bild"); + image = zielkorb.getByteArray("Bild"); isTeam = zielkorb.getBoolean("IsTeam"); teamMemberOids = zielkorb.getString("TeamMemberOids"); teamMemberNames = zielkorb.getString("TeamMemberNames"); isEmployee = zielkorb.getBoolean("IsEmployee"); - ReloadChatView(recipientName, recipientPersonOid, bildArray, isTeam, teamMemberOids, teamMemberNames, isEmployee); + Log.i("EXTRAS_KONTROLLE", "Empfänger: " + recipientName + "; " + recipientPersonOid); + + ReloadChatView(recipientName, recipientPersonOid, image, isTeam, teamMemberOids, teamMemberNames, isEmployee); } - private void ReloadChatView(String contactName, int recipientOid, byte[] contactImage, boolean pIsTeam, String pTeamMemberOids, String pTeamMemberNames, boolean pIsEmployee) { + private void ReloadChatView(final String contactName, final int recipientOid, final byte[] contactImage, boolean pIsTeam, String pTeamMemberOids, String pTeamMemberNames, boolean pIsEmployee) { chatMessages = new ArrayList<>(); recipientPersonOid = recipientOid; recipientName = contactName; isTeam = pIsTeam; + Log.i("CHAT", "IsTeam: " + isTeam); teamMemberOids = pTeamMemberOids; teamMemberNames = pTeamMemberNames; isEmployee = pIsEmployee; @@ -176,19 +191,23 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei adapter = new MessageAdapter(this, R.layout.item_chat_left, chatMessages); adapter.sort(DATE_COMPARATOR); + adapter.notifyDataSetChanged(); + listView.setAdapter(adapter); chatUIHandler = new UIHandler() { @Override public void updateUserInterface(final Packet chatPacket) { try { + Log.i(LOGTAG, "Identifier: " + chatPacket.ChatDataIdentifier.name()); + switch(chatPacket.ChatDataIdentifier) { case MESSAGE: listView.post(new Runnable() { @Override public void run() { if(chatPacket.SenderPersonOid == recipientPersonOid && BeWoChatApplication.isActivityVisible()) { - chatMessages.add(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, false)); + chatMessages.add(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, false, chatPacket.MessageId)); adapter.sort(DATE_COMPARATOR); adapter.notifyDataSetChanged(); } else { @@ -198,7 +217,29 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei }); break; + + case MESSAGE_RESPONSE: + runOnUiThread(new Runnable() { + @Override + public void run() { + for(ChatMessage cm : chatMessages) { + Log.i("RESPONSE", "lokale Id: " + cm.Id); + if(cm.Id == chatPacket.ClientseitigeOid) { + cm.ServerseitigeOid = chatPacket.ServerseitigeOid; + Log.i("RESPONSE", "COid: " + cm.Id + "; Text: " + cm.ChatText + "; " + cm.ServerseitigeOid); + break; + } + } + + adapter.sort(DATE_COMPARATOR); + adapter.notifyDataSetChanged(); + } + }); + + break; + case STATUS_NOTIFICATION_LOGIN: + BeWoLog.writeToLogFile("Benutzer " + chatPacket.ChatName + " ist jetzt online. (ChatActivity)"); if(chatPacket.SenderPersonOid == recipientPersonOid) { runOnUiThread(new Runnable() { @Override @@ -211,6 +252,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei break; case STATUS_NOTIFICATION_LOGOUT: + BeWoLog.writeToLogFile("Benutzer " + chatPacket.ChatName + " ist jetzt offline. (ChatActivity)"); if(chatPacket.SenderPersonOid == recipientPersonOid) { runOnUiThread(new Runnable() { @Override @@ -227,7 +269,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei @Override public void run() { if(isTeam && chatPacket.RecipientPersonOid == recipientPersonOid && BeWoChatApplication.isActivityVisible()) { - chatMessages.add(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, true)); + chatMessages.add(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, true, chatPacket.MessageId)); adapter.sort(DATE_COMPARATOR); adapter.notifyDataSetChanged(); } else { @@ -252,9 +294,13 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei Calendar c = Calendar.getInstance(); Date now = c.getTime(); + String messageId = UUID.randomUUID().toString(); + Packet packet = new Packet(); packet.ChatMessage = text.getText().toString(); packet.ChatDataIdentifier = isTeam ? DataIdentifier.TEAM : DataIdentifier.MESSAGE; + packet.IsEmployee = SoapConnectionManager.getUser().getIsEmployee(); + packet.MessageId = messageId; if(isTeam) { packet.ChatName = recipientName; @@ -263,14 +309,17 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei packet.RecipientPersonOid = recipientPersonOid; packet.MessageTimeStamp = now; - packet.Tenant = SoapConnectionManager.User.getTenant(); + packet.Tenant = SoapConnectionManager.getUser().getTenant(); - final ChatMessage message = new ChatMessage(packet.SenderPersonOid, packet.RecipientPersonOid, packet.MessageTimeStamp, packet.ChatMessage, false, 0, isTeam); + final ChatMessage message = new ChatMessage(packet.SenderPersonOid, packet.RecipientPersonOid, packet.MessageTimeStamp, packet.ChatMessage, false, 0, isTeam, messageId); long coid = databaseHandler.addChatMessage(message); + message.Id = Long.valueOf(coid).intValue(); packet.ClientseitigeOid = Long.valueOf(coid).intValue(); + Log.i("PACKET_MESSAGE_ID", "MessageId: " + packet.MessageId); + SocketManager.sendMessage(packet); listView.post(new Runnable() { @@ -289,7 +338,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei } }); - ArrayList test = isTeam ? databaseHandler.getExistingTeamChatMessageIds() : databaseHandler.getExistingChatMessageIds(); + ArrayList test = isTeam ? databaseHandler.getExistingTeamChatMessageUUIDs() : databaseHandler.getExistingChatMessageUUIDs(); String pExceptions = ""; for(int i = 0; i < test.size(); i++) { @@ -301,16 +350,53 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei } ArrayList propertyInfos = new ArrayList<>(); - propertyInfos.add(SoapConnectionManager.BuildProperty("pSenderPersonOid", SoapConnectionManager.User.getPersonOid(), Long.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pSenderPersonOid", SoapConnectionManager.getUser().getPersonOid(), Long.class)); propertyInfos.add(SoapConnectionManager.BuildProperty("pRecipientPersonOid", recipientPersonOid, Long.class)); propertyInfos.add(SoapConnectionManager.BuildProperty("pExceptions", pExceptions, String.class)); propertyInfos.add(SoapConnectionManager.BuildProperty("pIsForTeam", isTeam, Boolean.class)); - Log.i(LOGTAG, "IsTeam: " + isTeam); + final JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.GET_ALL_CHAT_MESSAGES, propertyInfos); - JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.GET_ALL_CHAT_MESSAGES, propertyInfos); - spiceManager.execute(request, new JsonSoapPrimitiveRequestListener()); + final LoginCallback corruptedSpiceCallback = new LoginCallback() { + @Override + public void doCallback() { + BeWoLog.writeToLogFile("Callback bei erneutem Login auf dem Soap-Server wird ausgeführt. (ChatActivity)"); + spiceManager.shouldStop(); + spiceManager.start(ChatActivity.this); + + SocketManager.loginCallbackAfterConnectionLost = new LoginCallback() { + @Override + public void doCallback() { + //ReloadChatView(contactName, recipientOid, contactImage, isTeam, teamMemberOids, teamMemberNames, isEmployee); + + } + }; + +// SocketManager.shutDownConnectionToServer("ChatActivity->corruptedSpiceCallback"); + SocketManager.connectToServer("ChatActivity -> corruptedSpiceCallback"); + } + }; + + if(ConnectivityReceiver.isConnected()) { + if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) { + BeWoLog.writeToLogFile("Lade alle Nachrichten für diesen Chat herunter. (ChatActivity)"); + spiceManager.execute(request, new JsonSoapPrimitiveRequestListener(corruptedSpiceCallback)); + } else { +// SocketManager.shutDownConnectionToServer("ChatActivity->Letzter Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her"); + SocketManager.loginCallbackAfterConnectionLost = new LoginCallback() { + @Override + public void doCallback() { + BeWoLog.writeToLogFile("Lade alle Nachrichten für diesen Chat nach fehlgeschlagenem ersten Versuch herunter. (ChatActivity)"); + spiceManager.execute(request, new JsonSoapPrimitiveRequestListener(corruptedSpiceCallback)); + } + }; + SocketManager.connectToServer("ChatActivity -> Letzter Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her"); + } + } else { + BeWoLog.writeToLogFile("App ist offline. (ChatActivity)"); + Toast.makeText(getApplicationContext(), "Offline. Keine Aktion möglich.", Toast.LENGTH_LONG).show(); + } NotificationManager mNotifyMgr = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); @@ -319,11 +405,15 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei if(SocketManager.notificationEntities.get(entity) != null) { mNotifyMgr.cancel(SocketManager.notificationEntities.get(entity).getNotificationId()); Util.removeMessagesCount(entity); + } else { + Log.i("CHAT_ACTIVITY", "Keine Notification für diesen Chat vorhanden."); } } @Override public void onResume() { + BeWoLog.writeToLogFile("Resümiere mit der ChatActivity"); + BeWoChatApplication.activityResumed(); SocketManager.uiHandler = chatUIHandler; @@ -335,18 +425,24 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei @Override public void onStop(){ + BeWoLog.writeToLogFile("Stoppe die ChatActivity"); + spiceManager.shouldStop(); super.onStop(); } @Override public void onPause() { + BeWoLog.writeToLogFile("Pausiere die ChatActivity"); + super.onPause(); BeWoChatApplication.activityPaused(); } @Override protected void onStart() { + BeWoLog.writeToLogFile("Starte die ChatActivity"); + super.onStart(); spiceManager.start(this); } @@ -379,6 +475,12 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei } } + @Override + public void onBackPressed() { + KontaktChatActivity.setShouldReloadLatestMessages(true); + super.onBackPressed(); + } + @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); @@ -425,19 +527,70 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei private final class JsonSoapPrimitiveRequestListener implements RequestListener { + public LoginCallback corruptedRequestCallback; + + public JsonSoapPrimitiveRequestListener(LoginCallback corruptedRequestCallback) { + this.corruptedRequestCallback = corruptedRequestCallback; + } + @Override public void onRequestFailure(SpiceException spiceException) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist beim Herunterladen der Nachrichten passiert.", Toast.LENGTH_LONG).show(); + } + }); + Log.e("GET_ALL_MESSAGES", "" + spiceException.getMessage()); } @Override public void onRequestSuccess(SoapPrimitive soapPrimitive) { - if(soapPrimitive == null) { - Log.e(LOGTAG, "Der vom Server zurückgelieferte Wert ist NULL! (Laden sämtlicher Nachrichten)"); + BeWoLog.writeToLogFile("Laden der Nachrichten ist fehlgeschlagen. Führe erneuten Login auf dem Soap-Server durch. (ChatActivity)"); + + try { + ArrayList propertyInfos = new ArrayList<>(); + + SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0); + String savedTenant = settings.getString(Util.PREFS_TENANT_KEY, null); + String savedUsername = settings.getString(Util.PREFS_USERNAME_KEY, null); + String savedPassword = settings.getString(Util.PREFS_PASSWORD, null); + + byte[] tenantByteArray = Base64.decode(savedTenant, Base64.DEFAULT); + ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray); + + byte[] usernameByteArray = Base64.decode(savedUsername, Base64.DEFAULT); + ByteArrayInputStream usernameStream = new ByteArrayInputStream(usernameByteArray); + + byte[] passwordByteArray = Base64.decode(savedPassword, Base64.DEFAULT); + ByteArrayInputStream passwordStream = new ByteArrayInputStream(passwordByteArray); + + propertyInfos.add(SoapConnectionManager.BuildProperty("pTenant", SecurityUtils.decrypt(tenantStream).toString(), String.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pUsername", SecurityUtils.decrypt(usernameStream).toString(), String.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pPassword", SecurityUtils.decrypt(passwordStream).toString(), String.class)); + + JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.LOGIN_CALL, propertyInfos); + spiceManager.execute(request, new JsonSoapPrimitiveReLoginRequestListener()); + } catch(Exception e) { + BeWoLog.writeToLogFile("Der erneute Login ist fehlgeschlagen. (ChatActivity)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + } + return; } + BeWoLog.writeToLogFile("Das Laden der Nachrichten war erfolgreich. (ChatActivity)"); + + BeWoChatApplication.lastOnlineTS = Calendar.getInstance().getTime(); + GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(ChatMessage.class, new ChatMessageDeserializer()); @@ -458,12 +611,74 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei } }); } + + private final class JsonSoapPrimitiveReLoginRequestListener implements RequestListener { + @Override + public void onRequestFailure(SpiceException spiceException) { + BeWoLog.writeToLogFile("Der erneute Login ist fehlgeschlagen. (ChatActivity->ReLoginRequestListener->onRequestFailure)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(ChatActivity.this, "Ein Fehler ist beim erneuten Login auftegreten.", Toast.LENGTH_LONG).show(); + } + }); + + Log.e("GET_ALL_MESSAGES", "Erneuter Login ist gescheitert: " + spiceException.getMessage()); + } + + @Override + public void onRequestSuccess(SoapPrimitive soapPrimitive) { + if(soapPrimitive == null) { + BeWoLog.writeToLogFile("Der Versuch eines erneuten Logins ist gescheitert. Das vom Soap-Server zurückgelieferte Objekt ist null! (ChatActivity->ReLoginRequestListener->onRequestSuccess)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(ChatActivity.this, "Ein fataler Fehler ist aufgetreten. Bitte loggen Sie sich erneut an.", Toast.LENGTH_LONG).show(); + } + }); + + return; + } + + String abc = soapPrimitive.toString(); + + BeWoLog.writeToLogFile("Erneuter Login war erfolgreich. (ChatActivity->ReLoginRequestListener->onRequestSuccess)"); + + Bundle zielkorb = new Bundle(); + zielkorb.putString("Name", recipientName); + zielkorb.putInt("RecipientOid", recipientPersonOid); + zielkorb.putByteArray("Bild", image); + zielkorb.putBoolean("IsTeam", isTeam); + zielkorb.putString("TeamMemberOids", teamMemberOids); + zielkorb.putString("TeamMemberNames", teamMemberNames); + zielkorb.putBoolean("IsEmployee", isEmployee); + + if(abc != null) { + if(abc.contains(";")) { + Intent chatActivity = new Intent(getApplicationContext(), ChatActivity.class); + chatActivity.putExtras(zielkorb); + startActivity(chatActivity); + } else { + BeWoLog.writeToLogFile("Der erneute Login ist fehlgeschlagen. Die Credentials waren inkorrekt. (ChatActivity->ReLoginRequestListener->onRequestSuccess)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + } + } + } + } } public static final Comparator DATE_COMPARATOR = new Comparator() { @Override public int compare(ChatMessage lhs, ChatMessage rhs) { - return lhs.InsTs.getTime() > rhs.InsTs.getTime() ? 0 : 1; + return lhs.compareTo(rhs); } }; } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktAdapter.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktAdapter.java index fcc154281..354b2577e 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktAdapter.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktAdapter.java @@ -75,17 +75,13 @@ public class KontaktAdapter extends ArrayAdapter { ContactListItem cli = values.get(position); int bildId = R.drawable.mitarbeiter_avatar; - String blah = "Mitarbeiter"; if(cli.isTeam) { bildId = R.drawable.mitarbeiter_team_avatar; - blah = "Team"; } else if(!cli.getIsEmployee()) { bildId = R.drawable.klient_avatar; - blah = "Klient"; } - Log.i("KONTAKT_ADAPTER", "Kontakt hat KEIN Bild. Benutze Standardbild. Kontakt ist " + blah + "; Id: " + bildId); Bitmap bitmap = decodeSampledBitmapFromResource(inflater.getContext().getResources(), bildId, 100, 100); imageView.setImageBitmap(ImageConverter.getRoundedCornerBitmap(bitmap, bitmap.getWidth() / 2)); diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java index 7e5f1c129..b74116868 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java @@ -1,11 +1,13 @@ package beyondsoft.bewomitarbeiterapp; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.ActionBarActivity; +import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -25,12 +27,16 @@ import com.octo.android.robospice.request.listener.RequestListener; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapPrimitive; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; import Database.DatabaseHandler; import entities.ChatEntity; @@ -41,17 +47,21 @@ import soapConnection.OnRequestSuccessCallback; import soapConnection.Packet; import soapConnection.SoapCalls; import soapConnection.SoapConnectionManager; +import tcpConnection.LoginCallback; import tcpConnection.SocketManager; import tcpConnection.UIHandler; +import util.BeWoLog; import util.ChatMessageDeserializer; import util.ConnectivityReceiver; +import util.SecurityUtils; import util.Util; /** * Created by bib on 02.05.2016. */ public class KontaktChatActivity extends ActionBarActivity implements ConnectivityReceiver.ConnectivityReceiverListener, SwipeRefreshLayout.OnRefreshListener { - + private static boolean isDownloadOfContacsInProgress = false; + private static boolean isDownloadOfNewestMessagesInProgress = false; private static final String LOGTAG = "KONTAKT_CHAT_ACTIVITY"; private SpiceManager spiceManager = new SpiceManager(UncachedSpiceService.class); @@ -59,18 +69,28 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi public ListView listView; + private static boolean shouldReloadLatestMessages = false; + public static void setShouldReloadLatestMessages(boolean pShouldReloadLatestMessages) { + shouldReloadLatestMessages = pShouldReloadLatestMessages; + } + private SwipeRefreshLayout swipeRefreshLayout; ArrayList contactList = new ArrayList<>(); @Override public void onNetworkConnectionChanged(boolean isConnected) { - Util.reconnectWithServer(isConnected, KontaktChatActivity.this); + BeWoChatApplication.reconnectWithServer(isConnected, KontaktChatActivity.this); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + SocketManager.initialLoginCallback = null; + + BeWoLog.writeToLogFile("Erzeuge die KontaktChatActivity"); + setContentView(R.layout.kontakt_list_chat); swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); @@ -129,30 +149,131 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi @Override public void onRefresh() { + Log.i(LOGTAG, "Führe onRefresh durch"); updateContactList(); } private void updateContactList() { + if(isDownloadOfContacsInProgress) { + BeWoLog.writeToLogFile("Download der Kontakte wird von anderer Stelle versucht. (KontaktChatActivity)"); + return; + } + + isDownloadOfContacsInProgress = true; + + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + isDownloadOfContacsInProgress = false; + BeWoLog.writeToLogFile("isDownloadOfContacsInProgress wird nach 10 Sekunden zurückgesetzt."); + } + }, 10*1000); + + BeWoLog.writeToLogFile("Lade Kontakte (updateContactList)"); swipeRefreshLayout.setRefreshing(true); ArrayList propertyInfos = new ArrayList<>(); - propertyInfos.add(SoapConnectionManager.BuildProperty("pPersonOid", SoapConnectionManager.User.getPersonOid(), Long.class)); + if(SoapConnectionManager.getUser() == null) { + BeWoLog.writeToLogFile("User ist null. (updateContactList)"); + Log.i(LOGTAG, "Angemeldeter User ist null"); + } else { + Log.i(LOGTAG, "UserPersonOid: " + SoapConnectionManager.getUser().getPersonOid()); + } - JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.GET_CONTACTS_FOR_PERSON, propertyInfos); - spiceManager.execute(request, new JsonSoapPrimitiveRequestListener(new OnRequestSuccessCallback() { - @Override - public void doCallback() { - Util.sendStatusRequest(); + if(SoapConnectionManager.getUser().getPersonOid() == null) { + Log.i(LOGTAG, "UserPersonOid ist null"); + BeWoLog.writeToLogFile("UserPersonOid ist null (updateContactList)"); + } - swipeRefreshLayout.setRefreshing(false); + propertyInfos.add(SoapConnectionManager.BuildProperty("pPersonOid", SoapConnectionManager.getUser().getPersonOid(), Long.class)); - ArrayList propertyInfos = new ArrayList<>(); - propertyInfos.add(SoapConnectionManager.BuildProperty("pRecipientPersonOid", SoapConnectionManager.User.getPersonOid(), Long.class)); + final JsonSoapPrimitiveRequest getContactsRequest = new JsonSoapPrimitiveRequest(SoapCalls.GET_CONTACTS_FOR_PERSON, propertyInfos); - JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest("GetNewestMessages", propertyInfos); - spiceManager.execute(request, new JsonSoapPrimitiveRequestListenerForNewestMessages()); + if(ConnectivityReceiver.isConnected()) { + BeWoLog.writeToLogFile("App ist mit dem Internet verbunden (updateContactList)"); + if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) { + BeWoLog.writeToLogFile("Jetzt - letzter Serverkontakt ist kleiner als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten. (updateContactList)"); + spiceManager.execute(getContactsRequest, new JsonSoapPrimitiveRequestListener(new OnRequestSuccessCallback() { + @Override + public void doCallback() { + BeWoChatApplication.sendStatusRequest(); + + swipeRefreshLayout.setRefreshing(false); + + ArrayList propertyInfos = new ArrayList<>(); + propertyInfos.add(SoapConnectionManager.BuildProperty("pRecipientPersonOid", SoapConnectionManager.getUser().getPersonOid(), Long.class)); + + final JsonSoapPrimitiveRequest getNewestMessagesRequest = new JsonSoapPrimitiveRequest("GetNewestMessages", propertyInfos); + + if(ConnectivityReceiver.isConnected()) { + if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) { + spiceManager.execute(getNewestMessagesRequest, new JsonSoapPrimitiveRequestListenerForNewestMessages()); + } + } else { +// SocketManager.shutDownConnectionToServer("KontaktChatAcvitity->Letzer Kontakt ist weniger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her, aber die Internetverbindung war erneut weg"); + SocketManager.loginCallbackAfterConnectionLost = new LoginCallback() { + @Override + public void doCallback() { + spiceManager.execute(getNewestMessagesRequest, new JsonSoapPrimitiveRequestListenerForNewestMessages()); + } + }; + + SocketManager.connectToServer("KontaktChatActivity -> Intervall nicht erreicht"); + } + } + })); + } else { + BeWoLog.writeToLogFile("Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her. Starte Verbindung zum SocketServer neu. (updateContactlist)"); + +// SocketManager.shutDownConnectionToServer("KontaktChatAcitivty->Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her"); + SocketManager.loginCallback2 = new LoginCallback() { + @Override + public void doCallback() { + spiceManager.execute(getContactsRequest, new JsonSoapPrimitiveRequestListener(new OnRequestSuccessCallback() { + @Override + public void doCallback() { + BeWoLog.writeToLogFile("LoginCallback mit Abruf der neuesten Nachrichten und den Kontakten wird aufgerufen. (updateContactlist)"); + + BeWoChatApplication.sendStatusRequest(); + + swipeRefreshLayout.setRefreshing(false); + + ArrayList propertyInfos = new ArrayList<>(); + propertyInfos.add(SoapConnectionManager.BuildProperty("pRecipientPersonOid", SoapConnectionManager.getUser().getPersonOid(), Long.class)); + + final JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest("GetNewestMessages", propertyInfos); + + if(ConnectivityReceiver.isConnected()) { + BeWoLog.writeToLogFile("LoginCallback ist mit dem Internet verbunden. (updateContactlist)"); + if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) { + BeWoLog.writeToLogFile("LoginCallback "); + spiceManager.execute(request, new JsonSoapPrimitiveRequestListenerForNewestMessages()); + } + } else { + BeWoLog.writeToLogFile("LoginCallback ist nicht mit dem Internet verbunden. (updateContactlist)"); +// SocketManager.shutDownConnectionToServer("KontaktChatActivity->"); + SocketManager.loginCallbackAfterConnectionLost = new LoginCallback() { + @Override + public void doCallback() { + BeWoLog.writeToLogFile("loginCallbackAfterConnectionLost im normalen LoginCallback aufgerufen, weil offline. (updateContactlist)"); + spiceManager.execute(request, new JsonSoapPrimitiveRequestListenerForNewestMessages()); + } + }; + } + } + })); + } + }; + + SocketManager.connectToServer("KontaktChatActivity -> Intervall überschritten"); } - })); + } else { + swipeRefreshLayout.setRefreshing(false); + isDownloadOfContacsInProgress = false; + BeWoLog.writeToLogFile("Offline. (KontaktChatActivity)"); + Toast.makeText(getApplicationContext(), "Offline. Keine Aktion möglich.", Toast.LENGTH_LONG).show(); + } } public UIHandler kontaktChatActivityUIHandler = new UIHandler() { @@ -315,6 +436,10 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi @Override public void onResume() { + swipeRefreshLayout.setRefreshing(false); + + BeWoLog.writeToLogFile("Resümiere mit der KontaktChatActivity"); + BeWoChatApplication.activityResumed(); SocketManager.uiHandler = kontaktChatActivityUIHandler; @@ -331,35 +456,48 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi adapter.notifyDataSetChanged(); } + if(shouldReloadLatestMessages) { + BeWoLog.writeToLogFile("Lade die Kontaktliste neu beim Resümieren"); + updateContactList(); + shouldReloadLatestMessages = false; + } + super.onResume(); } @Override public void onStop(){ + swipeRefreshLayout.setRefreshing(false); + spiceManager.shouldStop(); + BeWoLog.writeToLogFile("Stoppe die KontaktChatActivity"); + super.onStop(); } @Override public void onPause() { + swipeRefreshLayout.setRefreshing(false); + + BeWoLog.writeToLogFile("Pausiere die KontaktChatActivity"); + super.onPause(); BeWoChatApplication.activityPaused(); } @Override protected void onStart() { + swipeRefreshLayout.setRefreshing(false); + + BeWoLog.writeToLogFile("Starte die KontaktChatActivity"); + super.onStart(); spiceManager.start(this); } @Override public void onBackPressed() { -// SocketManager.logout(); -// -// Intent intent = new Intent(KontaktChatActivity.this, LoginActivity.class); -// KontaktChatActivity.this.startActivity(intent); - Intent i = new Intent(); i.setAction(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); @@ -372,16 +510,69 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi @Override public void onRequestFailure(SpiceException spiceException) { - Toast.makeText(KontaktChatActivity.this, "Ein Fehler ist beim laden der neuesten Nachrichten aufgetreten.", Toast.LENGTH_SHORT).show(); + BeWoLog.writeToLogFile("Ein Fehler ist beim Laden der neuesten Nachrichten aufgetreten (SoapListenerForNewestMessages->onRequestFailure)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + swipeRefreshLayout.setRefreshing(false); + Toast.makeText(KontaktChatActivity.this, "Ein Fehler ist beim laden der neuesten Nachrichten aufgetreten.", Toast.LENGTH_SHORT).show(); + } + }); } @Override public void onRequestSuccess(SoapPrimitive soapPrimitive) { + runOnUiThread(new Runnable() { + @Override + public void run() { + swipeRefreshLayout.setRefreshing(false); + } + }); + if(soapPrimitive == null) { + BeWoLog.writeToLogFile("Antwort vom Server war null. Ein erneuter Login erfolgt. (SoapListenerForNewestMessages->onRequestSuccess)"); Log.e("KONTAKT_CHAT_ACTIVITY", "Der vom Server zurückgelieferte Wert ist NULL! (Laden der neuesten Nachrichten)"); + + try { + ArrayList propertyInfos = new ArrayList<>(); + + SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0); + String savedTenant = settings.getString(Util.PREFS_TENANT_KEY, null); + String savedUsername = settings.getString(Util.PREFS_USERNAME_KEY, null); + String savedPassword = settings.getString(Util.PREFS_PASSWORD, null); + + byte[] tenantByteArray = Base64.decode(savedTenant, Base64.DEFAULT); + ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray); + + byte[] usernameByteArray = Base64.decode(savedUsername, Base64.DEFAULT); + ByteArrayInputStream usernameStream = new ByteArrayInputStream(usernameByteArray); + + byte[] passwordByteArray = Base64.decode(savedPassword, Base64.DEFAULT); + ByteArrayInputStream passwordStream = new ByteArrayInputStream(passwordByteArray); + + propertyInfos.add(SoapConnectionManager.BuildProperty("pTenant", SecurityUtils.decrypt(tenantStream).toString(), String.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pUsername", SecurityUtils.decrypt(usernameStream).toString(), String.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pPassword", SecurityUtils.decrypt(passwordStream).toString(), String.class)); + + JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.LOGIN_CALL, propertyInfos); + + BeWoLog.writeToLogFile("Lade neueste Nachrichten erneut herunter. (SoapListenerForNewestMessages->onRequestSuccess)"); + spiceManager.execute(request, new KontaktChatActivity.JsonSoapPrimitiveReLoginRequestListener()); + } catch(Exception e) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + } + return; } + BeWoLog.writeToLogFile("Herunterladen der neuesten Nachrichten war erfolgreich. (SoapListenerForNewestMessages->onRequestSuccess)"); + GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(ChatMessage.class, new ChatMessageDeserializer()); @@ -396,9 +587,9 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi if(adapter != null) { for(ContactListItem item : adapter.values) { - if(item.getPersonOid() == message.SenderPersonOid && !item.isTeam && !message.IsTeam || item.isTeam && message.IsTeam && item.getPersonOid() == message.RecipientPersonOid) { + if((item.getPersonOid() == message.SenderPersonOid ||item.getPersonOid() == message.RecipientPersonOid) && !item.isTeam && !message.IsTeam || item.isTeam && message.IsTeam && item.getPersonOid() == message.RecipientPersonOid) { item.setMessagePreview(message.ChatText); - item.setIsNewMessage2Preview(!databaseHandler.GetIsMessageInDatabase(message.ServerseitigeOid)); + item.setIsNewMessage2Preview(!databaseHandler.GetIsMessageInDatabase(message.MessageId)); } } @@ -418,16 +609,72 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi @Override public void onRequestFailure(SpiceException spiceException) { - Toast.makeText(KontaktChatActivity.this, "Ein Fehler ist beim laden der Kontaktliste aufgetreten.", Toast.LENGTH_SHORT).show(); + BeWoLog.writeToLogFile("Laden der Kontakte ist fehlgeschlagen. (JsonSoapPrimitiveRequestListener->onRequestFailure)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(KontaktChatActivity.this, "Ein Fehler ist beim laden der Kontaktliste aufgetreten.", Toast.LENGTH_SHORT).show(); + } + }); } @Override public void onRequestSuccess(SoapPrimitive soapPrimitive) { if(soapPrimitive == null) { + BeWoLog.writeToLogFile("Antwort vom Server war null. Ein erneuter Login erfolgt. (JsonSoapPrimitiveRequestListener->onRequestSuccess)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + swipeRefreshLayout.setRefreshing(false); + } + }); + Log.e(LOGTAG, "Der vom Server zurückgelieferte Wert ist NULL! (Laden der Kontakte)"); + + //TODO: wie im Chat + try { + ArrayList propertyInfos = new ArrayList<>(); + + SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0); + String savedTenant = settings.getString(Util.PREFS_TENANT_KEY, null); + String savedUsername = settings.getString(Util.PREFS_USERNAME_KEY, null); + String savedPassword = settings.getString(Util.PREFS_PASSWORD, null); + + byte[] tenantByteArray = Base64.decode(savedTenant, Base64.DEFAULT); + ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray); + + byte[] usernameByteArray = Base64.decode(savedUsername, Base64.DEFAULT); + ByteArrayInputStream usernameStream = new ByteArrayInputStream(usernameByteArray); + + byte[] passwordByteArray = Base64.decode(savedPassword, Base64.DEFAULT); + ByteArrayInputStream passwordStream = new ByteArrayInputStream(passwordByteArray); + + propertyInfos.add(SoapConnectionManager.BuildProperty("pTenant", SecurityUtils.decrypt(tenantStream).toString(), String.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pUsername", SecurityUtils.decrypt(usernameStream).toString(), String.class)); + propertyInfos.add(SoapConnectionManager.BuildProperty("pPassword", SecurityUtils.decrypt(passwordStream).toString(), String.class)); + + JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.LOGIN_CALL, propertyInfos); + + BeWoLog.writeToLogFile("Lade Kontakte erneut herunter. (JsonSoapPrimitiveRequestListener->onRequestSuccess)"); + spiceManager.execute(request, new KontaktChatActivity.JsonSoapPrimitiveReLoginRequestListener()); + } catch(Exception e) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + } + return; } + BeWoLog.writeToLogFile("Laden der Kontakte war erfolgreich. (JsonSoapPrimitiveRequestListener->onRequestSuccess)"); + + isDownloadOfContacsInProgress = false; + Gson gson = new GsonBuilder().create(); Type listType = new TypeToken>(){}.getType(); @@ -442,19 +689,12 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi oid2VersionList.put(new ChatEntity(item.getPersonOid(), item.isTeam, item.getIsEmployee()), item.getVersion()); } - for(Map.Entry entry : oid2VersionList.entrySet()) { - ChatEntity key = entry.getKey(); - Log.i(LOGTAG, "\nOid: " + key.getOid() + "\nIsTeam: " + key.getIsTeam() + "\nIsEmployee: " + key.getIsEmployee()); - } - for(ChatPerson cp : result) { - Log.i(LOGTAG, cp.Name + " " + cp.IsEmployee); ContactListItem contact = new ContactListItem(cp.Name, cp.Oid, cp.IsTeam, cp.TeamMemberOids, cp.TeamMemberNames, cp.Version, cp.IsEmployee); ChatEntity cliEntity = new ChatEntity(cp.Oid, cp.IsTeam, cp.IsEmployee); if(!oid2VersionList.containsKey(cliEntity)) { - Log.i(LOGTAG, "Nicht in der Klientenliste enthalten"); databaseHandler.addContact(contact); } else if(oid2VersionList.get(cliEntity) < cp.Version) { @@ -495,4 +735,55 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi } } } + + private final class JsonSoapPrimitiveReLoginRequestListener implements RequestListener { + @Override + public void onRequestFailure(SpiceException spiceException) { + runOnUiThread(new Runnable() { + @Override + public void run() { + swipeRefreshLayout.setRefreshing(false); + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Die Serveranfrage ist gescheitert (Erneuter Login). Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + + BeWoLog.writeToLogFile("Erneuter Login ist fehlgeschlagen. (JsonSoapPrimitiveReLoginRequestListener->onRequestFailure)"); + Log.e("GET_ALL_MESSAGES", "Fehler beim erneuten Login: " + spiceException.getMessage()); + } + + @Override + public void onRequestSuccess(SoapPrimitive soapPrimitive) { + if(soapPrimitive == null) { + BeWoLog.writeToLogFile("Antwort vom Server war null. (JsonSoapPrimitiveReLoginRequestListener->onRequestSuccess)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + + return; + } + + String abc = soapPrimitive.toString(); + + BeWoLog.writeToLogFile("Erneuter Login war erfolgreich. (JsonSoapPrimitiveReLoginRequestListener->onRequestSuccess)"); + Log.i("ERNEUTER_LOGIN", "Antwort vom Server erhalten in KONTAKT_CHAT_ACTIVITY"); + + if(abc != null) { + if(abc.contains(";")) { +// Intent kontaktChatActivity = new Intent(getApplicationContext(), KontaktChatActivity.class); +// startActivity(kontaktChatActivity); + } else { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Ein fataler Fehler ist aufgetreten. Bitte Loggen Sie sich erneut ein.", Toast.LENGTH_LONG).show(); + } + }); + } + } + } + } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/LoginActivity.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/LoginActivity.java index 16a99af8b..0234bf04a 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/LoginActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/LoginActivity.java @@ -39,6 +39,7 @@ import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.Calendar; import javax.crypto.NoSuchPaddingException; @@ -49,6 +50,7 @@ import soapConnection.SoapCalls; import soapConnection.SoapConnectionManager; import tcpConnection.LoginCallback; import tcpConnection.SocketManager; +import util.BeWoLog; import util.SecurityUtils; import util.Util; @@ -69,9 +71,37 @@ public class LoginActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { + BeWoLog.writeToLogFile("Erzeuge die LoginActivity"); + super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); + SocketManager.connectionFailureCallback = new LoginCallback() { + @Override + public void doCallback() { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Offline. Aktion nicht möglich.", Toast.LENGTH_LONG).show(); + Log.i("LOGIN", "Verbindung mit dem TCP-Server nicht möglich"); + } + }); + } + }; + + SocketManager.sendFailureCallback = new LoginCallback() { + @Override + public void doCallback() { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "Offline. Senden vorgemerkt.", Toast.LENGTH_LONG).show(); + Log.i("LOGIN", "Verbindung mit dem TCP-Server nicht vorhanden. Nachricht wird später verschickt."); + } + }); + } + }; + mChatCodeView = (EditText) findViewById(R.id.token); mTenantView = (EditText) findViewById(R.id.tenant); mUsernameView = (EditText) findViewById(R.id.username); @@ -133,27 +163,35 @@ public class LoginActivity extends ActionBarActivity { @Override protected void onStart() { + BeWoLog.writeToLogFile("Starte die LoginActivity"); + super.onStart(); spiceManager.start(this); } @Override protected void onStop() { + BeWoLog.writeToLogFile("Stoppe die LoginActivity"); + spiceManager.shouldStop(); super.onStop(); } @Override public void onPause() { + BeWoLog.writeToLogFile("Pausiere die LoginActivity"); + super.onPause(); BeWoChatApplication.activityPaused(); } @Override protected void onResume() { + BeWoLog.writeToLogFile("Resümiere mit der LoginActivity"); + BeWoChatApplication.activityResumed(); - if(SoapConnectionManager.User != null) { + if(SoapConnectionManager.getUser() != null) { Log.i("LOGIN", "Benutzer ist angemeldet"); } else { Log.i("LOGIN", "Benutzer ist NICHT angemeldet"); @@ -163,6 +201,8 @@ public class LoginActivity extends ActionBarActivity { } private void attemptLogin() { + BeWoLog.writeToLogFile("Versuche Login auf dem Soap-Server von der LoginActivity aus."); + mTenantView.setError(null); mChatCodeView.setError(null); mUsernameView.setError(null); @@ -250,47 +290,70 @@ public class LoginActivity extends ActionBarActivity { } } - private final class JsonSoapPrimitiveRequestListener implements RequestListener { + public final class JsonSoapPrimitiveRequestListener implements RequestListener { @Override public void onRequestFailure(SpiceException spiceException) { - showProgress(false); + BeWoLog.writeToLogFile("Login ist fehlgeschlagen (LoginActivity->JsonSoapPrimitiveRequestListener->onRequestFailure)"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + showProgress(false); + + Toast.makeText(getApplicationContext(), "Offline. Anmeldung nicht möglich", Toast.LENGTH_LONG).show(); + } + }); + Log.e("Error", spiceException.getMessage()); } @Override public void onRequestSuccess(SoapPrimitive soapPrimitive) { if(soapPrimitive == null) { - showProgress(false); - showLoginUIErrors(true, true, true, true); + BeWoLog.writeToLogFile("Null vom Server erhalten (LoginActivity->JsonSoapPrimitiveRequestListener->onRequestSuccess)"); - Toast.makeText(LoginActivity.this, "Login nicht möglich", Toast.LENGTH_SHORT).show(); + runOnUiThread(new Runnable() { + @Override + public void run() { + showProgress(false); + showLoginUIErrors(true, true, true, true); + + Toast.makeText(LoginActivity.this, "Login nicht möglich", Toast.LENGTH_SHORT).show(); + } + }); return; } + BeWoChatApplication.lastOnlineTS = Calendar.getInstance().getTime(); + String abc = soapPrimitive.toString(); if(abc != null) { - + BeWoLog.writeToLogFile("Der Loginversuch war erfolgreich (LoginActivity->JsonSoapPrimitiveRequestListener->onRequestSuccess)"); Log.i("LOGIN", abc); if(abc.contains(";")) { + BeWoLog.writeToLogFile("Der User ist angemeldet (LoginActivity->JsonSoapPrimitiveRequestListener->onRequestSuccess)"); + String[] blubb = abc.split(";"); - SoapConnectionManager.User = new ApplicationUser(blubb[1], blubb[2], Long.valueOf(blubb[0]), Long.valueOf(blubb[3])); + SoapConnectionManager.setUser(new ApplicationUser(blubb[1], blubb[2], Long.valueOf(blubb[0]), Long.valueOf(blubb[3]))); + + Log.i("LOGIN", "UserPersonOid: " + SoapConnectionManager.getUser().getPersonOid()); DatabaseHandler databaseHandler = DatabaseHandler.getInstance(getApplicationContext()); int owner = databaseHandler.getOwnerOid(); if(owner == 0) { - databaseHandler.insertOwnerOid(SoapConnectionManager.User.getPersonOid().intValue()); - } else if(owner != SoapConnectionManager.User.getPersonOid().intValue()) { + databaseHandler.insertOwnerOid(SoapConnectionManager.getUser().getPersonOid().intValue()); + } else if(owner != SoapConnectionManager.getUser().getPersonOid().intValue()) { databaseHandler.clearDatabase(); - databaseHandler.insertOwnerOid(SoapConnectionManager.User.getPersonOid().intValue()); + databaseHandler.insertOwnerOid(SoapConnectionManager.getUser().getPersonOid().intValue()); } - SoapConnectionManager.User.setTenant(mTenantView.getText().toString()); + SoapConnectionManager.getUser().setTenant(mTenantView.getText().toString()); if(mRememberMeCheckBoxView.isChecked()) { ByteArrayOutputStream tokenOutputStream = new ByteArrayOutputStream(); @@ -321,11 +384,13 @@ public class LoginActivity extends ActionBarActivity { SocketManager.tenant = mTenantView.getText().toString(); - SocketManager.loginCallback = new LoginCallback() { + SocketManager.initialLoginCallback = new LoginCallback() { @Override public void doCallback() { Log.e("LOGIN_CALLBACK", "LoginCallback aufgerufen. Ist verbunden und ruft die ChatActivity nun auf."); + BeWoLog.writeToLogFile("Rufe die KontaktChatActivity auf (LoginActivity->JsonSoapPrimitiveRequestListener->onRequestSuccess)"); + runOnUiThread(new Runnable() { @Override public void run() { @@ -338,21 +403,25 @@ public class LoginActivity extends ActionBarActivity { } }; - SocketManager.connectToServer(); + SocketManager.connectToServer("LoginActivity"); } else { showProgress(false); switch(abc) { case "WrongTenant": + BeWoLog.writeToLogFile("Falsche Kundennummer beim Login"); showLoginUIErrors(false, true, false, false); break; case "WrongCredentials": + BeWoLog.writeToLogFile("Falsche Credentials beim Login"); showLoginUIErrors(false, false, true, true); break; case "Unauthorized": + BeWoLog.writeToLogFile("Chat-Recht fehlt beim Login"); Toast.makeText(getApplicationContext(), "Sie sind nicht zum Chatten autorisiert. Bitte wenden Sie sich an Ihren Administrator.", Toast.LENGTH_LONG).show(); break; default: + BeWoLog.writeToLogFile("Unbekannter Fehler beim Login"); Toast.makeText(getApplicationContext(), "Ein unbekannter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.", Toast.LENGTH_LONG).show(); break; } @@ -413,4 +482,8 @@ public class LoginActivity extends ActionBarActivity { mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); } } + + @Override + public void onBackPressed() { + } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java deleted file mode 100644 index e65a15512..000000000 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java +++ /dev/null @@ -1,185 +0,0 @@ -package beyondsoft.bewomitarbeiterapp; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; - -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.Button; - -import java.util.ArrayList; - -import Database.DatabaseHandler; - -import entities.ChatMessage; - -import soapConnection.Packet; -import soapConnection.SoapConnectionManager; - -import tcpConnection.SocketManager; -import tcpConnection.UIHandler; -import util.ConnectivityReceiver; -import util.Util; - - -public class MainActivityMitarbeiter extends Activity implements ConnectivityReceiver.ConnectivityReceiverListener { - - protected Button dokubutton; - protected Button chatbutton; - protected Button logoutbutton; - - protected String loggedInUserName; - - private UIHandler mainUIHandler; - - int loggedInUserPersonOid; - - private final static String LOGTAG = "MAIN_ACTIVITY"; - - @Override - public void onNetworkConnectionChanged(boolean isConnected) { - Util.reconnectWithServer(isConnected, MainActivityMitarbeiter.this); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main_activity_mitarbeiter); - - SocketManager.connectToServer(); - - setzeButtonListener(); - - loggedInUserName = SoapConnectionManager.User.getFullName(); - - loggedInUserPersonOid = SoapConnectionManager.User.getPersonOid() <= Integer.MAX_VALUE ? SoapConnectionManager.User.getPersonOid().intValue() : 0; - - mainUIHandler = new UIHandler() { - @Override - public void updateUserInterface(Packet chatPacket) { - switch(chatPacket.ChatDataIdentifier) { - case MESSAGE: - Util.SetNotify(chatPacket.ChatName, chatPacket.ChatMessage, chatPacket.SenderPersonOid, false, null, null, chatPacket.IsEmployee, getApplicationContext()); - - break; - - case MESSAGE_RESPONSE: - DatabaseHandler databaseHandler = DatabaseHandler.getInstance(getApplicationContext()); - - ChatMessage cm = databaseHandler.getChatMessageById(chatPacket.ClientseitigeOid); - - cm.ServerseitigeOid = chatPacket.ServerseitigeOid; - cm.IsDelivered = true; - - databaseHandler.updateChatMessage(cm); - - break; - case STATUS_NOTIFICATION_LOGIN_BROADCAST: - String[] bitch = chatPacket.ChatMessage.split(","); - - for (String aBitch : bitch) { - SocketManager.onlinePersonOids.add(Integer.parseInt(aBitch)); - } - - break; - case STATUS_NOTIFICATION_LOGIN: - if(!SocketManager.onlinePersonOids.contains(chatPacket.SenderPersonOid)) { - SocketManager.onlinePersonOids.add(chatPacket.SenderPersonOid); - } - - break; - case STATUS_NOTIFICATION_LOGOUT: - if(SocketManager.onlinePersonOids.contains(chatPacket.SenderPersonOid)) { - SocketManager.onlinePersonOids.remove(Integer.valueOf(chatPacket.SenderPersonOid)); - } - - break; - - case TEAM: - ContactListItem cli = DatabaseHandler.getInstance(getApplicationContext()).getContactByPersonOid(chatPacket.RecipientPersonOid, true); - - Util.SetNotify(chatPacket.ChatName, chatPacket.ChatMessage, chatPacket.RecipientPersonOid, true, cli.teamMemberOids, cli.teamMemberNames, cli.getIsEmployee(), getApplicationContext()); - break; - } - } - }; - - Util.sendUnsentMessages(MainActivityMitarbeiter.this); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_main_activity_mitarbeiter, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - - //noinspection SimplifiableIfStatement - - if (id == R.id.action_Logout) { - System.exit(0); - } - - return super.onOptionsItemSelected(item); - } - - public void setzeButtonListener() { - - dokubutton = (Button) findViewById(R.id.Dokubutton); - dokubutton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - - startActivity(new Intent(getBaseContext(),WebdokuActivity.class)); - - } - }); - - chatbutton = (Button) findViewById(R.id.Chatbutton); - chatbutton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - Intent kontaktChatActivity = new Intent(getBaseContext(), KontaktChatActivity.class); - - startActivity(kontaktChatActivity); - } - }); - - logoutbutton = (Button) findViewById(R.id.Logoutbutton); - logoutbutton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - SocketManager.logout(); - - finish(); - System.exit(0); - } - }); - } - - @Override - public void onResume() { - SocketManager.uiHandler = mainUIHandler; - - BeWoChatApplication.getInstance().setConnectivityListener(this); - - super.onResume(); - } - - @Override - public void onBackPressed() { - Log.i(LOGTAG, "Logge aus..."); - - SocketManager.logout(); - - finish(); - System.exit(0); - } -} 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 148e87902..a68e76179 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MessageAdapter.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MessageAdapter.java @@ -5,8 +5,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.ImageView; import android.widget.TextView; +import java.util.ArrayList; import java.util.List; import Database.DatabaseHandler; @@ -19,12 +21,13 @@ import soapConnection.SoapConnectionManager; public class MessageAdapter extends ArrayAdapter { private Activity activity; - //private List messages; + public ArrayList messages; + public MessageAdapter(Activity context, int resource, List objects) { super(context, resource, objects); this.activity = context; - //this.messages = objects; + this.messages = new ArrayList<>(objects); } @Override @@ -35,7 +38,7 @@ public class MessageAdapter extends ArrayAdapter { int layoutResource; ChatMessage chatMessage = getItem(position); - if (chatMessage.SenderPersonOid == SoapConnectionManager.User.getPersonOid()) { + if (chatMessage.SenderPersonOid == SoapConnectionManager.getUser().getPersonOid()) { layoutResource = R.layout.item_chat_right; }else { layoutResource = R.layout.item_chat_left; @@ -47,7 +50,11 @@ public class MessageAdapter extends ArrayAdapter { holder.msg.setText(chatMessage.ChatText); - if(chatMessage.IsTeam && chatMessage.SenderPersonOid != SoapConnectionManager.User.getPersonOid()) { + if(holder.pending_msg_image != null && chatMessage.ServerseitigeOid != 0) { + holder.pending_msg_image.setVisibility(View.INVISIBLE); + } + + if(chatMessage.IsTeam && chatMessage.SenderPersonOid != SoapConnectionManager.getUser().getPersonOid()) { DatabaseHandler instance = DatabaseHandler.getInstance(this.getContext()); ContactListItem sender = instance.getContactByPersonOid(chatMessage.SenderPersonOid, false); @@ -57,7 +64,7 @@ public class MessageAdapter extends ArrayAdapter { holder.teamMemberName.setVisibility(View.VISIBLE); } - if(chatMessage.SenderPersonOid == SoapConnectionManager.User.getPersonOid()){ + if(chatMessage.SenderPersonOid == SoapConnectionManager.getUser().getPersonOid()){ holder.dateIn.setText(chatMessage.getInsTsAsString()); } else { holder.dateOut.setText(chatMessage.getInsTsAsString()); @@ -84,14 +91,14 @@ public class MessageAdapter extends ArrayAdapter { private TextView dateOut; private TextView dateIn; private TextView teamMemberName; - //private TextView send_tick; + private ImageView pending_msg_image; - public ViewHolder(View v) { + ViewHolder(View v) { msg = (TextView) v.findViewById(R.id.txt_msg); dateOut = (TextView)v.findViewById(R.id.DateOUT); dateIn = (TextView)v.findViewById(R.id.DateIN); teamMemberName = (TextView) v.findViewById(R.id.teamMember); - //send_tick = (TextView)v.findViewById(R.id.txt_msg_tick); + pending_msg_image = (ImageView) v.findViewById(R.id.pending_msg_img); } } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatMessage.java b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatMessage.java index eb0cf3ece..63e5958d8 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatMessage.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatMessage.java @@ -7,7 +7,7 @@ import java.util.Locale; /** * Created by JettenM on 26.07.2016. */ -public class ChatMessage { +public class ChatMessage implements Comparable { public int Id; public int SenderPersonOid; public int RecipientPersonOid; @@ -16,26 +16,30 @@ public class ChatMessage { public boolean IsDelivered; public int ServerseitigeOid; public boolean IsTeam; + public String MessageId; + public Date SendDate; - public ChatMessage(int id, int senderPersonOid, int recipientPersonOid, Date insTs, String chatText, boolean isDelivered, int serverseitigeOid, boolean isTeam) { - Id = id; - SenderPersonOid = senderPersonOid; + public ChatMessage(int id, int senderPersonOid, int recipientPersonOid, Date insTs, String chatText, boolean isDelivered, int serverseitigeOid, boolean isTeam, String messageId) { + Id = id; + SenderPersonOid = senderPersonOid; RecipientPersonOid = recipientPersonOid; - InsTs = insTs; - ChatText = chatText; - IsDelivered = isDelivered; - ServerseitigeOid = serverseitigeOid; - IsTeam = isTeam; + InsTs = insTs; + ChatText = chatText; + IsDelivered = isDelivered; + ServerseitigeOid = serverseitigeOid; + IsTeam = isTeam; + MessageId = messageId; } - public ChatMessage(int senderPersonOid, int recipientPersonOid, Date insTs, String chatText, boolean isDelivered, int serverseitigeOid, boolean isTeam) { - SenderPersonOid = senderPersonOid; + public ChatMessage(int senderPersonOid, int recipientPersonOid, Date insTs, String chatText, boolean isDelivered, int serverseitigeOid, boolean isTeam, String messageId) { + SenderPersonOid = senderPersonOid; RecipientPersonOid = recipientPersonOid; - InsTs = insTs; - ChatText = chatText; - IsDelivered = isDelivered; - ServerseitigeOid = serverseitigeOid; - IsTeam = isTeam; + InsTs = insTs; + ChatText = chatText; + IsDelivered = isDelivered; + ServerseitigeOid = serverseitigeOid; + IsTeam = isTeam; + MessageId = messageId; } public String getInsTsAsString() { @@ -43,6 +47,15 @@ public class ChatMessage { return dateFormat.format(InsTs); } + @Override + public int compareTo(ChatMessage cm) { + if(InsTs == null || cm.InsTs == null) { + return 0; + } + + return InsTs.compareTo(cm.InsTs); + } + @Override public String toString() { String asString = "Id: " + Id; @@ -53,6 +66,7 @@ public class ChatMessage { asString += "\nIsDelivered: " + IsDelivered; asString += "\nServerseitigeOid: " + ServerseitigeOid; asString += "\nIsTeam: " + IsTeam; + asString += "\nMessageId: " + MessageId; return asString; } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/ApplicationUser.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/ApplicationUser.java index afae4946a..005329a56 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/ApplicationUser.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/ApplicationUser.java @@ -52,7 +52,7 @@ public class ApplicationUser { } public boolean getIsEmployee() { - return employeeOid == 0 && customerOid > 0; + return employeeOid != null && customerOid == null; } public ApplicationUser(String fullName, String username, Long employeeOid, Long personOid) { diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java index 92e3393ce..ec5035eb2 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/DataIdentifier.java @@ -19,7 +19,8 @@ public enum DataIdentifier { STATUS_NOTIFICATION_ONLINE(12), STATUS_NOTIFICATION_OFFLINE(13), LOGIN_SUCCESS(14), - STATUS_REQUEST(15); + STATUS_REQUEST(15), + KEEP_ALIVE(16); private final int value; DataIdentifier(int value) { diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java index 6c76eb267..250eda146 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/Packet.java @@ -26,29 +26,31 @@ public class Packet { public int ServerseitigeOid; public int ClientseitigeOid; public boolean IsEmployee; + public String MessageId; public Packet() { ChatDataIdentifier = DataIdentifier.NULL; ChatMessage = ""; - ChatName = SoapConnectionManager.User.getFullName(); + ChatName = SoapConnectionManager.getUser().getFullName(); Tenant = ""; - SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue(); + SenderPersonOid = SoapConnectionManager.getUser().getPersonOid().intValue(); RecipientPersonOid = 0; IsDelivered = false; MessageTimeStamp = Calendar.getInstance().getTime(); - IsEmployee = SoapConnectionManager.User.getIsEmployee(); + IsEmployee = SoapConnectionManager.getUser().getIsEmployee(); + MessageId = ""; } - public String getFormattedMessageTimeStamp() { - DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + private String getFormattedMessageTimeStamp() { + DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.GERMAN); return df.format(MessageTimeStamp); } //Aufbau Message: // die ersten fünf ";" ignorieren - // SenderOid;RecipientOid;ClientNameLength;MessageLength;ChatDataIdentifier;ServerseitigeOid;ClientseitigeOid;Tenant;IsEmployee;[ClientName][ChatMessage][MessageTimeStamp][IsDelivered] + // SenderOid;RecipientOid;ClientNameLength;MessageLength;ChatDataIdentifier;ServerseitigeOid;ClientseitigeOid;Tenant;IsEmployee;MessageId;[ClientName][ChatMessage][MessageTimeStamp][IsDelivered] - //23;281;20;389;1;38;932[Tenant]; 8 Semikola + //23;281;20;389;1;38;932;[Tenant];1; 10 Semikola public Packet(String message) { Log.i("PACKET_CONSTRUCTOR_MSG", message); @@ -64,6 +66,7 @@ public class Packet { String clientseitigeOidString = gesplittet[6]; Tenant = gesplittet[7]; String isEmployeeString = gesplittet[8]; + MessageId = gesplittet[9]; SenderPersonOid = Integer.parseInt(senderPersonOidString); RecipientPersonOid = Integer.parseInt(recipientPersonOidString); @@ -76,14 +79,14 @@ public class Packet { 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() + 10; + int headerLength = senderPersonOidString.length() + recipientPersonOidString.length() + chatNameLengthString.length() + chatMessageLengthString.length() + chatIdentifierString.length() + Tenant.length() + serverseitigeOidString.length() + clientseitigeOidString.length() + MessageId.length() + 12; String actualMessage = message.substring(headerLength - 1); ChatName = actualMessage.substring(0, chatNameLength); ChatMessage = actualMessage.substring(chatNameLength, chatMessageLength + chatNameLength); - String dateString = actualMessage.substring(chatMessageLength + chatNameLength); + String dateString = actualMessage.substring(chatMessageLength + chatNameLength, actualMessage.length() - 1); DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.GERMAN); @@ -99,7 +102,7 @@ public class Packet { } public byte[] getDataStream() { - String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length()+ ";" + ChatDataIdentifier.getValue() + ";" + ServerseitigeOid + ";" + ClientseitigeOid + ";" + Tenant + ";" + (IsEmployee ? 1 : 0) + ";"; + String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length()+ ";" + ChatDataIdentifier.getValue() + ";" + ServerseitigeOid + ";" + ClientseitigeOid + ";" + Tenant + ";" + (IsEmployee ? 1 : 0) + ";" + MessageId + ";"; dataStreamAsString += ChatName + ChatMessage + getFormattedMessageTimeStamp() + "" + (IsDelivered ? 1 : 0); @@ -117,6 +120,23 @@ public class Packet { } private void writeToLog(String prefix) { - Log.i("PACKET_LOG", prefix + ": SenderPersonOid: " + SenderPersonOid + "\nRecipientPersonOid: " + RecipientPersonOid + "\nChatDataIdentifier: " + ChatDataIdentifier.name() + "\nChatName: " + ChatName + "\nChatMessage: " + ChatMessage + "\nTenant: " + Tenant + "\nIsDelivered: " + IsDelivered + "\nMessageTimeStamp: " + MessageTimeStamp + "\nServerseitigeOid: " + ServerseitigeOid + "\nClientseitigeOid: " + ClientseitigeOid + "\nIsEmployee: " + IsEmployee); + Log.i("PACKET_LOG", prefix + ": SenderPersonOid: " + SenderPersonOid + "\nRecipientPersonOid: " + RecipientPersonOid + "\nChatDataIdentifier: " + ChatDataIdentifier.name() + "\nChatName: " + ChatName + "\nChatMessage: " + ChatMessage + "\nTenant: " + Tenant + "\nIsDelivered: " + IsDelivered + "\nMessageTimeStamp: " + MessageTimeStamp + "\nServerseitigeOid: " + ServerseitigeOid + "\nClientseitigeOid: " + ClientseitigeOid + "\nIsEmployee: " + IsEmployee + "\nMessageId: " + MessageId); + } + + + @Override + public String toString() { + return "SenderPersonOid: " + SenderPersonOid + + "\nRecipientPersonOid: " + RecipientPersonOid + + "\nChatDataIdentifier: " + ChatDataIdentifier.name() + + "\nChatName: " + ChatName + + "\nChatMessage: " + ChatMessage + + "\nTenant: " + Tenant + + "\nIsDelivered: " + IsDelivered + + "\nMessageTimeStamp: " + MessageTimeStamp + + "\nServerseitigeOid: " + ServerseitigeOid + + "\nClientseitigeOid: " + ClientseitigeOid + + "\nIsEmployee: " + IsEmployee + + "\nMessageId: " + MessageId; } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java index 8770df27f..d987f06b3 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java @@ -11,6 +11,8 @@ public class SoapCalls { public static String GET_ALL_CHAT_MESSAGES = "GetAllChatMessagesForSenderAndRecipient"; public static String KEEP_ALIVE = "KeepAlive"; + public static String CHECK_MESSAGE_IDS = "CheckChatMessagesByUUIDs"; + //TODO: "app4.bewoplaner.de";// public static String DESTINATION_ADDRESS = "app4.bewoplaner.de"; public static int DESTINATION_PORT = 5000; diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapConnectionManager.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapConnectionManager.java index 4bca0a562..a70f804c7 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapConnectionManager.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapConnectionManager.java @@ -17,7 +17,15 @@ import java.util.ArrayList; * Created by JettenM on 05.07.2016. */ public class SoapConnectionManager { - public static ApplicationUser User; + private static ApplicationUser user; + + public static ApplicationUser getUser() { + return user; + } + + public static void setUser(ApplicationUser pUser) { + user = pUser; + } private static final String LOGTAG = "SoapConnectionManager"; diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/tcpConnection/SocketManager.java b/Android/BewoMitarbeiterApp/app/src/main/java/tcpConnection/SocketManager.java index b82d1b854..b5f7ccdab 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/tcpConnection/SocketManager.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/tcpConnection/SocketManager.java @@ -1,6 +1,7 @@ package tcpConnection; import android.util.Log; +import android.widget.Toast; import java.io.DataOutputStream; import java.io.IOException; @@ -9,6 +10,7 @@ import java.io.UnsupportedEncodingException; import java.net.NetworkInterface; import java.net.Socket; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -24,6 +26,8 @@ import entities.NotificationLog; import soapConnection.DataIdentifier; import soapConnection.Packet; import soapConnection.SoapCalls; +import util.BeWoLog; +import util.ConnectivityReceiver; import util.Util; /** @@ -41,29 +45,72 @@ public class SocketManager { private static SocketListener socketListener; public static UIHandler uiHandler; public static LoginCallback loginCallback; + public static LoginCallback initialLoginCallback; + public static LoginCallback connectionFailureCallback; + public static LoginCallback loginCallbackAfterConnectionLost; + public static LoginCallback sendFailureCallback; private static DataOutputStream dataOutputStream; public static ArrayList onlinePersonOids = new ArrayList<>(); public static ArrayList onlineEntities = new ArrayList<>(); public static HashMap notificationEntities = new HashMap<>(); + public static LoginCallback loginCallback2; + public static LoginCallback socketConnectionFailedCallback; - public static void connectToServer(){ + public static void connectToServer(String herkunft){ + BeWoLog.writeToLogFile("connectToServer wird aufgerufen von " + herkunft); new Thread(new ConnectionOpener()).start(); } + public static void shutDownConnectionToServer(String herkunft){ + BeWoLog.writeToLogFile("Aufruf von " + herkunft + ". (shutDownConnectionToServer)"); + new Thread(new ConnectionCloser()).start(); + } + public static void sendMessage(Packet packet) { new Thread(new MessageSender(packet.getDataStream())).start(); } + private static boolean loginInProgress = false; private static class ConnectionOpener implements Runnable { public void run() { try { + if(loginInProgress) { + BeWoLog.writeToLogFile("Login wird von anderer Stelle versucht. (ConnectionOpener)"); + return; + } + + BeWoLog.writeToLogFile("Login mit dem TCP-Server wird ausgeführt"); + + loginInProgress = true; if(socket != null) { socket.close(); } + if (dataOutputStream != null) { + dataOutputStream.flush(); + dataOutputStream.close(); + } + + if(socketListener != null) { + socketListener.isRunning = false; + } + socket = null; - socket = new Socket(SoapCalls.DESTINATION_ADDRESS, SoapCalls.DESTINATION_PORT); + + try { + socket = new Socket(SoapCalls.DESTINATION_ADDRESS, SoapCalls.DESTINATION_PORT); + + BeWoChatApplication.lastOnlineTS = Calendar.getInstance().getTime(); + } catch(Exception e) { + BeWoChatApplication.writeExceptionToLog(e); + + if(socketConnectionFailedCallback != null) { + socketConnectionFailedCallback.doCallback(); + } + + return; + } dataOutputStream = null; onlinePersonOids.clear(); @@ -71,22 +118,38 @@ public class SocketManager { dataOutputStream = new DataOutputStream(socket.getOutputStream()); + socketListener = null; socketListener = new SocketListener(); listenerThread = new Thread(socketListener); listenerThread.start(); + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + loginInProgress = false; + BeWoLog.writeToLogFile("loginInProgress wird nach 10 Sekunden zurückgesetzt."); + } + }, 10*1000); + loginOnServer(); } catch(Exception exception) { + BeWoChatApplication.writeExceptionToLog(exception); + socket = null; try { new Timer().schedule(new TimerTask() { @Override public void run() { - connectToServer(); + connectToServer("Login-Timeout in ConnectionOpener"); } - }, 5000); + }, 11000); } catch(Exception exception2) { + BeWoChatApplication.writeExceptionToLog(exception2); exception2.printStackTrace(); + if(connectionFailureCallback != null) { + connectionFailureCallback.doCallback(); + } } exception.printStackTrace(); @@ -101,11 +164,16 @@ public class SocketManager { packet.ChatDataIdentifier = DataIdentifier.LOGOUT; - new Thread(new MessageSender(packet.getDataStream())).start(); + BeWoLog.writeToLogFile("Schicke Logout-Packet an den TCP-Server. (logout)"); + new Thread(new MessageSender(packet.getDataStream())).start(); + //TODO: komplett beenden } catch(Exception exception) { + BeWoChatApplication.writeExceptionToLog(exception); exception.printStackTrace(); } + } else { + BeWoLog.writeToLogFile("Logout-Packet konnte nicht an den TCP-Server gesendet werden. (logout)"); } } @@ -117,19 +185,28 @@ public class SocketManager { packet.ChatMessage = getMACAddress(); packet.ChatDataIdentifier = DataIdentifier.LOGIN; + BeWoLog.writeToLogFile("Schicke Login-Packet an den TCP-Server. (loginOnServer)"); + new Thread(new MessageSender(packet.getDataStream())).start(); } catch(Exception exception) { + BeWoChatApplication.writeExceptionToLog(exception); exception.printStackTrace(); } + } else { + BeWoLog.writeToLogFile("Login-Packet konnte nicht an den TCP-Server gesendet werden. (loginOnServer)"); } } public static class ConnectionCloser implements Runnable{ public void run(){ try { + BeWoLog.writeToLogFile("Schließe die Verbindung zum TCP-Server. (ConnectionCloser)"); + if (dataOutputStream != null) { dataOutputStream.flush(); dataOutputStream.close(); + } else { + BeWoLog.writeToLogFile("dataOutputStream ist null. (ConnectionCloser)"); } if (socket != null) { @@ -137,15 +214,16 @@ public class SocketManager { } } catch (IOException se) { + BeWoChatApplication.writeExceptionToLog(se); se.printStackTrace(); } } } - public static class MessageSender implements Runnable { + private static class MessageSender implements Runnable { byte[] packetToSend; - public MessageSender(byte[] packet2Send) { + MessageSender(byte[] packet2Send) { packetToSend = packet2Send; } @@ -153,35 +231,71 @@ public class SocketManager { public void run() { if(socket == null || !socket.isConnected()) { Log.e("MESSAGE_SENDER", "Socket ist nicht verbunden"); + BeWoLog.writeToLogFile("Socket ist nicht mit dem Server verbunden. (MessageSender)"); } - if(socket != null && dataOutputStream != null) { - try { - dataOutputStream.write(packetToSend); - dataOutputStream.flush(); - } catch (IOException e) { - try { - Packet packet = new Packet(new String(packetToSend, "UTF-8")); + if(ConnectivityReceiver.isConnected()) { + if ((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) { + if(socket != null && dataOutputStream != null) { + try { + //TODO: mit Versenden der nicht verschickten Nachrichten synchronisieren + + dataOutputStream.write(packetToSend); + dataOutputStream.flush(); - if(packet.ChatDataIdentifier == DataIdentifier.MESSAGE || packet.ChatDataIdentifier == DataIdentifier.TEAM) { DatabaseHandler db = DatabaseHandler.getInstance(BeWoChatApplication.getInstance().getApplicationContext()); - ChatMessage undeliveredMessage = db.getChatMessageById(packet.ClientseitigeOid); - if(undeliveredMessage != null) { - undeliveredMessage.IsDelivered = false; - int affectedRows = db.updateChatMessage(undeliveredMessage); - } - } - } catch (UnsupportedEncodingException e1) { - e1.printStackTrace(); - } + Packet packet = new Packet(new String(packetToSend, "UTF-8")); - e.printStackTrace(); + ChatMessage sentMessage = db.getChatMessageById(packet.ClientseitigeOid); + + if(sentMessage != null) { + sentMessage.SendDate = Calendar.getInstance().getTime(); + int affectedRows = db.updateChatMessage(sentMessage); + Log.i("MESSAGE_SENDER", "SendDate wurde erfolgreich aktualisiert: " + (affectedRows == 1)); + } + } catch (IOException e) { + BeWoChatApplication.writeExceptionToLog(e); + + try { + Packet packet = new Packet(new String(packetToSend, "UTF-8")); + + if(packet.ChatDataIdentifier == DataIdentifier.MESSAGE || packet.ChatDataIdentifier == DataIdentifier.TEAM) { + DatabaseHandler db = DatabaseHandler.getInstance(BeWoChatApplication.getInstance().getApplicationContext()); + ChatMessage undeliveredMessage = db.getChatMessageById(packet.ClientseitigeOid); + if(undeliveredMessage != null) { + undeliveredMessage.IsDelivered = false; + int affectedRows = db.updateChatMessage(undeliveredMessage); + } + } + +// SocketManager.shutDownConnectionToServer("MessageSender->Socket ist nicht erreichbar."); + SocketManager.connectToServer("MessageSender beim gescheiterten Versenden einer Nachricht."); + } catch (UnsupportedEncodingException e1) { + BeWoChatApplication.writeExceptionToLog(e1); + e1.printStackTrace(); + } + + e.printStackTrace(); + } + } else { +// SocketManager.shutDownConnectionToServer("MessageSender->Socket und/oder OutputStream sind null"); + SocketManager.connectToServer("MessageSender. Socket und/oder OutputStream sind null"); + } + } else { + BeWoLog.writeToLogFile("Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMilliseconds() + " Minuten. (MessageSender)"); + } + } else { + BeWoLog.writeToLogFile("Ist nicht mit dem Internet verbunden. (MessageSender)"); + + if(sendFailureCallback != null) { + BeWoLog.writeToLogFile("Führe sendFailureCallback aus. (MessageSender)"); + sendFailureCallback.doCallback(); } } } } - public static class SocketListener implements Runnable { + private static class SocketListener implements Runnable { Packet chatPacket; @@ -191,6 +305,8 @@ public class SocketManager { public void run() { try { while (isRunning) { + Thread.currentThread().sleep(1000); + Log.i("SOCKET_MANAGER", "Lausche..."); if (socket != null) { if (socket.isConnected()) { @@ -202,40 +318,65 @@ public class SocketManager { continue; } + BeWoChatApplication.lastOnlineTS = Calendar.getInstance().getTime(); + byte[] message = new byte[size]; stream.read(message, 0, size); try { chatPacket = new Packet(new String(message, "UTF-8")); - Log.i("SOCKET_LISTENER", "Erstelle Packet; " + (chatPacket.ChatMessage.isEmpty() ? "<>" : chatPacket.ChatMessage) + "; Typ: " + chatPacket.ChatDataIdentifier + ": " + new String(message, "UTF-8")); } catch(Exception e) { + BeWoChatApplication.writeExceptionToLog(e); e.printStackTrace(); } - if(chatPacket.ChatDataIdentifier.equals(DataIdentifier.LOGIN_SUCCESS) && loginCallback != null) { + if(chatPacket.ChatDataIdentifier.equals(DataIdentifier.LOGIN_SUCCESS)) { + loginInProgress = false; + + BeWoLog.writeToLogFile("Der Login am TCP-Server war erfolgreich. (SocketManager)"); Log.i(LOGTAG, "Der Login war erfolgreich"); - loginCallback.doCallback(); + if(initialLoginCallback != null) { + initialLoginCallback.doCallback(); + } + + if(loginCallback != null) { + loginCallback.doCallback(); + } + + if(loginCallback2 != null) { + loginCallback2.doCallback(); + } + + if(loginCallbackAfterConnectionLost != null) { + loginCallbackAfterConnectionLost.doCallback(); + } } - try { - switch (chatPacket.ChatDataIdentifier) { - case MESSAGE: + BeWoLog.writeToLogFile("Erhalte Packet mit Identifier: " + chatPacket.ChatDataIdentifier.name()); + Log.i("SOCKET_MANAGER", "Erhalte Packet mit Identifier: " + chatPacket.ChatDataIdentifier.name()); + switch (chatPacket.ChatDataIdentifier) { + case KEEP_ALIVE: + + break; + case MESSAGE: + BeWoLog.writeToLogFile("Empfange Nacahricht. (SocketManager)"); Log.i(LOGTAG, "Empfange Nacahricht"); - databaseHandler.addChatMessage(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, false)); + databaseHandler.addChatMessage(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, false, chatPacket.MessageId)); break; case TEAM: - - databaseHandler.addChatMessage(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, true)); + BeWoLog.writeToLogFile("Empfange Team-Nacahricht. (SocketManager)"); + databaseHandler.addChatMessage(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, true, chatPacket.MessageId)); break; case MESSAGE_RESPONSE: + BeWoLog.writeToLogFile("Empfange Zustellbestätigung. (SocketManager)"); ChatMessage cm = databaseHandler.getChatMessageById(chatPacket.ClientseitigeOid); cm.ServerseitigeOid = chatPacket.ServerseitigeOid; @@ -244,7 +385,7 @@ public class SocketManager { databaseHandler.updateChatMessage(cm); break; case STATUS_NOTIFICATION_LOGIN: - + BeWoLog.writeToLogFile("Benutzer " + chatPacket.ChatName + " ist jetzt online. (SocketManager)"); if(!SocketManager.onlinePersonOids.contains(chatPacket.SenderPersonOid)) { SocketManager.onlinePersonOids.add(chatPacket.SenderPersonOid); } @@ -264,7 +405,7 @@ public class SocketManager { break; case STATUS_NOTIFICATION_LOGOUT: - + BeWoLog.writeToLogFile("Benutzer " + chatPacket.ChatName + " ist jetzt offline. (SocketManager)"); if(SocketManager.onlinePersonOids.contains(chatPacket.SenderPersonOid)) { SocketManager.onlinePersonOids.remove(Integer.valueOf(chatPacket.SenderPersonOid)); } @@ -276,7 +417,7 @@ public class SocketManager { break; case STATUS_NOTIFICATION_LOGIN_BROADCAST: - + BeWoLog.writeToLogFile("Aktualisiere Onlinestatusliste. (SocketManager)"); String[] onlinePersons = chatPacket.ChatMessage.split(","); for (String onlinePerson : onlinePersons) { @@ -291,7 +432,7 @@ public class SocketManager { break; case STATUS_REQUEST: - + BeWoLog.writeToLogFile("Empfange eingeloggte User. (SocketManager)"); String contactsCsv = chatPacket.ChatMessage; String[] stringOids = contactsCsv.split(","); @@ -305,6 +446,7 @@ public class SocketManager { break; } } catch(Exception e) { + BeWoChatApplication.writeExceptionToLog(e); e.printStackTrace(); } @@ -314,15 +456,21 @@ public class SocketManager { Log.e("ERROR_SOCKETLISTENER", "uiHandler ist null"); } } + } else { + BeWoLog.writeToLogFile("Socket ist null. (SocketListener)"); + + isRunning = false; + connectToServer("SocketListener -> Socket ist null"); } } } catch(Exception exception) { + BeWoChatApplication.writeExceptionToLog(exception); exception.printStackTrace(); } } } - public static String getMACAddress() { + private static String getMACAddress() { try { List all = Collections.list(NetworkInterface.getNetworkInterfaces()); @@ -348,6 +496,7 @@ public class SocketManager { return res1.toString(); } } catch(Exception ex) { + BeWoChatApplication.writeExceptionToLog(ex); Log.e("GET_MAC_ADDRESS", ex.getMessage()); } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/BeWoLog.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/BeWoLog.java new file mode 100644 index 000000000..81f392493 --- /dev/null +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/BeWoLog.java @@ -0,0 +1,51 @@ +package util; + +import android.os.Environment; +import android.util.Log; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +/** + * Created by JettenM on 14.10.2016. + */ + +public class BeWoLog { + public static void writeToLogFile(String data) { + if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { + Log.e("BEWOLOG", "Kein externes Speichermedium vorhanden."); + return; + } + + Date currentDate = Calendar.getInstance().getTime(); + DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSS", Locale.GERMAN); + + String dateString = dateFormat.format(currentDate); + + File root = android.os.Environment.getExternalStorageDirectory(); + + File dir = new File(root.getAbsolutePath() + "/BeWo"); + dir.mkdirs(); + + File file = new File(dir, Util.LOGFILENAME); + try { + FileOutputStream fileOutputStream = new FileOutputStream(file, true); + PrintWriter printWriter = new PrintWriter(fileOutputStream); + + printWriter.println(dateString + ": " + data + "\n"); + + printWriter.flush(); + printWriter.close(); + fileOutputStream.close(); + } catch(IOException ioException) { + ioException.printStackTrace(); + } + } +} diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java index e2f165a39..b53936a6d 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java @@ -11,6 +11,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import java.util.Locale; import entities.ChatMessage; @@ -22,7 +23,7 @@ public class ChatMessageDeserializer implements JsonDeserializer { @Override public ChatMessage deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.GERMAN); JsonObject json = (JsonObject) jsonElement; @@ -30,6 +31,12 @@ public class ChatMessageDeserializer implements JsonDeserializer { int recipientPersonOid = Long.valueOf(json.get("EmpfängerPersonOid").getAsLong()).intValue(); int serverseitigeOid = Long.valueOf(json.get("Oid").getAsLong()).intValue(); String chatText = json.get("ChatText").getAsString(); + String messageId = null; + + boolean isMessageIdNull = json.get("MessageId").isJsonNull(); + if(!isMessageIdNull) { + messageId = json.get("MessageId").getAsString(); + } boolean isDelivered = json.get("IsDelivered").getAsBoolean(); @@ -47,7 +54,7 @@ public class ChatMessageDeserializer implements JsonDeserializer { e.printStackTrace(); } - ChatMessage result = new ChatMessage(senderPersonOid, recipientPersonOid, insTs, chatText, isDelivered, serverseitigeOid, isTeam); + ChatMessage result = new ChatMessage(senderPersonOid, recipientPersonOid, insTs, chatText, isDelivered, serverseitigeOid, isTeam, messageId); return result; } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/ConnectivityReceiver.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/ConnectivityReceiver.java index 449304e26..e75977def 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/util/ConnectivityReceiver.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/ConnectivityReceiver.java @@ -28,10 +28,14 @@ public class ConnectivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + BeWoLog.writeToLogFile("ConnectivityReceiver hat Netzwerkstatusänderung bekommen"); + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); + BeWoLog.writeToLogFile("Bin " + (networkInfo != null && networkInfo.isConnected() ? "online" : "offline")); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); if(networkInfo != null && networkInfo.isConnected()) { diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java index c34f58e96..de177ec29 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java @@ -12,6 +12,9 @@ import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.util.Log; +import com.octo.android.robospice.SpiceManager; +import com.octo.android.robospice.UncachedSpiceService; + import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -54,7 +57,6 @@ public class Util { //TODO: Notifications zählen. Bei Nachrichten verschiedener Unterhaltungen nur noch eine kleine Notification anzeigen mit "Sie haben x Nachrichten in y Unterhaltungen public static void SetNotify(String username, String message, int recipientOid, boolean isTeam, String teamMemberOids, String teamMemberNames, boolean isEmployee, Context packageContext) { int unreadMessagesCount = entity2MessagesCountRel.size() + 1; - //TODO: unterscheiden, ob es sich um eine einzelne Benachrichtigung handelt if(SocketManager.notificationEntities.keySet().size() >= 1) { conversationsCount = SocketManager.notificationEntities.keySet().size(); @@ -161,82 +163,6 @@ public class Util { alert.create().show(); } - public static void reconnectWithServer(boolean isConnected, final Context context) { - Log.e("UTIL", isConnected ? "Ist mit dem Internet/WLAN verbunden" : "Ist mit keinem Netzwerk verbunden"); - - if(isConnected) { - try { - SocketManager.loginCallback = new LoginCallback() { - @Override - public void doCallback() { - Log.e("LOGIN_CALLBACK", "LoginCallback aufgerufen. Verschicke nicht verschickte Nachrichten..."); - - sendUnsentMessages(context); - - sendStatusRequest(); - - // TODO: Nachrichten herunterladen, sofern man sich in der ChatActivity befindet - - } - }; - - SocketManager.connectToServer(); - - Log.i("RECONNECT_WITH_SERVER", "connectToServer aufgerufen..."); - } - catch(Exception es) { - Log.e("RECONNECT_WITH_SERVER", "Ausnahme beim Login nach Reconnect"); - es.printStackTrace(); - } - } - } - - public static void sendUnsentMessages(final Context context) { - Thread thread = new Thread(new Runnable() { - @Override - public void run() { - try { - DatabaseHandler databaseHandler = DatabaseHandler.getInstance(context); - - ArrayList unsentMessages = databaseHandler.getUnsentChatMessages(); - - for(ChatMessage cm : unsentMessages) { - final Packet unsentPacket = new Packet(); - - unsentPacket.ChatDataIdentifier = cm.IsTeam ? DataIdentifier.TEAM : DataIdentifier.MESSAGE; - unsentPacket.ChatMessage = cm.ChatText; - unsentPacket.ChatName = SoapConnectionManager.User.getFullName(); - unsentPacket.RecipientPersonOid = cm.RecipientPersonOid; - unsentPacket.ClientseitigeOid = cm.Id; - unsentPacket.MessageTimeStamp = cm.InsTs; - unsentPacket.SenderPersonOid = cm.SenderPersonOid; - unsentPacket.Tenant = SoapConnectionManager.User.getTenant(); - unsentPacket.IsDelivered = cm.IsDelivered; - - SocketManager.sendMessage(unsentPacket); - - Thread.sleep(50); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }); - - thread.start(); - } - - public static void sendStatusRequest() { - final Packet requestPacket = new Packet(); - - requestPacket.ChatDataIdentifier = DataIdentifier.STATUS_REQUEST; - requestPacket.ChatName = SoapConnectionManager.User.getFullName(); - requestPacket.SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue(); - requestPacket.Tenant = SoapConnectionManager.User.getTenant(); - - SocketManager.sendMessage(requestPacket); - } - public static ChatEntity getChatEntityFromOnlineEntitiesByOid(int personOid, boolean isTeam) { for(ChatEntity item : SocketManager.onlineEntities) { if(item.getOid() == personOid && item.getIsTeam() == isTeam) { @@ -283,4 +209,6 @@ public class Util { public static boolean contains(final Integer[] array, final int key) { return Arrays.asList(array).contains(key); } + + public static String LOGFILENAME = "BeWoLog.txt"; } diff --git a/Android/BewoMitarbeiterApp/app/src/main/katze-web.png b/Android/BewoMitarbeiterApp/app/src/main/katze-web.png deleted file mode 100644 index 08ca5fb4237fd8d7deb55b8bfe622bb5319ee2c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300159 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

T+ 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

gAjN;mGJFX9t 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 - -