Änderungen von bis zur Messe eingecheckt
This commit is contained in:
@@ -84,6 +84,7 @@
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.3/jars" />
|
||||
|
||||
@@ -18,7 +18,6 @@ import java.util.Locale;
|
||||
import beyondsoft.bewomitarbeiterapp.ContactListItem;
|
||||
import entities.ChatMessage;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import util.BeWoLog;
|
||||
|
||||
/**
|
||||
* Created by bib on 07.06.2016.
|
||||
@@ -121,15 +120,15 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
String CREATE_CONTACTS_TABLE =
|
||||
"CREATE TABLE " + TABLE_CONTACTS + "(" +
|
||||
KEY_ID + " INTEGER PRIMARY KEY," +
|
||||
KEY_KONTAKT_NAME + " TEXT,"+
|
||||
KEY_PERSONOID + " INTEGER," +
|
||||
KEY_PICTURE_BLOB + " BLOB, " +
|
||||
KEY_IS_TEAM + " INTEGER, " +
|
||||
KEY_TEAM_MEMBER_NAMES + " TEXT, " +
|
||||
KEY_TEAM_MEMBER_OIDS + " TEXT, " +
|
||||
KEY_VERSION + " INTEGER, " +
|
||||
KEY_IS_EMPLOYEE + " INTEGER)";
|
||||
KEY_ID + " INTEGER PRIMARY KEY," +
|
||||
KEY_KONTAKT_NAME + " TEXT,"+
|
||||
KEY_PERSONOID + " INTEGER," +
|
||||
KEY_PICTURE_BLOB + " BLOB, " +
|
||||
KEY_IS_TEAM + " INTEGER, " +
|
||||
KEY_TEAM_MEMBER_NAMES + " TEXT, " +
|
||||
KEY_TEAM_MEMBER_OIDS + " TEXT, " +
|
||||
KEY_VERSION + " INTEGER, " +
|
||||
KEY_IS_EMPLOYEE + " INTEGER)";
|
||||
|
||||
db.execSQL(CREATE_CONTACTS_TABLE);
|
||||
|
||||
@@ -335,7 +334,7 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
|
||||
Date sendDate = null;
|
||||
if(cursor.getString(9) != null) {
|
||||
sendDate = getDateFromString(cursor.getString(9));
|
||||
sendDate = getDateFromString(cursor.getString(9));
|
||||
}
|
||||
|
||||
cursor.close();
|
||||
@@ -356,16 +355,16 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
SQLiteDatabase readableDatabase = this.getReadableDatabase();
|
||||
|
||||
Cursor cursor = readableDatabase.query(
|
||||
TABLE_CHATMESSAGE,
|
||||
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 + "=? AND " +
|
||||
KEY_SENDER_PERSON_OID_CHATMESSAGE + "=?))"
|
||||
,
|
||||
new String[] {String.valueOf(SoapConnectionManager.getUser().getPersonOid()), String.valueOf(recipientOid), String.valueOf(SoapConnectionManager.getUser().getPersonOid()), String.valueOf(recipientOid)},
|
||||
null, null, null, null);
|
||||
TABLE_CHATMESSAGE,
|
||||
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 + "=? AND " +
|
||||
KEY_SENDER_PERSON_OID_CHATMESSAGE + "=?))"
|
||||
,
|
||||
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()) {
|
||||
do{
|
||||
@@ -445,15 +444,15 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
if(cursor != null) {
|
||||
cursor.moveToFirst();
|
||||
|
||||
int contactId = cursor.getInt(0);
|
||||
String contactName = cursor.getString(1);
|
||||
int contactPersonOid = cursor.getInt(2);
|
||||
byte[] contactPicture = cursor.getBlob(3);
|
||||
boolean contactIsTeam = cursor.getInt(4) == 1;
|
||||
String teamMemberOids = cursor.getString(5);
|
||||
int contactId = cursor.getInt(0);
|
||||
String contactName = cursor.getString(1);
|
||||
int contactPersonOid = cursor.getInt(2);
|
||||
byte[] contactPicture = cursor.getBlob(3);
|
||||
boolean contactIsTeam = cursor.getInt(4) == 1;
|
||||
String teamMemberOids = cursor.getString(5);
|
||||
String teamMemberNames = cursor.getString(6);
|
||||
int contactVersion = cursor.getInt(7);
|
||||
boolean isEmployee = cursor.getInt(8) == 1;
|
||||
int contactVersion = cursor.getInt(7);
|
||||
boolean isEmployee = cursor.getInt(8) == 1;
|
||||
|
||||
ContactListItem contact = new ContactListItem(contactId, contactName, contactPersonOid, contactPicture, contactIsTeam, teamMemberOids, teamMemberNames, contactVersion, isEmployee);
|
||||
|
||||
@@ -631,8 +630,6 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
}
|
||||
|
||||
public ArrayList<ChatMessage> getUnsentChatMessages() {
|
||||
BeWoLog.writeToLogFile("Lade unverschickte Nachrichten aus der Datenbank. (getUnsentMessages)");
|
||||
|
||||
ArrayList<ChatMessage> messages = new ArrayList<>();
|
||||
|
||||
SQLiteDatabase readableDatabase = this.getReadableDatabase();
|
||||
@@ -657,8 +654,6 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
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));
|
||||
}
|
||||
@@ -673,15 +668,6 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
}
|
||||
|
||||
public ArrayList<ChatMessage> getChatMessagesByMessageIds(ArrayList<String> messageIds) {
|
||||
String abc = "";
|
||||
for(String mid : messageIds) {
|
||||
abc += messageIds;
|
||||
if(messageIds.indexOf(mid) != (messageIds.size() - 1)) {
|
||||
abc += "\n";
|
||||
}
|
||||
}
|
||||
BeWoLog.writeToLogFile(abc);
|
||||
|
||||
ArrayList<ChatMessage> result = new ArrayList<>();
|
||||
|
||||
SQLiteDatabase readableDatabase = this.getReadableDatabase();
|
||||
@@ -717,8 +703,6 @@ public class DatabaseHandler extends SQLiteOpenHelper {
|
||||
blubb += "" + i + ". " + cursor.getColumnName(i) + "; ";
|
||||
}
|
||||
|
||||
BeWoLog.writeToLogFile(blubb);
|
||||
|
||||
if(cursor.getString(9) != null) {
|
||||
message.SendDate = getDateFromString(cursor.getString(9));
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package beyondsoft.bewomitarbeiterapp;
|
||||
import android.app.Application;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
@@ -17,10 +18,11 @@ import org.ksoap2.serialization.PropertyInfo;
|
||||
import org.ksoap2.serialization.SoapPrimitive;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
@@ -33,13 +35,12 @@ import soapConnection.JsonSoapPrimitiveRequest;
|
||||
import soapConnection.Packet;
|
||||
import soapConnection.SoapCalls;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import tcpConnection.LoginCallback;
|
||||
import tcpConnection.Callback;
|
||||
import tcpConnection.SocketManager;
|
||||
import util.BeWoLog;
|
||||
import util.ChatMessageDeserializer;
|
||||
import util.ConnectivityReceiver;
|
||||
import util.Util;
|
||||
|
||||
import static soapConnection.SoapCalls.CHECK_MESSAGE_IDS;
|
||||
|
||||
/**
|
||||
* Created by JettenM on 24.08.2016.
|
||||
@@ -66,6 +67,7 @@ public class BeWoChatApplication extends Application {
|
||||
private static BeWoChatApplication mInstance;
|
||||
|
||||
private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
|
||||
private static final ScheduledExecutorService schedulerTCP = Executors.newScheduledThreadPool(1);
|
||||
|
||||
public static Date lastOnlineTS;
|
||||
|
||||
@@ -82,11 +84,47 @@ public class BeWoChatApplication extends Application {
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
SharedPreferences prefs = getSharedPreferences(Util.PREFS_NAME, MODE_PRIVATE);
|
||||
if(!prefs.contains(Util.PREFS_FIRST_RUN_KEY)) {
|
||||
prefs.edit().putBoolean(Util.PREFS_FIRST_RUN_KEY, false).commit();
|
||||
|
||||
Boolean isDeleted = BeWoLog.deleteLogFile();
|
||||
Log.i("BEWO_CHAT_APPLICATION", "Löschen des Logs war" + (isDeleted ? "" : " nicht") + " erfolgreich");
|
||||
}
|
||||
|
||||
mInstance = this;
|
||||
|
||||
spiceManager.start(this);
|
||||
|
||||
keepAlive();
|
||||
keepAliveTCP();
|
||||
}
|
||||
|
||||
public void keepAliveTCP() {
|
||||
final Runnable blubb = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(ConnectivityReceiver.isConnected()) {
|
||||
Packet packet = new Packet();
|
||||
packet.ChatDataIdentifier = DataIdentifier.KEEP_ALIVE;
|
||||
packet.ChatName = SoapConnectionManager.getUser().getFullName();
|
||||
packet.IsEmployee = SoapConnectionManager.getUser().getIsEmployee();
|
||||
packet.Tenant = SoapConnectionManager.getUser().getTenant();
|
||||
packet.MessageTimeStamp = Calendar.getInstance().getTime();
|
||||
|
||||
SocketManager.sendMessage(packet);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
final ScheduledFuture<?> blubbHandle = schedulerTCP.scheduleAtFixedRate(blubb, refreshIntervalInMinutes, refreshIntervalInMinutes, TimeUnit.MINUTES);
|
||||
|
||||
schedulerTCP.schedule(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
blubbHandle.cancel(true);
|
||||
}
|
||||
}, 10, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
public void keepAlive() {
|
||||
@@ -97,11 +135,14 @@ public class BeWoChatApplication extends Application {
|
||||
|
||||
if(ConnectivityReceiver.isConnected()) {
|
||||
if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < getRefreshIntervalInMilliseconds()) {
|
||||
BeWoLog.writeToLogFile("Schicke KeepAlive zum SOAP-Server. (SOAP-KeepAlive)");
|
||||
spiceManager.execute(request, new JsonSoapPrimitiveRequestListener());
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("Das Intervall von " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten wurde überschritten. Sende kein KeepAlive an den SOAP-Server. (SOAP-KeepAlive)");
|
||||
}
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("Bin offline. Sende kein KeepAlive an den SOAP-Server. (SOAP-KeepAlive)");
|
||||
}
|
||||
|
||||
Log.i("LOOPER", "Halte Verbindung zum Soap-Server am leben...");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -142,7 +183,6 @@ 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);
|
||||
@@ -162,18 +202,18 @@ public class BeWoChatApplication extends Application {
|
||||
public void onRequestFailure(SpiceException spiceException) {
|
||||
Log.e("BEWOAPP", "Fehler beim am Leben erhalten!");
|
||||
|
||||
BeWoLog.writeToLogFile("Verbindungserneuerung ist fehlgeschlagen (JsonSoapPrimitiveRequestListener->onRequestFailure)");
|
||||
BeWoLog.writeToLogFile("Das JSON-Keep-Alives 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)");
|
||||
BeWoLog.writeToLogFile("Das JSON-Keep-Alives 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");
|
||||
Log.i("BEWOAPP", "Die Antwort des JSON-Keep-Alives hat einen Wert");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -182,6 +222,12 @@ public class BeWoChatApplication extends Application {
|
||||
|
||||
private final static String LOGTAG = "UUID_CHECK";
|
||||
|
||||
private ArrayList<String> messageIdsWithoutResponse;
|
||||
|
||||
public JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener(ArrayList<String> messageIdsWithoutResponse) {
|
||||
this.messageIdsWithoutResponse = messageIdsWithoutResponse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestFailure(SpiceException spiceException) {
|
||||
Log.e(LOGTAG, "Die Anfrage an den Server ist gescheitert! (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestFailure)");
|
||||
@@ -207,11 +253,14 @@ public class BeWoChatApplication extends Application {
|
||||
final ArrayList<String> result = gson.fromJson(soapPrimitive.toString(), listType);
|
||||
|
||||
if(result != null) {
|
||||
String blubb = "";
|
||||
|
||||
if(result.size() == 0) {
|
||||
blubb = "keine";
|
||||
return;
|
||||
}
|
||||
|
||||
String blubb = "";
|
||||
|
||||
for(String ms : result) {
|
||||
blubb += ms;
|
||||
|
||||
@@ -219,34 +268,63 @@ public class BeWoChatApplication extends Application {
|
||||
blubb += "\n";
|
||||
}
|
||||
}
|
||||
BeWoLog.writeToLogFile("Vom Server zurückgelieferte MessageIds: " + blubb);
|
||||
BeWoLog.writeToLogFile("Vom Server zurückgelieferte MessageIds:\n" + blubb);
|
||||
|
||||
DatabaseHandler databaseHandler = DatabaseHandler.getInstance(BeWoChatApplication.getInstance());
|
||||
ArrayList<ChatMessage> messages2send = databaseHandler.getChatMessagesByMessageIds(result);
|
||||
ArrayList<ChatMessage> demServerBekannteChatMessages = databaseHandler.getChatMessagesByMessageIds(result);
|
||||
|
||||
BeWoLog.writeToLogFile("Es existieren " + messages2send.size() + " Nachrichten, deren Response verloren gegangen ist. (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)");
|
||||
String blubb2 = "";
|
||||
|
||||
for(ChatMessage cm : messages2send) {
|
||||
final Packet unsentPacket = new Packet();
|
||||
if(demServerBekannteChatMessages.size() == 0) {
|
||||
blubb2 = "keine";
|
||||
} else {
|
||||
for (ChatMessage cm : demServerBekannteChatMessages) {
|
||||
blubb2 += cm.MessageId;
|
||||
|
||||
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;
|
||||
if (demServerBekannteChatMessages.indexOf(cm) != (demServerBekannteChatMessages.size() - 1)) {
|
||||
blubb2 += "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BeWoLog.writeToLogFile("Verschicke Nachricht, deren Response verloren gegangen ist. ("+unsentPacket.MessageId+") (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)" + unsentPacket.toString());
|
||||
SocketManager.sendMessage(unsentPacket);
|
||||
BeWoLog.writeToLogFile("Es existieren " + demServerBekannteChatMessages.size() + " Nachrichten, deren Response verloren gegangen ist. (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)");
|
||||
BeWoLog.writeToLogFile("Die da wären: \n" + blubb2);
|
||||
|
||||
try {
|
||||
Thread.sleep(75);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
ArrayList<ChatMessage> checkedMessages = DatabaseHandler.getInstance(BeWoChatApplication.mInstance).getChatMessagesByMessageIds(messageIdsWithoutResponse);
|
||||
|
||||
for(ChatMessage cm : checkedMessages) {
|
||||
if(demServerBekannteChatMessages.contains(cm)) {
|
||||
BeWoLog.writeToLogFile("ChatMessage ist dem Server bereits bekannt. IsDelivered wird auf true gesetzt. (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)");
|
||||
|
||||
cm.IsDelivered = true;
|
||||
int affectedRowsCount = DatabaseHandler.getInstance(BeWoChatApplication.mInstance).updateChatMessage(cm);
|
||||
|
||||
boolean isRemovalSuccessful = messageIdsWithoutResponse.remove(cm.MessageId);
|
||||
|
||||
BeWoLog.writeToLogFile("ChatMessage wurde erfolgreich geändert: " + (affectedRowsCount > 0) + " und aus der Liste der responselosen entfernt: " + isRemovalSuccessful + ". (JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener->onRequestSuccess)");
|
||||
} else {
|
||||
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)\n\t" + unsentPacket.toString());
|
||||
SocketManager.sendMessage(unsentPacket);
|
||||
|
||||
try {
|
||||
Thread.currentThread().sleep(100);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
writeExceptionToLog(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -261,10 +339,9 @@ public class BeWoChatApplication extends Application {
|
||||
if(isConnected) {
|
||||
try {
|
||||
BeWoLog.writeToLogFile("Setze Socket zurück.(reconnectWithServer)");
|
||||
// SocketManager.shutDownConnectionToServer("reconnectWithServer");
|
||||
|
||||
BeWoLog.writeToLogFile("Setze LoginCallback des Sockets. (reconnectWithServer)");
|
||||
SocketManager.loginCallback = new LoginCallback() {
|
||||
SocketManager.loginCallback = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
Log.e("LOGIN_CALLBACK", "LoginCallback aufgerufen. Verschicke nicht verschickte Nachrichten...");
|
||||
@@ -296,21 +373,22 @@ public class BeWoChatApplication extends Application {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
BeWoLog.writeToLogFile("Lade nicht verschickte Nachrichten aus der Datenbank zum verschicken.");
|
||||
BeWoLog.writeToLogFile("Lade nicht verschickte Nachrichten aus der Datenbank zum verschicken. (sendUnsentMessages)");
|
||||
DatabaseHandler databaseHandler = DatabaseHandler.getInstance(context);
|
||||
|
||||
ArrayList<ChatMessage> unsentMessages = databaseHandler.getUnsentChatMessages();
|
||||
ArrayList<ChatMessage> messagesWithoutResponse = new ArrayList<>();
|
||||
|
||||
if(unsentMessages.size() > 0) {
|
||||
BeWoLog.writeToLogFile("Habe " + unsentMessages.size() + " Nachrichten gefunden.");
|
||||
BeWoLog.writeToLogFile("Habe " + unsentMessages.size() + " Nachrichten gefunden. (sendUnsentMessages)");
|
||||
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("Habe keine nicht verschickten Nachrichten gefunden.");
|
||||
BeWoLog.writeToLogFile("Habe keine nicht verschickten Nachrichten gefunden. (sendUnsentMessages)");
|
||||
}
|
||||
|
||||
for(ChatMessage cm : unsentMessages) {
|
||||
if (cm.SendDate == null) {
|
||||
Log.i("SEND_UNSENT_MESSAGES", "Die Nachricht wurde erst gar nicht verschickt: " + cm.ChatText);
|
||||
final Packet unsentPacket = new Packet();
|
||||
|
||||
unsentPacket.ChatDataIdentifier = cm.IsTeam ? DataIdentifier.TEAM : DataIdentifier.MESSAGE;
|
||||
@@ -324,19 +402,27 @@ public class BeWoChatApplication extends Application {
|
||||
unsentPacket.IsDelivered = cm.IsDelivered;
|
||||
unsentPacket.MessageId = cm.MessageId;
|
||||
|
||||
BeWoLog.writeToLogFile("Verschicke Nachricht("+unsentPacket.ChatMessage+") mit MessageId (" + unsentPacket.MessageId + ") ");
|
||||
BeWoLog.writeToLogFile("Verschicke Nachricht(" + unsentPacket.ChatMessage + ") mit MessageId (" + unsentPacket.MessageId + "). (sendUnsentMessages)");
|
||||
SocketManager.sendMessage(unsentPacket);
|
||||
Thread.sleep(75);
|
||||
|
||||
Thread.currentThread().sleep(100);
|
||||
} else {
|
||||
Log.i("SEND_UNSENT_MESSAGES", "Bei der Nachricht wurde die MESSAGE_RESPONSE nicht empfangen: " + cm.ChatText + " " + cm.SendDate);
|
||||
messagesWithoutResponse.add(cm);
|
||||
}
|
||||
}
|
||||
|
||||
BeWoLog.writeToLogFile("Habe " + messagesWithoutResponse.size() + " Nachrichten gefunden, deren Message-Response verloren gegangen ist.");
|
||||
BeWoLog.writeToLogFile("Habe " + messagesWithoutResponse.size() + " Nachrichten gefunden, deren Message-Response verloren gegangen ist. (sendUnsentMessages)");
|
||||
|
||||
if(messagesWithoutResponse.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<String> messageIds = new ArrayList<>();
|
||||
String pExceptions = "";
|
||||
for(int i = 0; i < messagesWithoutResponse.size(); i++) {
|
||||
pExceptions += messagesWithoutResponse.get(i).MessageId;
|
||||
messageIds.add(messagesWithoutResponse.get(i).MessageId);
|
||||
|
||||
if(i != (messagesWithoutResponse.size() - 1)) {
|
||||
pExceptions += ";";
|
||||
@@ -346,7 +432,9 @@ public class BeWoChatApplication extends Application {
|
||||
ArrayList<PropertyInfo> 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());
|
||||
|
||||
BeWoLog.writeToLogFile("Führe Anfrage durch, ob der Server Nachrichten ohne Message-Response kennt. (sendUnsentMessages)");
|
||||
spiceManager.execute(request, new JsonSoapPrimitveCheckingUndeliveredButSentMessagesListener(messageIds));
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -43,11 +43,13 @@ import org.ksoap2.serialization.SoapPrimitive;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.lang.reflect.Type;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
import Database.DatabaseHandler;
|
||||
@@ -59,7 +61,7 @@ import soapConnection.Packet;
|
||||
|
||||
import soapConnection.SoapCalls;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import tcpConnection.LoginCallback;
|
||||
import tcpConnection.Callback;
|
||||
import tcpConnection.SocketManager;
|
||||
import tcpConnection.UIHandler;
|
||||
import util.BeWoLog;
|
||||
@@ -200,16 +202,22 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
public void updateUserInterface(final Packet chatPacket) {
|
||||
try {
|
||||
Log.i(LOGTAG, "Identifier: " + chatPacket.ChatDataIdentifier.name());
|
||||
BeWoLog.writeToLogFile("Packet erhalten mit DataIdentifier: " + chatPacket.ChatDataIdentifier.name() + ". (ChatActivity)");
|
||||
|
||||
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, chatPacket.MessageId));
|
||||
if(chatPacket.SenderPersonOid == recipientPersonOid) {
|
||||
chatMessages.add(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, false, chatPacket.ServerseitigeOid, false, chatPacket.MessageId));
|
||||
adapter.sort(DATE_COMPARATOR);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
if(!BeWoChatApplication.isActivityVisible()) {
|
||||
Util.SetNotify(chatPacket.ChatName, chatPacket.ChatMessage, chatPacket.SenderPersonOid, false, null, null, chatPacket.IsEmployee, getApplicationContext());
|
||||
}
|
||||
|
||||
} else {
|
||||
Util.SetNotify(chatPacket.ChatName, chatPacket.ChatMessage, chatPacket.SenderPersonOid, false, null, null, chatPacket.IsEmployee, getApplicationContext());
|
||||
}
|
||||
@@ -217,17 +225,15 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case MESSAGE_RESPONSE:
|
||||
BeWoLog.writeToLogFile("Empfange Response für Message: " + chatPacket.MessageId);
|
||||
|
||||
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;
|
||||
if(cm.MessageId.equals(chatPacket.MessageId)) {
|
||||
cm.IsDelivered = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,7 +243,6 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case STATUS_NOTIFICATION_LOGIN:
|
||||
BeWoLog.writeToLogFile("Benutzer " + chatPacket.ChatName + " ist jetzt online. (ChatActivity)");
|
||||
if(chatPacket.SenderPersonOid == recipientPersonOid) {
|
||||
@@ -259,7 +264,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
public void run() {
|
||||
ImageView status = (ImageView) mCustomView.findViewById(R.id.status);
|
||||
status.setImageResource(R.drawable.statusoffline);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -357,7 +362,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
|
||||
final JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.GET_ALL_CHAT_MESSAGES, propertyInfos);
|
||||
|
||||
final LoginCallback corruptedSpiceCallback = new LoginCallback() {
|
||||
final Callback corruptedSpiceCallback = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
BeWoLog.writeToLogFile("Callback bei erneutem Login auf dem Soap-Server wird ausgeführt. (ChatActivity)");
|
||||
@@ -365,15 +370,22 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
spiceManager.shouldStop();
|
||||
spiceManager.start(ChatActivity.this);
|
||||
|
||||
SocketManager.loginCallbackAfterConnectionLost = new LoginCallback() {
|
||||
SocketManager.loginCallbackAfterConnectionLost = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
//ReloadChatView(contactName, recipientOid, contactImage, isTeam, teamMemberOids, teamMemberNames, isEmployee);
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
adapter.sort(DATE_COMPARATOR);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// SocketManager.shutDownConnectionToServer("ChatActivity->corruptedSpiceCallback");
|
||||
SocketManager.connectToServer("ChatActivity -> corruptedSpiceCallback");
|
||||
}
|
||||
};
|
||||
@@ -383,8 +395,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
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() {
|
||||
SocketManager.loginCallbackAfterConnectionLost = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
BeWoLog.writeToLogFile("Lade alle Nachrichten für diesen Chat nach fehlgeschlagenem ersten Versuch herunter. (ChatActivity)");
|
||||
@@ -420,6 +431,9 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
|
||||
BeWoChatApplication.getInstance().setConnectivityListener(this);
|
||||
|
||||
adapter.sort(DATE_COMPARATOR);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
@@ -470,6 +484,27 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
ChatActivity.this.startActivity(dokuActivity);
|
||||
|
||||
return true;
|
||||
|
||||
// case R.id.action_show_unsent_messages:
|
||||
//
|
||||
// String message = "";
|
||||
// ArrayList<ChatMessage> unsentMessages = DatabaseHandler.getInstance(ChatActivity.this).getUnsentChatMessages();
|
||||
// for(ChatMessage cm : unsentMessages) {
|
||||
// String sendDateStr = "";
|
||||
//
|
||||
// if(cm.SendDate != null) {
|
||||
// SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.GERMAN);
|
||||
// sendDateStr = dateFormat.format(cm.SendDate);
|
||||
// } else {
|
||||
// sendDateStr = "null";
|
||||
// }
|
||||
//
|
||||
// message += cm.MessageId + "; " + cm.IsDelivered + "; " + sendDateStr + "\n";
|
||||
// }
|
||||
//
|
||||
// Util.buildAlert(ChatActivity.this, message);
|
||||
//
|
||||
// return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
@@ -527,9 +562,9 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei
|
||||
|
||||
private final class JsonSoapPrimitiveRequestListener implements RequestListener<SoapPrimitive> {
|
||||
|
||||
public LoginCallback corruptedRequestCallback;
|
||||
Callback corruptedRequestCallback;
|
||||
|
||||
public JsonSoapPrimitiveRequestListener(LoginCallback corruptedRequestCallback) {
|
||||
JsonSoapPrimitiveRequestListener(Callback corruptedRequestCallback) {
|
||||
this.corruptedRequestCallback = corruptedRequestCallback;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,32 +53,34 @@ public class KontaktAdapter extends ArrayAdapter<ContactListItem> {
|
||||
ImageView onlinestats = (ImageView) rowView.findViewById(R.id.status);
|
||||
imageView = (ImageView) rowView.findViewById(R.id.logo);
|
||||
|
||||
textView.setText(values.get(position).getChatName());
|
||||
ContactListItem currentContact = values.get(position);
|
||||
|
||||
messagePreview.setText(values.get(position).getMessagePreview());
|
||||
messagePreview.setTypeface(messagePreview.getTypeface(), values.get(position).getIsNewMessage2Preview() ? 1 : 0);
|
||||
textView.setText(currentContact.getChatName());
|
||||
|
||||
if(values.get(position).isTeam) {
|
||||
minitext.setText(values.get(position).teamMemberNames);
|
||||
messagePreview.setText(currentContact.getMessagePreview());
|
||||
messagePreview.setTypeface(messagePreview.getTypeface(), currentContact.getIsNewMessage2Preview() ? 1 : 0);
|
||||
|
||||
|
||||
|
||||
if(currentContact.isTeam) {
|
||||
minitext.setText(currentContact.teamMemberNames);
|
||||
}
|
||||
|
||||
Thread getPic;
|
||||
if(values.get(position).getPicture() != null) {
|
||||
if(currentContact.getPicture() != null) {
|
||||
Log.i("Kontakt", "PersonOid hat Bild");
|
||||
byte[] imageAsByteArray = values.get(position).getPicture();
|
||||
byte[] imageAsByteArray = currentContact.getPicture();
|
||||
|
||||
Bitmap i = BitmapFactory.decodeByteArray(imageAsByteArray, 0, imageAsByteArray.length);
|
||||
|
||||
getPic = new Thread(new CircleBitmapCreator(i));
|
||||
getPic.start();
|
||||
} else {
|
||||
ContactListItem cli = values.get(position);
|
||||
|
||||
int bildId = R.drawable.mitarbeiter_avatar;
|
||||
|
||||
if(cli.isTeam) {
|
||||
if(currentContact.isTeam) {
|
||||
bildId = R.drawable.mitarbeiter_team_avatar;
|
||||
} else if(!cli.getIsEmployee()) {
|
||||
} else if(!currentContact.getIsEmployee()) {
|
||||
bildId = R.drawable.klient_avatar;
|
||||
}
|
||||
|
||||
@@ -87,7 +89,14 @@ public class KontaktAdapter extends ArrayAdapter<ContactListItem> {
|
||||
imageView.setImageBitmap(ImageConverter.getRoundedCornerBitmap(bitmap, bitmap.getWidth() / 2));
|
||||
}
|
||||
|
||||
onlinestats.setImageResource((values.get(position).isOnline ? R.drawable.statusonline : R.drawable.statusoffline));
|
||||
int resourceId;
|
||||
if(currentContact.isTeam) {
|
||||
resourceId = R.drawable.statusteam;
|
||||
} else {
|
||||
resourceId = currentContact.isOnline ? R.drawable.statusonline : R.drawable.statusoffline;
|
||||
}
|
||||
|
||||
onlinestats.setImageResource(resourceId);
|
||||
|
||||
return rowView;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ import soapConnection.OnRequestSuccessCallback;
|
||||
import soapConnection.Packet;
|
||||
import soapConnection.SoapCalls;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import tcpConnection.LoginCallback;
|
||||
import tcpConnection.Callback;
|
||||
import tcpConnection.SocketManager;
|
||||
import tcpConnection.UIHandler;
|
||||
import util.BeWoLog;
|
||||
@@ -166,9 +166,16 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi
|
||||
@Override
|
||||
public void run() {
|
||||
isDownloadOfContacsInProgress = false;
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
});
|
||||
|
||||
BeWoLog.writeToLogFile("isDownloadOfContacsInProgress wird nach 10 Sekunden zurückgesetzt.");
|
||||
}
|
||||
}, 10*1000);
|
||||
}, 10 * 1000);
|
||||
|
||||
BeWoLog.writeToLogFile("Lade Kontakte (updateContactList)");
|
||||
swipeRefreshLayout.setRefreshing(true);
|
||||
@@ -191,12 +198,17 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi
|
||||
final JsonSoapPrimitiveRequest getContactsRequest = new JsonSoapPrimitiveRequest(SoapCalls.GET_CONTACTS_FOR_PERSON, propertyInfos);
|
||||
|
||||
if(ConnectivityReceiver.isConnected()) {
|
||||
BeWoLog.writeToLogFile("App ist mit dem Internet verbunden (updateContactList)");
|
||||
BeWoLog.writeToLogFile("App ist mit dem Internet verbunden (updateContactList -> isConnected(✓))");
|
||||
|
||||
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() {
|
||||
|
||||
BeWoLog.writeToLogFile("Jetzt - letzter Serverkontakt ist kleiner als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten. (updateContactList -> isConnected(✓) -> IntervallCheck(✓))");
|
||||
|
||||
spiceManager.execute(getContactsRequest, new JsonSoapPrimitiveContactsRequestListener(new OnRequestSuccessCallback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
BeWoLog.writeToLogFile("Führe Callback des Kontakteladens durch. (updateContactList -> isConnected(✓) -> IntervallCheck(✓) -> Kontakte wurden geladen(✓)");
|
||||
|
||||
BeWoChatApplication.sendStatusRequest();
|
||||
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
@@ -207,30 +219,40 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi
|
||||
final JsonSoapPrimitiveRequest getNewestMessagesRequest = new JsonSoapPrimitiveRequest("GetNewestMessages", propertyInfos);
|
||||
|
||||
if(ConnectivityReceiver.isConnected()) {
|
||||
|
||||
BeWoLog.writeToLogFile("(updateContactList -> isConnected(✓) -> IntervallCheck(✓) -> Kontakte wurden geladen(✓) -> isConnected(✓)");
|
||||
|
||||
if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) {
|
||||
|
||||
BeWoLog.writeToLogFile("(updateContactList -> isConnected(✓) -> IntervallCheck(✓) -> Kontakte wurden geladen(✓) -> isConnected(✓) -> IntervallCheck(✓)");
|
||||
|
||||
spiceManager.execute(getNewestMessagesRequest, new JsonSoapPrimitiveRequestListenerForNewestMessages());
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her. Starte Verbindung zum SocketServer neu. (updateContactlist)");
|
||||
|
||||
SocketManager.loginCallbackAfterConnectionLost = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
BeWoLog.writeToLogFile("(updateContactList -> isConnected(✓) -> IntervallCheck(✓) -> Kontakte wurden geladen(✓) -> IntervallCheck(x)");
|
||||
|
||||
spiceManager.execute(getNewestMessagesRequest, new JsonSoapPrimitiveRequestListenerForNewestMessages());
|
||||
}
|
||||
};
|
||||
|
||||
SocketManager.connectToServer("KontaktChatActivity -> zweiten Intervall-Check nicht bestanden");
|
||||
}
|
||||
} 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");
|
||||
BeWoLog.writeToLogFile("updateContactList -> isConnected(✓) -> IntervallCheck(✓) -> Kontakte wurden geladen(✓) -> isConnected(x)");
|
||||
}
|
||||
}
|
||||
}));
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her. Starte Verbindung zum SocketServer neu. (updateContactlist)");
|
||||
BeWoLog.writeToLogFile("Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her. Starte Verbindung zum SocketServer neu. (updateContactlist -> isConnected(✓) -> IntervallCheck(x))");
|
||||
|
||||
// SocketManager.shutDownConnectionToServer("KontaktChatAcitivty->Letzer Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her");
|
||||
SocketManager.loginCallback2 = new LoginCallback() {
|
||||
SocketManager.loginCallback2 = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
spiceManager.execute(getContactsRequest, new JsonSoapPrimitiveRequestListener(new OnRequestSuccessCallback() {
|
||||
spiceManager.execute(getContactsRequest, new JsonSoapPrimitiveContactsRequestListener(new OnRequestSuccessCallback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
BeWoLog.writeToLogFile("LoginCallback mit Abruf der neuesten Nachrichten und den Kontakten wird aufgerufen. (updateContactlist)");
|
||||
@@ -245,18 +267,22 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi
|
||||
final JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest("GetNewestMessages", propertyInfos);
|
||||
|
||||
if(ConnectivityReceiver.isConnected()) {
|
||||
BeWoLog.writeToLogFile("LoginCallback ist mit dem Internet verbunden. (updateContactlist)");
|
||||
BeWoLog.writeToLogFile("LoginCallback ist mit dem Internet verbunden. (updateContactlist -> isConnected(✓) -> IntervallCheck(x) -> isConnected(✓))");
|
||||
|
||||
if((Calendar.getInstance().getTime().getTime() - BeWoChatApplication.lastOnlineTS.getTime()) < BeWoChatApplication.getRefreshIntervalInMilliseconds()) {
|
||||
BeWoLog.writeToLogFile("LoginCallback ");
|
||||
spiceManager.execute(request, new JsonSoapPrimitiveRequestListenerForNewestMessages());
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("LoginCallback ist mit dem Internet verbunden. (updateContactlist -> isConnected(✓) -> IntervallCheck(x) -> isConnected(✓) -> IntervallCheck(x)");
|
||||
}
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("LoginCallback ist nicht mit dem Internet verbunden. (updateContactlist)");
|
||||
// SocketManager.shutDownConnectionToServer("KontaktChatActivity->");
|
||||
SocketManager.loginCallbackAfterConnectionLost = new LoginCallback() {
|
||||
//TODO: Das ist irgendwie sinnlos, wenn keine Verbindung zum Internet besteht...
|
||||
BeWoLog.writeToLogFile("LoginCallback ist nicht mit dem Internet verbunden. (updateContactlist -> isConnected(✓) -> IntervallCheck(x) -> isConnected(x))");
|
||||
|
||||
SocketManager.loginCallbackAfterConnectionLost = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
BeWoLog.writeToLogFile("loginCallbackAfterConnectionLost im normalen LoginCallback aufgerufen, weil offline. (updateContactlist)");
|
||||
BeWoLog.writeToLogFile("loginCallbackAfterConnectionLost im normalen LoginCallback aufgerufen, weil offline. (updateContactlist -> isConnected(✓) -> IntervallCheck(x) -> isConnected(x))");
|
||||
spiceManager.execute(request, new JsonSoapPrimitiveRequestListenerForNewestMessages());
|
||||
}
|
||||
};
|
||||
@@ -387,10 +413,17 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
KontaktAdapter ka =((KontaktAdapter) listView.getAdapter());
|
||||
KontaktAdapter ka = ((KontaktAdapter) listView.getAdapter());
|
||||
|
||||
int onlineEntitiesCount = SocketManager.onlineEntities.size();
|
||||
int onlinePersonOidsCount = SocketManager.onlinePersonOids.size();
|
||||
|
||||
Log.i(LOGTAG, "onlineEntities: " + onlineEntitiesCount + "; onlinePersonOids: " + onlinePersonOidsCount);
|
||||
|
||||
for(ContactListItem item : ka.values) {
|
||||
item.isOnline = SocketManager.onlinePersonOids.contains(item.getPersonOid());
|
||||
if(!item.isTeam) {
|
||||
item.isOnline = SocketManager.onlinePersonOids.contains(item.getPersonOid());
|
||||
}
|
||||
}
|
||||
|
||||
ka.notifyDataSetChanged();
|
||||
@@ -599,11 +632,11 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi
|
||||
}
|
||||
}
|
||||
|
||||
private final class JsonSoapPrimitiveRequestListener implements RequestListener<SoapPrimitive> {
|
||||
private final class JsonSoapPrimitiveContactsRequestListener implements RequestListener<SoapPrimitive> {
|
||||
|
||||
OnRequestSuccessCallback callback;
|
||||
|
||||
JsonSoapPrimitiveRequestListener(OnRequestSuccessCallback callback) {
|
||||
JsonSoapPrimitiveContactsRequestListener(OnRequestSuccessCallback callback) {
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ import soapConnection.ApplicationUser;
|
||||
import soapConnection.JsonSoapPrimitiveRequest;
|
||||
import soapConnection.SoapCalls;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import tcpConnection.LoginCallback;
|
||||
import tcpConnection.Callback;
|
||||
import tcpConnection.SocketManager;
|
||||
import util.BeWoLog;
|
||||
import util.SecurityUtils;
|
||||
@@ -76,7 +76,7 @@ public class LoginActivity extends ActionBarActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_login);
|
||||
|
||||
SocketManager.connectionFailureCallback = new LoginCallback() {
|
||||
SocketManager.connectionFailureCallback = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@@ -89,7 +89,7 @@ public class LoginActivity extends ActionBarActivity {
|
||||
}
|
||||
};
|
||||
|
||||
SocketManager.sendFailureCallback = new LoginCallback() {
|
||||
SocketManager.sendFailureCallback = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@@ -262,13 +262,13 @@ public class LoginActivity extends ActionBarActivity {
|
||||
// return;
|
||||
// }
|
||||
|
||||
ArrayList<PropertyInfo> propertyInfos = new ArrayList<>();
|
||||
propertyInfos.add(SoapConnectionManager.BuildProperty("pTenant", tenant, String.class));
|
||||
propertyInfos.add(SoapConnectionManager.BuildProperty("pUsername", username, String.class));
|
||||
propertyInfos.add(SoapConnectionManager.BuildProperty("pPassword", password, String.class));
|
||||
ArrayList<PropertyInfo> propertyInfos = new ArrayList<>();
|
||||
propertyInfos.add(SoapConnectionManager.BuildProperty("pTenant", tenant, String.class));
|
||||
propertyInfos.add(SoapConnectionManager.BuildProperty("pUsername", username, String.class));
|
||||
propertyInfos.add(SoapConnectionManager.BuildProperty("pPassword", password, String.class));
|
||||
|
||||
JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.LOGIN_CALL, propertyInfos);
|
||||
spiceManager.execute(request, new JsonSoapPrimitiveRequestListener());
|
||||
JsonSoapPrimitiveRequest request = new JsonSoapPrimitiveRequest(SoapCalls.LOGIN_CALL, propertyInfos);
|
||||
spiceManager.execute(request, new JsonSoapPrimitiveRequestListener());
|
||||
// }
|
||||
// }, new Response.ErrorListener() {
|
||||
// @Override
|
||||
@@ -384,7 +384,7 @@ public class LoginActivity extends ActionBarActivity {
|
||||
|
||||
SocketManager.tenant = mTenantView.getText().toString();
|
||||
|
||||
SocketManager.initialLoginCallback = new LoginCallback() {
|
||||
SocketManager.initialLoginCallback = new Callback() {
|
||||
@Override
|
||||
public void doCallback() {
|
||||
Log.e("LOGIN_CALLBACK", "LoginCallback aufgerufen. Ist verbunden und ruft die ChatActivity nun auf.");
|
||||
|
||||
@@ -50,7 +50,7 @@ public class MessageAdapter extends ArrayAdapter<ChatMessage> {
|
||||
|
||||
holder.msg.setText(chatMessage.ChatText);
|
||||
|
||||
if(holder.pending_msg_image != null && chatMessage.ServerseitigeOid != 0) {
|
||||
if(holder.pending_msg_image != null && chatMessage.IsDelivered) {
|
||||
holder.pending_msg_image.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package beyondsoft.bewomitarbeiterapp;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
@@ -49,8 +48,9 @@ public class WebdokuActivity extends ActionBarActivity {
|
||||
case R.id.action_Logout:
|
||||
SocketManager.logout();
|
||||
|
||||
finish();
|
||||
System.exit(0);
|
||||
Intent intent = new Intent(WebdokuActivity.this, LoginActivity.class);
|
||||
WebdokuActivity.this.startActivity(intent);
|
||||
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
|
||||
@@ -3,6 +3,7 @@ package entities;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Created by JettenM on 26.07.2016.
|
||||
@@ -47,6 +48,63 @@ public class ChatMessage implements Comparable<ChatMessage> {
|
||||
return dateFormat.format(InsTs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if(other == null || !(other instanceof ChatMessage)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(other == this) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ChatMessage om = (ChatMessage) other;
|
||||
|
||||
boolean chatTextsAreEqual = false;
|
||||
if(this.ChatText != null) {
|
||||
chatTextsAreEqual = this.ChatText.equals(om.ChatText);
|
||||
} else {
|
||||
chatTextsAreEqual = om.ChatText == null;
|
||||
}
|
||||
|
||||
boolean messageIdsAreEqual = false;
|
||||
if(this.MessageId != null) {
|
||||
messageIdsAreEqual = this.MessageId.equals(om.MessageId);
|
||||
} else {
|
||||
messageIdsAreEqual = om.MessageId == null;
|
||||
}
|
||||
|
||||
boolean insTsAreEqual = false;
|
||||
if(this.InsTs != null) {
|
||||
insTsAreEqual = InsTs.equals(om.InsTs);
|
||||
} else {
|
||||
insTsAreEqual = om.InsTs == null;
|
||||
}
|
||||
|
||||
boolean sendDatesAreEqual = false;
|
||||
if(this.SendDate != null) {
|
||||
sendDatesAreEqual = SendDate.equals(om.SendDate);
|
||||
} else {
|
||||
sendDatesAreEqual = om.SendDate == null;
|
||||
}
|
||||
|
||||
boolean a = this.Id == om.Id;
|
||||
boolean b = this.SenderPersonOid == om.SenderPersonOid;
|
||||
boolean c = this.RecipientPersonOid == om.RecipientPersonOid;
|
||||
boolean d = insTsAreEqual;
|
||||
boolean e = chatTextsAreEqual;
|
||||
boolean f = this.IsDelivered == om.IsDelivered;
|
||||
boolean g = this.ServerseitigeOid == om.ServerseitigeOid;
|
||||
boolean h = this.IsTeam == om.IsTeam;
|
||||
boolean i = messageIdsAreEqual;
|
||||
boolean j = sendDatesAreEqual;
|
||||
|
||||
boolean areEqual = this.Id == om.Id && this.SenderPersonOid == om.SenderPersonOid && this.RecipientPersonOid == om.RecipientPersonOid && this.InsTs == om.InsTs && chatTextsAreEqual &&
|
||||
this.IsDelivered == om.IsDelivered && this.ServerseitigeOid == om.ServerseitigeOid && this.IsTeam == om.IsTeam && messageIdsAreEqual && this.SendDate == om.SendDate;
|
||||
|
||||
return areEqual;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(ChatMessage cm) {
|
||||
if(InsTs == null || cm.InsTs == null) {
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Packet {
|
||||
// die ersten fünf ";" ignorieren
|
||||
// SenderOid;RecipientOid;ClientNameLength;MessageLength;ChatDataIdentifier;ServerseitigeOid;ClientseitigeOid;Tenant;IsEmployee;MessageId;[ClientName][ChatMessage][MessageTimeStamp][IsDelivered]
|
||||
|
||||
//23;281;20;389;1;38;932;[Tenant];1; 10 Semikola
|
||||
//23;281;20;389;1;38;932;[Tenant];1; 9 Semikola
|
||||
|
||||
public Packet(String message) {
|
||||
Log.i("PACKET_CONSTRUCTOR_MSG", message);
|
||||
@@ -86,7 +86,7 @@ public class Packet {
|
||||
|
||||
ChatMessage = actualMessage.substring(chatNameLength, chatMessageLength + chatNameLength);
|
||||
|
||||
String dateString = actualMessage.substring(chatMessageLength + chatNameLength, actualMessage.length() - 1);
|
||||
String dateString = actualMessage.substring(chatMessageLength + chatNameLength, chatMessageLength + chatNameLength + 19);
|
||||
|
||||
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.GERMAN);
|
||||
|
||||
@@ -123,20 +123,92 @@ public class Packet {
|
||||
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;
|
||||
"\n\tRecipientPersonOid: " + RecipientPersonOid +
|
||||
"\n\tChatDataIdentifier: " + ChatDataIdentifier.name() +
|
||||
"\n\tChatName: " + ChatName +
|
||||
"\n\tChatMessage: " + ChatMessage +
|
||||
"\n\tTenant: " + Tenant +
|
||||
"\n\tIsDelivered: " + IsDelivered +
|
||||
"\n\tMessageTimeStamp: " + MessageTimeStamp +
|
||||
"\n\tServerseitigeOid: " + ServerseitigeOid +
|
||||
"\n\tClientseitigeOid: " + ClientseitigeOid +
|
||||
"\n\tIsEmployee: " + IsEmployee +
|
||||
"\n\tMessageId: " + MessageId;
|
||||
}
|
||||
|
||||
public static int analyzingPackets(String packetString) {
|
||||
int packetCount = 0;
|
||||
|
||||
|
||||
String[] gesplittet = packetString.split(";");
|
||||
|
||||
Log.i("PACKET_ANALYZER", "Anzahl Semikola: " + (gesplittet.length - 1));
|
||||
Log.i("PACKET_ANALYZER", "Zu analysierender String: " + packetString);
|
||||
|
||||
//z.B. Header: 11;3;15;17;0;2657;43;demoapp4;1;5a50002f-464b-4763-91e2-d261463477e0;
|
||||
|
||||
// 11;3;15;17;0;2657;43;demoapp4;1;5a50002f-464b-4763-91e2-d261463477e0;Elliot Aldersonnoch eine antwort03.11.2016 14:14:150
|
||||
// 11;3;15;17;0;2657;43;demoapp4;1;5a50002f-464b-4763-91e2-d261463477e0;Elliot Alderson --> 84 Zeichen
|
||||
// noch eine antwort --> 17 Zeichen
|
||||
// 03.11.2016 14:14:150 --> 20 Zeichen --> 84 + 17 + 20 = 121
|
||||
|
||||
int senderPersonOidLength = gesplittet[0].length(); // 2
|
||||
int recipientPersonOidLength = gesplittet[1].length(); // 1
|
||||
int chatNameLength = gesplittet[2].length(); // 2
|
||||
int chatMessageLength = gesplittet[3].length(); // 2
|
||||
int chatIdentifierLength = gesplittet[4].length(); // 1
|
||||
int serverseitigeOidLength = gesplittet[5].length(); // 4
|
||||
int clientseitigeOidLength = gesplittet[6].length(); // 2
|
||||
int tenantLength = gesplittet[7].length(); // 8
|
||||
int isEmployeeLength = gesplittet[8].length(); // 1
|
||||
int messageIdLength = gesplittet[9].length(); // 36
|
||||
|
||||
int headerLength = gesplittet.length - 1 +
|
||||
senderPersonOidLength +
|
||||
recipientPersonOidLength +
|
||||
chatNameLength +
|
||||
chatMessageLength +
|
||||
chatIdentifierLength +
|
||||
serverseitigeOidLength +
|
||||
clientseitigeOidLength +
|
||||
tenantLength +
|
||||
isEmployeeLength +
|
||||
messageIdLength +
|
||||
Integer.parseInt(gesplittet[2]);
|
||||
|
||||
Log.i("PACKET_ANALYZER", "Testausgabe: " + packetString.substring(0, headerLength));
|
||||
|
||||
/*
|
||||
SenderPersonOid = Integer.parseInt(senderPersonOidString);
|
||||
RecipientPersonOid = Integer.parseInt(recipientPersonOidString);
|
||||
ServerseitigeOid = Integer.parseInt(serverseitigeOidString);
|
||||
ClientseitigeOid = Integer.parseInt(clientseitigeOidString);
|
||||
IsEmployee = Integer.parseInt(isEmployeeString) == 1;
|
||||
|
||||
|
||||
|
||||
Logout von Elliot Alderson:
|
||||
|
||||
SenderPersonOid RecipientPersonOid ChatNameLength ChatMessageLength ChatIdentifier ServerseitigeOid ClientseitigeOid Tenant IsEmployee MessageId ChatName TimeStamp IsDelivered
|
||||
11; 0; 15; 0; 5; 0; 0; ; 1; ; Elliot Alderson 03.11.2016 15:00:05 0
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
int actualChatNameLength = Integer.parseInt(gesplittet[2]); // 15 bei Elliot Alderson
|
||||
|
||||
int actualChatMessageLength = Integer.parseInt(gesplittet[3]);
|
||||
// + 20 -> 19 für den Timestamp und 1 für IsDelivered
|
||||
int firstMessageLength = headerLength + actualChatMessageLength + 20;
|
||||
|
||||
Log.i("PACKET_ANALYZER", "Header-Length: " + headerLength);
|
||||
Log.i("PACKET_ANALYZER", "Länge der ersten Nachricht: " + firstMessageLength);
|
||||
Log.i("PACKET_ANALYZER", "Erste Nachricht: " + packetString.substring(0, firstMessageLength));
|
||||
|
||||
return packetCount;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public class SoapCalls {
|
||||
|
||||
public static String TOKEN_CHECK_URL = "https://" + DESTINATION_ADDRESS + "/mobil/main/checktoken?token=";
|
||||
|
||||
public static String WEB_DOKU_URL = "https://" + DESTINATION_ADDRESS + "/mobil/login/demo";
|
||||
public static String WEB_DOKU_URL = "https://app1.bewoplaner.de/mobil/login/1234567890";
|
||||
|
||||
public static String WSDL_TARGET_NAME = "bliblablubb.org/";
|
||||
public static String SOAP_ADDRESS = "https://" + DESTINATION_ADDRESS + "/BeWoPlanerAndroid/AndroidSoapService.asmx";
|
||||
|
||||
@@ -4,6 +4,6 @@ package tcpConnection;
|
||||
/**
|
||||
* Created by JettenM on 08.09.2016.
|
||||
*/
|
||||
public interface LoginCallback {
|
||||
public interface Callback {
|
||||
void doCallback();
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package tcpConnection;
|
||||
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
@@ -44,29 +43,24 @@ public class SocketManager {
|
||||
private static Thread listenerThread;
|
||||
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;
|
||||
public static Callback loginCallback;
|
||||
public static Callback initialLoginCallback;
|
||||
public static Callback connectionFailureCallback;
|
||||
public static Callback loginCallbackAfterConnectionLost;
|
||||
public static Callback sendFailureCallback;
|
||||
private static DataOutputStream dataOutputStream;
|
||||
|
||||
public static ArrayList<Integer> onlinePersonOids = new ArrayList<>();
|
||||
public static ArrayList<ChatEntity> onlineEntities = new ArrayList<>();
|
||||
public static HashMap<ChatEntity, NotificationLog> notificationEntities = new HashMap<>();
|
||||
public static LoginCallback loginCallback2;
|
||||
public static LoginCallback socketConnectionFailedCallback;
|
||||
public static Callback loginCallback2;
|
||||
private static Callback socketConnectionFailedCallback;
|
||||
|
||||
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();
|
||||
}
|
||||
@@ -177,7 +171,7 @@ public class SocketManager {
|
||||
}
|
||||
}
|
||||
|
||||
public static void loginOnServer() {
|
||||
private static void loginOnServer() {
|
||||
if(socket != null && socket.isConnected()) {
|
||||
try {
|
||||
Packet packet = new Packet();
|
||||
@@ -197,29 +191,6 @@ public class SocketManager {
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
socket.close();
|
||||
}
|
||||
|
||||
} catch (IOException se) {
|
||||
BeWoChatApplication.writeExceptionToLog(se);
|
||||
se.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class MessageSender implements Runnable {
|
||||
byte[] packetToSend;
|
||||
|
||||
@@ -238,8 +209,6 @@ public class SocketManager {
|
||||
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();
|
||||
|
||||
@@ -252,6 +221,7 @@ public class SocketManager {
|
||||
sentMessage.SendDate = Calendar.getInstance().getTime();
|
||||
int affectedRows = db.updateChatMessage(sentMessage);
|
||||
Log.i("MESSAGE_SENDER", "SendDate wurde erfolgreich aktualisiert: " + (affectedRows == 1));
|
||||
BeWoLog.writeToLogFile("SendDate wurde erfolgreich aktualisiert: " + (affectedRows == 1));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
BeWoChatApplication.writeExceptionToLog(e);
|
||||
@@ -263,12 +233,15 @@ public class SocketManager {
|
||||
DatabaseHandler db = DatabaseHandler.getInstance(BeWoChatApplication.getInstance().getApplicationContext());
|
||||
ChatMessage undeliveredMessage = db.getChatMessageById(packet.ClientseitigeOid);
|
||||
if(undeliveredMessage != null) {
|
||||
|
||||
Log.i(LOGTAG, "Bisheriger Wert von IsDelivered: " + undeliveredMessage.IsDelivered + (undeliveredMessage.IsDelivered ? "" : ". Diese Aktion war unnötig."));
|
||||
|
||||
undeliveredMessage.IsDelivered = false;
|
||||
int affectedRows = db.updateChatMessage(undeliveredMessage);
|
||||
BeWoLog.writeToLogFile("Nicht verschickte Nachricht ");
|
||||
}
|
||||
}
|
||||
|
||||
// SocketManager.shutDownConnectionToServer("MessageSender->Socket ist nicht erreichbar.");
|
||||
SocketManager.connectToServer("MessageSender beim gescheiterten Versenden einer Nachricht.");
|
||||
} catch (UnsupportedEncodingException e1) {
|
||||
BeWoChatApplication.writeExceptionToLog(e1);
|
||||
@@ -278,7 +251,6 @@ public class SocketManager {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
// SocketManager.shutDownConnectionToServer("MessageSender->Socket und/oder OutputStream sind null");
|
||||
SocketManager.connectToServer("MessageSender. Socket und/oder OutputStream sind null");
|
||||
}
|
||||
} else {
|
||||
@@ -306,7 +278,6 @@ public class SocketManager {
|
||||
try {
|
||||
while (isRunning) {
|
||||
Thread.currentThread().sleep(1000);
|
||||
Log.i("SOCKET_MANAGER", "Lausche...");
|
||||
if (socket != null) {
|
||||
if (socket.isConnected()) {
|
||||
|
||||
@@ -325,6 +296,8 @@ public class SocketManager {
|
||||
stream.read(message, 0, size);
|
||||
|
||||
try {
|
||||
Packet.analyzingPackets(new String(message, "UTF-8"));
|
||||
|
||||
chatPacket = new Packet(new String(message, "UTF-8"));
|
||||
} catch(Exception e) {
|
||||
BeWoChatApplication.writeExceptionToLog(e);
|
||||
@@ -360,9 +333,11 @@ public class SocketManager {
|
||||
switch (chatPacket.ChatDataIdentifier) {
|
||||
case KEEP_ALIVE:
|
||||
|
||||
BeWoLog.writeToLogFile("KeepAlive-Antwort erhalten. (SocketManger)");
|
||||
|
||||
break;
|
||||
case MESSAGE:
|
||||
BeWoLog.writeToLogFile("Empfange Nacahricht. (SocketManager)");
|
||||
BeWoLog.writeToLogFile("Empfange Nacahricht(" + chatPacket.MessageId + "). (SocketManager)");
|
||||
Log.i(LOGTAG, "Empfange Nacahricht");
|
||||
|
||||
databaseHandler.addChatMessage(new ChatMessage(chatPacket.SenderPersonOid, chatPacket.RecipientPersonOid, chatPacket.MessageTimeStamp, chatPacket.ChatMessage, true, chatPacket.ServerseitigeOid, false, chatPacket.MessageId));
|
||||
@@ -370,19 +345,21 @@ public class SocketManager {
|
||||
break;
|
||||
|
||||
case TEAM:
|
||||
BeWoLog.writeToLogFile("Empfange Team-Nacahricht. (SocketManager)");
|
||||
BeWoLog.writeToLogFile("Empfange Team-Nacahricht(" + chatPacket.MessageId + "). (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)");
|
||||
BeWoLog.writeToLogFile("Empfange Response für Message: " + chatPacket.MessageId + "; (SocketManager)");
|
||||
ChatMessage cm = databaseHandler.getChatMessageById(chatPacket.ClientseitigeOid);
|
||||
|
||||
cm.ServerseitigeOid = chatPacket.ServerseitigeOid;
|
||||
cm.MessageId = chatPacket.MessageId;
|
||||
cm.IsDelivered = true;
|
||||
|
||||
databaseHandler.updateChatMessage(cm);
|
||||
int affectedRows = databaseHandler.updateChatMessage(cm);
|
||||
BeWoLog.writeToLogFile("Durch das Aktualisieren der ChatMessage bei Response betroffene Datensätze: " + affectedRows + ". (SocketManager -> MESSAGE_RESPONSE)");
|
||||
|
||||
break;
|
||||
case STATUS_NOTIFICATION_LOGIN:
|
||||
BeWoLog.writeToLogFile("Benutzer " + chatPacket.ChatName + " ist jetzt online. (SocketManager)");
|
||||
|
||||
@@ -31,7 +31,7 @@ public class BeWoLog {
|
||||
|
||||
File root = android.os.Environment.getExternalStorageDirectory();
|
||||
|
||||
File dir = new File(root.getAbsolutePath() + "/BeWo");
|
||||
File dir = new File(root.getAbsolutePath() + "/" + Util.LOGFILEDIRECTORYNAME);
|
||||
dir.mkdirs();
|
||||
|
||||
File file = new File(dir, Util.LOGFILENAME);
|
||||
@@ -48,4 +48,16 @@ public class BeWoLog {
|
||||
ioException.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static Boolean deleteLogFile() {
|
||||
if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
|
||||
Log.e("BEWOLOG", "Kein externes Speichermedium vorhanden.");
|
||||
return false;
|
||||
}
|
||||
|
||||
File root = android.os.Environment.getExternalStorageDirectory();
|
||||
File logFile = new File(root.getAbsolutePath() + "/" + Util.LOGFILEDIRECTORYNAME + "/" + Util.LOGFILENAME);
|
||||
|
||||
return logFile.delete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,6 @@ 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;
|
||||
@@ -23,16 +20,13 @@ import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import Database.DatabaseHandler;
|
||||
import beyondsoft.bewomitarbeiterapp.BeWoChatApplication;
|
||||
import beyondsoft.bewomitarbeiterapp.ChatActivity;
|
||||
import beyondsoft.bewomitarbeiterapp.ContactListItem;
|
||||
import beyondsoft.bewomitarbeiterapp.KontaktChatActivity;
|
||||
import beyondsoft.bewomitarbeiterapp.R;
|
||||
import entities.ChatEntity;
|
||||
import entities.ChatMessage;
|
||||
import entities.NotificationLog;
|
||||
import soapConnection.DataIdentifier;
|
||||
import soapConnection.Packet;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import tcpConnection.LoginCallback;
|
||||
import tcpConnection.SocketManager;
|
||||
|
||||
/**
|
||||
@@ -48,15 +42,23 @@ public class Util {
|
||||
public static final String PREFS_USERNAME_KEY = "username";
|
||||
public static final String PREFS_PASSWORD = "password";
|
||||
|
||||
public static final String NOTIFICATION_CANCELLED = "notification_cancelled";
|
||||
public static final String PREFS_FIRST_RUN_KEY = "firstRunKey";
|
||||
|
||||
public static int conversationsCount = 0;
|
||||
static final String NOTIFICATION_CANCELLED = "notification_cancelled";
|
||||
|
||||
public static HashMap<ChatEntity, Integer> entity2MessagesCountRel = new HashMap<>();
|
||||
static String LOGFILENAME = "BeWoLog.txt";
|
||||
static String LOGFILEDIRECTORYNAME = "BeWo";
|
||||
|
||||
static int conversationsCount = 0;
|
||||
|
||||
private static HashMap<ChatEntity, Integer> entity2MessagesCountRel = new HashMap<>();
|
||||
|
||||
//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;
|
||||
ChatEntity chatEntity = new ChatEntity(recipientOid, isTeam, isEmployee);
|
||||
updateMessagesCount(chatEntity, 1);
|
||||
|
||||
int unreadMessagesCount = entity2MessagesCountRel.get(chatEntity);
|
||||
|
||||
if(SocketManager.notificationEntities.keySet().size() >= 1) {
|
||||
conversationsCount = SocketManager.notificationEntities.keySet().size();
|
||||
@@ -100,13 +102,6 @@ public class Util {
|
||||
|
||||
Random random = new Random();
|
||||
int notificationId = 1;
|
||||
ChatEntity chatEntity = new ChatEntity(recipientOid, isTeam, isEmployee);
|
||||
|
||||
|
||||
|
||||
// TODO: in entity2MessagesCountRels einfügen und Anzahl der Nachrichten aktualisieren
|
||||
updateMessagesCount(chatEntity, 1);
|
||||
|
||||
|
||||
NotificationLog notificationLog = new NotificationLog(notificationId, Calendar.getInstance().getTime());
|
||||
|
||||
@@ -135,7 +130,7 @@ public class Util {
|
||||
mNotifyMgr.notify(notificationId, mBuilder.build());
|
||||
}
|
||||
|
||||
protected static PendingIntent getDeletedIntent(Context context, int recipientOid, boolean isTeam) {
|
||||
private static PendingIntent getDeletedIntent(Context context, int recipientOid, boolean isTeam) {
|
||||
Intent intent = new Intent(context, NotificationBroadcastReceiver.class);
|
||||
intent.setAction(Util.NOTIFICATION_CANCELLED);
|
||||
|
||||
@@ -174,13 +169,21 @@ public class Util {
|
||||
}
|
||||
|
||||
private static void updateMessagesCount(ChatEntity entity, int value2add) {
|
||||
ContactListItem cli = DatabaseHandler.getInstance(BeWoChatApplication.getInstance()).getContactByPersonOid(Long.valueOf(entity.getOid()).intValue(), entity.getIsTeam());
|
||||
BeWoLog.writeToLogFile("Aktualisiere die Anzahl der ungelesenen Nachrichten von " + cli.getChatName() + " (updateMessagesCount)");
|
||||
|
||||
int newValue = value2add;
|
||||
|
||||
if(entity2MessagesCountRel.containsKey(entity)) {
|
||||
BeWoLog.writeToLogFile("Der Chatpartner ist in der Liste der ungelesenen Nachrichten vorhanden. (updateMessagesCount)");
|
||||
newValue = entity2MessagesCountRel.get(entity) + value2add;
|
||||
BeWoLog.writeToLogFile("Alter Wert: " + entity2MessagesCountRel.get(entity) + ". Wert, der addiert wird: " + value2add + ". Neuer Wert: " + newValue + " (updateMessagesCount)");
|
||||
} else {
|
||||
BeWoLog.writeToLogFile("Der Chatpartner ist nicht in der Liste der ungelesenen Nachrichten vorhanden. (updateMessagesCount)");
|
||||
}
|
||||
|
||||
entity2MessagesCountRel.put(entity, newValue);
|
||||
BeWoLog.writeToLogFile("Jetzt in der Liste: " + entity2MessagesCountRel.get(entity) + ". (updateMessagesCount)");
|
||||
}
|
||||
|
||||
public static void removeMessagesCount(ChatEntity entity) {
|
||||
@@ -209,6 +212,4 @@ 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";
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 195 B |
Reference in New Issue
Block a user