Android Client von Datei mit ChatNachrichten auf DB umgestellt
This commit is contained in:
@@ -48,13 +48,16 @@ import java.security.NoSuchAlgorithmException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.crypto.NoSuchPaddingException;
|
||||
|
||||
import entities.ChatMessage;
|
||||
import soapConnection.DataIdentifier;
|
||||
import soapConnection.Packet;
|
||||
|
||||
import soapConnection.SoapConnectionManager;
|
||||
import util.SecurityUtils;
|
||||
import util.Util;
|
||||
|
||||
@@ -65,6 +68,8 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
private static final String LOG_TAG = "CHAT";
|
||||
|
||||
private DatabaseHandler databaseHandler;
|
||||
|
||||
//View Variablen
|
||||
protected TextView chat;
|
||||
protected EditText text;
|
||||
@@ -79,15 +84,15 @@ public class ChatActivity extends ActionBarActivity{
|
||||
//Design View
|
||||
protected ListView listView;
|
||||
protected boolean isMe = true;
|
||||
public static List<ChatMessageFormat> chatMessages;
|
||||
public static ArrayAdapter<ChatMessageFormat> adapter;
|
||||
public static List<ChatMessage> chatMessages;
|
||||
public static ArrayAdapter<ChatMessage> adapter;
|
||||
public static ChatMessageFormat chatMessage;
|
||||
|
||||
File file;
|
||||
File Unsendfile = null;
|
||||
File UnsentFile = null;
|
||||
|
||||
protected String name;
|
||||
protected int personOid;
|
||||
protected String recipientName;
|
||||
protected int recipientPersonOid;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -100,7 +105,7 @@ public class ChatActivity extends ActionBarActivity{
|
||||
action.setDisplayShowTitleEnabled(false);
|
||||
|
||||
LayoutInflater inflate = LayoutInflater.from(this);
|
||||
View mCustomView = inflate.inflate(R.layout.custom_menuebar,null);
|
||||
View mCustomView = inflate.inflate(R.layout.custom_menuebar, null);
|
||||
|
||||
|
||||
// Initialiesiere die Variablen
|
||||
@@ -109,8 +114,8 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
//get Daten aus vorheriger Activity
|
||||
Bundle zielkorb = getIntent().getExtras();
|
||||
name = zielkorb.getString("Name");
|
||||
personOid = zielkorb.getInt("RecipientOid");
|
||||
recipientName = zielkorb.getString("Name");
|
||||
recipientPersonOid = zielkorb.getInt("RecipientOid");
|
||||
|
||||
byte[] bildArray = zielkorb.getByteArray("Bild");
|
||||
Bitmap customerImage;
|
||||
@@ -121,18 +126,23 @@ public class ChatActivity extends ActionBarActivity{
|
||||
titlepic.setImageBitmap(GetCircleBitmap(customerImage));
|
||||
}
|
||||
|
||||
titlename.setText(name);
|
||||
titlename.setText(recipientName);
|
||||
|
||||
action.setCustomView(mCustomView);
|
||||
action.setDisplayShowCustomEnabled(true);
|
||||
|
||||
databaseHandler = new DatabaseHandler(this);
|
||||
|
||||
senden = (Button)findViewById(R.id.Sendebutton);
|
||||
|
||||
chatMessages = new ArrayList<>();
|
||||
|
||||
listView = (ListView)findViewById(R.id.list_msg);
|
||||
|
||||
adapter = new MessageAdapter(this, R.layout.item_chat_left,chatMessages);
|
||||
DatabaseHandler handler = new DatabaseHandler(this);
|
||||
chatMessages = databaseHandler.getMessagesForRecipient(recipientPersonOid);
|
||||
|
||||
adapter = new MessageAdapter(this, R.layout.item_chat_left, chatMessages);
|
||||
listView.setAdapter(adapter);
|
||||
|
||||
try {
|
||||
@@ -141,15 +151,11 @@ public class ChatActivity extends ActionBarActivity{
|
||||
MainActivityMitarbeiter.CloseMainActivitySocketListener();
|
||||
|
||||
socketOutputStream = new DataOutputStream(socket.getOutputStream());
|
||||
|
||||
} catch(Exception e){
|
||||
Log.e("CHAT_ERROR", "Fehler bei der Socket-Erstellung: " + e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
CreateFile();
|
||||
|
||||
ReadMessageToStorage();
|
||||
//ReadMessageToStorage();
|
||||
|
||||
text = (EditText)findViewById(R.id.editText);
|
||||
|
||||
@@ -165,13 +171,9 @@ public class ChatActivity extends ActionBarActivity{
|
||||
}
|
||||
});
|
||||
|
||||
//Erstelle einen immer horchenden Listener
|
||||
Thread t = new Thread(new SocketListener());
|
||||
t.start();
|
||||
|
||||
//MainActivityMitarbeiter.listen.sus
|
||||
//sharedpreferences = true;
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", true);
|
||||
@@ -181,16 +183,12 @@ public class ChatActivity extends ActionBarActivity{
|
||||
public class MessageSender implements Runnable{
|
||||
public void run(){
|
||||
try{
|
||||
Log.i(LOG_TAG, "Sende Nachricht...");
|
||||
|
||||
if(socket != null ) {
|
||||
|
||||
Log.d(LOG_TAG, "Ist der Socket mit dem Server Verbunden: " + (socket.isConnected()));
|
||||
|
||||
Packet p = new Packet();
|
||||
p.ChatMessage = text.getText().toString();
|
||||
p.ChatDataIdentifier = DataIdentifier.MESSAGE;
|
||||
p.RecipientPersonOid = personOid;
|
||||
p.RecipientPersonOid = recipientPersonOid;
|
||||
|
||||
SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
|
||||
@@ -211,18 +209,23 @@ public class ChatActivity extends ActionBarActivity{
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Log.i(LOG_TAG, "Führe GUI-Update durch...");
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
Date now = c.getTime();
|
||||
|
||||
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
|
||||
String formattedDate = df.format(c.getTime());
|
||||
String formattedDate = df.format(now);
|
||||
|
||||
saveCompleteMessage = text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n";
|
||||
// saveCompleteMessage = text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n";
|
||||
//
|
||||
// WriteMessagesfromStorage(text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n");
|
||||
|
||||
WriteMessagesfromStorage(text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n");
|
||||
// TODO: In Datenbank speichern
|
||||
ChatMessage message = new ChatMessage(SoapConnectionManager.User.getPersonOid().intValue(), recipientPersonOid, now, text.getText().toString(), false);
|
||||
|
||||
databaseHandler.addChatMessage(message);
|
||||
|
||||
chatMessage = new ChatMessageFormat(text.getText().toString(), isMe, formattedDate);
|
||||
chatMessages.add(chatMessage);
|
||||
chatMessages.add(message);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
text.setText("");
|
||||
@@ -272,16 +275,27 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
chatPacket = new Packet(total.toString());
|
||||
|
||||
if(!chatPacket.ChatDataIdentifier.equals(DataIdentifier.MESSAGE)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Log.i("CHAT_ACTIVITY", "Erhaltene Nachricht: " + chatPacket.ChatMessage);
|
||||
|
||||
listV.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
WriteMessagesfromStorage(chatPacket.ChatMessage + "/" + false + "%" + chatPacket.getFormattedMessageTimeStamp() + "\n");
|
||||
// TODO: Nachricht in Datenbank speichern
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
Date now = c.getTime();
|
||||
|
||||
ChatMessage message = new ChatMessage(SoapConnectionManager.User.getPersonOid().intValue(), recipientPersonOid, now, chatPacket.ChatMessage, false);
|
||||
|
||||
databaseHandler.addChatMessage(message);
|
||||
|
||||
chatMessage = new ChatMessageFormat(chatPacket.ChatMessage, false, chatPacket.getFormattedMessageTimeStamp());
|
||||
chatMessages.add(chatMessage);
|
||||
chatMessages.add(message);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
@@ -298,9 +312,9 @@ public class ChatActivity extends ActionBarActivity{
|
||||
}
|
||||
|
||||
public void SaveAfterLoseConnection(String UnsendMessage){
|
||||
CreateCustomFileForUnSendMessage();
|
||||
CreateCustomFileForUnsentMessage();
|
||||
try{
|
||||
FileOutputStream stream = new FileOutputStream(Unsendfile,true);
|
||||
FileOutputStream stream = new FileOutputStream(UnsentFile,true);
|
||||
|
||||
try{
|
||||
stream.write(UnsendMessage.getBytes());
|
||||
@@ -314,9 +328,9 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
public void SendAfterGetConnection(){
|
||||
//ist eine UnsendMessage File vorhanden
|
||||
if(Unsendfile != null && socket.isConnected()){
|
||||
if(UnsentFile != null && socket.isConnected()){
|
||||
try{
|
||||
FileInputStream stream = new FileInputStream(Unsendfile);
|
||||
FileInputStream stream = new FileInputStream(UnsentFile);
|
||||
InputStreamReader in = new InputStreamReader(stream);
|
||||
BufferedReader readLn = new BufferedReader(in);
|
||||
|
||||
@@ -336,13 +350,13 @@ public class ChatActivity extends ActionBarActivity{
|
||||
final String datetime = ArtDate[1];
|
||||
|
||||
//für jede Gelesene Line Sende Nachricht
|
||||
new Thread(new SendUnsendMS(message)).start();
|
||||
new Thread(new SendUnsentMessage(message)).start();
|
||||
}
|
||||
line = readLn.readLine();
|
||||
}
|
||||
stream.close();
|
||||
in.close();
|
||||
Unsendfile.delete();
|
||||
UnsentFile.delete();
|
||||
}catch(Exception fe){
|
||||
Log.v("Status","Ein problem ist im BEreich Unsend Ms Aufgetreten");
|
||||
}
|
||||
@@ -350,11 +364,11 @@ public class ChatActivity extends ActionBarActivity{
|
||||
}
|
||||
}
|
||||
|
||||
public class SendUnsendMS implements Runnable{
|
||||
public class SendUnsentMessage implements Runnable{
|
||||
|
||||
String al;
|
||||
|
||||
SendUnsendMS(String unMS){
|
||||
SendUnsentMessage(String unMS){
|
||||
this.al = unMS;
|
||||
}
|
||||
|
||||
@@ -370,12 +384,12 @@ public class ChatActivity extends ActionBarActivity{
|
||||
socketOutputStream.flush();
|
||||
}
|
||||
}catch(Exception xs){
|
||||
|
||||
Log.e("SendUnsentMessage", xs.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateCustomFileForUnSendMessage(){
|
||||
public void CreateCustomFileForUnsentMessage(){
|
||||
try{
|
||||
File pfad = getBaseContext().getFilesDir();
|
||||
|
||||
@@ -383,7 +397,7 @@ public class ChatActivity extends ActionBarActivity{
|
||||
//File pfad = getBaseContext().getExternalFilesDir(null);
|
||||
|
||||
//Erstelle das File Objekt
|
||||
Unsendfile = new File(pfad,name+"_Unsend"+".txt");
|
||||
UnsentFile = new File(pfad,recipientName+"_Unsend"+".txt");
|
||||
|
||||
}catch(Exception e){
|
||||
Log.v("Fehler"," Das erstellen/öffnen einer Datei ist Derzeit nicht möglich");
|
||||
@@ -434,62 +448,7 @@ public class ChatActivity extends ActionBarActivity{
|
||||
mNotifyMgr.notify(1, mBuilder.build());
|
||||
}
|
||||
|
||||
public void onResume() {
|
||||
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", true);
|
||||
editor.commit();
|
||||
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
public void onStop(){
|
||||
// Thread t = new Thread(new ConnectionClose());
|
||||
// t.start();
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", false);
|
||||
editor.commit();
|
||||
|
||||
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
public void onDestroy(){
|
||||
// Thread t = new Thread(new ConnectionClose());
|
||||
// t.start();
|
||||
// currentlisten = null;
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", false);
|
||||
editor.commit();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
public void CreateFile(){
|
||||
|
||||
try{
|
||||
|
||||
File pfad = getBaseContext().getFilesDir();
|
||||
|
||||
//Für external Save
|
||||
//File pfad = getBaseContext().getExternalFilesDir(null);
|
||||
|
||||
//Erstelle das File Objekt
|
||||
//file = new File(pfad,name+".txt");
|
||||
|
||||
//vorläufig ##### für debug zwecke
|
||||
file = new File(pfad,"demo"+".txt");
|
||||
}catch(Exception e){
|
||||
Log.v("Fehler"," Das erstellen/öffnen einer Datei ist Derzeit nicht möglich");
|
||||
}
|
||||
}
|
||||
|
||||
//Internal Storage
|
||||
// Internal Storage
|
||||
public void WriteMessagesfromStorage(String message){
|
||||
try{
|
||||
FileOutputStream stream = new FileOutputStream(file,true);
|
||||
@@ -510,8 +469,6 @@ public class ChatActivity extends ActionBarActivity{
|
||||
//Internal storage
|
||||
public void ReadMessageToStorage(){
|
||||
try{
|
||||
|
||||
// Log.v("Status","Verbindung steht 1");
|
||||
int lenght = (int) file.length();
|
||||
|
||||
byte[] bytes = new byte[lenght];
|
||||
@@ -525,33 +482,27 @@ public class ChatActivity extends ActionBarActivity{
|
||||
BufferedReader readLn = new BufferedReader(in);
|
||||
|
||||
String line = readLn.readLine();
|
||||
String allLines="";
|
||||
String allLines = "";
|
||||
//Build a readLine konstrukt
|
||||
while (line != null) {
|
||||
allLines += line;
|
||||
|
||||
//Funktion für das korrekte anzeigen der Geladenen Nachrichten hier implementieren
|
||||
//---> <---//
|
||||
//String[] splitt = line.split("/");
|
||||
|
||||
// Log.v("Status",line);
|
||||
|
||||
String[] splitt = line.split("/");
|
||||
|
||||
if(splitt.length >1 ) {
|
||||
if(splitt.length > 1) {
|
||||
String[] ArtDate = splitt[1].split("%"); //<------------ im code sind als seperator ? gesetzt // lösung einfach alle löschen und neuen chat speichern !!
|
||||
|
||||
final String message = splitt[0];
|
||||
|
||||
final boolean art = Boolean.valueOf(ArtDate[0]);
|
||||
|
||||
final String datetime = ArtDate[1];
|
||||
|
||||
Log.i("NACHRICHT AUS DATEI", splitt[0]);
|
||||
|
||||
listView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
chatMessage = new ChatMessageFormat(message, art, datetime);
|
||||
chatMessages.add(chatMessage);
|
||||
//chatMessages.add(message);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
@@ -562,9 +513,6 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
stream.close();
|
||||
in.close();
|
||||
|
||||
// Log.v("Local Storage",allLines);
|
||||
|
||||
}catch(Exception e){
|
||||
Log.v("Fehler 2 ",e.getMessage());
|
||||
e.printStackTrace();
|
||||
|
||||
Reference in New Issue
Block a user