diff --git a/Android/BewoMitarbeiterApp/.idea/.name b/Android/BewoMitarbeiterApp/.idea/.name deleted file mode 100644 index 3707833a7..000000000 --- a/Android/BewoMitarbeiterApp/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -BewoMitarbeiterApp \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/.idea/codeStyleSettings.xml b/Android/BewoMitarbeiterApp/.idea/codeStyleSettings.xml deleted file mode 100644 index b6c1cd7c7..000000000 --- a/Android/BewoMitarbeiterApp/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/.idea/compiler.xml b/Android/BewoMitarbeiterApp/.idea/compiler.xml index 9a8b7e5c4..96cc43efa 100644 --- a/Android/BewoMitarbeiterApp/.idea/compiler.xml +++ b/Android/BewoMitarbeiterApp/.idea/compiler.xml @@ -1,7 +1,6 @@ - - + diff --git a/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml b/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml index 88dbd817b..fb3ed83ef 100644 --- a/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml +++ b/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/app/app.iml b/Android/BewoMitarbeiterApp/app/app.iml index 775fb29fa..5c1f8f22c 100644 --- a/Android/BewoMitarbeiterApp/app/app.iml +++ b/Android/BewoMitarbeiterApp/app/app.iml @@ -66,14 +66,6 @@ - - - - - - - - @@ -82,9 +74,16 @@ + + + + + + + + - @@ -100,6 +99,8 @@ + + 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 8998ae55e..d0ed511e2 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java @@ -362,6 +362,8 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei adapter.sort(DATE_COMPARATOR); adapter.notifyDataSetChanged(); + listView.setSelection(adapter.getCount() - 1); + text.setText(""); } }); @@ -458,6 +460,7 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei spiceManager.execute(request, new JsonSoapPrimitiveRequestListener(corruptedSpiceCallback, isInitialCall)); } }; + SocketManager.connectToServer("ChatActivity -> Letzter Serverkontakt ist länger als " + BeWoChatApplication.getRefreshIntervalInMinutes() + " Minuten her"); } } else { @@ -668,13 +671,15 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei public void run() { chatMessages.addAll(result); adapter.sort(DATE_COMPARATOR); - if(!isInitialCall) { - try { - listView.setSelection(0); - } catch(Exception e) { - Util.buildAlert(ChatActivity.this, "adapter.getCount() hat nicht funktioniert!"); - } - } + +// if(!isInitialCall) { +// try { +// listView.setSelection(0); +// } catch(Exception e) { +// Util.buildAlert(ChatActivity.this, "adapter.getCount() hat nicht funktioniert!"); +// } +// } + adapter.notifyDataSetChanged(); } }); @@ -737,61 +742,6 @@ public class ChatActivity extends ActionBarActivity implements ConnectivityRecei } } - private final class JsonSoapChunkRequestListener implements RequestListener { - - @Override - public void onRequestFailure(SpiceException spiceException) { - BeWoLog.writeToLogFile("Das Chunkweise Laden der Nachrichten ist fehlgeschlagen. (ChatActivity->JsonSoapChunkRequestListener->onRequestFailure)"); - - runOnUiThread(new Runnable() { - @Override - public void run() { - Toast.makeText(ChatActivity.this, "Ein Fehler ist beim chunkweise Laden der Nachrichten auftegreten.", Toast.LENGTH_LONG).show(); - } - }); - - Log.e("GET_ALL_MESSAGES", "Das Chunkweise Laden der Nachrichten ist gescheitert: " + spiceException.getMessage()); - } - - @Override - public void onRequestSuccess(SoapPrimitive soapPrimitive) { - BeWoLog.writeToLogFile("Das chunkweise Laden der Nachrichten war erfolgreich. (ChatActivty, wo sonst?)"); - - BeWoChatApplication.lastOnlineTS = Calendar.getInstance().getTime(); - - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(ChatMessage.class, new ChatMessageDeserializer()); - - Gson gson = builder.create(); - - Type listType = new TypeToken>(){}.getType(); - - final ArrayList result = gson.fromJson(soapPrimitive.toString(), listType); - - String abc = "Chunkweise geladenen Nachrichten:\n"; - for(ChatMessage m : result) { - abc += m.MessageId + ": " + m.ChatText; - - if(result.indexOf(m) != (result.size() - 1)) { - abc += "\n"; - } - } - - Log.i("CHUNKS", abc); - - databaseHandler.addChatMessages(result); - - listView.post(new Runnable() { - @Override - public void run() { - chatMessages.addAll(result); - adapter.sort(DATE_COMPARATOR); - adapter.notifyDataSetChanged(); - } - }); - } - } - public static final Comparator DATE_COMPARATOR = new Comparator() { @Override public int compare(ChatMessage lhs, ChatMessage rhs) { diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ContactListItem.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ContactListItem.java index eff0224cb..e429e603b 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ContactListItem.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ContactListItem.java @@ -1,5 +1,7 @@ package beyondsoft.bewomitarbeiterapp; +import android.util.Log; + import entities.ChatPerson; /** @@ -35,10 +37,11 @@ public class ContactListItem { this.mIsEmployee = isEmployee; } - ContactListItem(String kontaktname, int personOid, boolean isTeam, String teamMemberOids, String teamMemberNames, int version, boolean isEmployee){ + ContactListItem(String kontaktname, int personOid, byte[] picture, boolean isTeam, String teamMemberOids, String teamMemberNames, int version, boolean isEmployee){ this.mChatName = kontaktname; this.mPersonOid = personOid; - this.mPicture = null; + this.mPicture = picture; + this.isTeam = isTeam; this.teamMemberNames = teamMemberNames; this.teamMemberOids = teamMemberOids; 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 c8bf7306c..537a15530 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktAdapter.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktAdapter.java @@ -73,6 +73,20 @@ public class KontaktAdapter extends ArrayAdapter { Bitmap i = BitmapFactory.decodeByteArray(imageAsByteArray, 0, imageAsByteArray.length); + if(i == null) { + int bildId = R.drawable.mitarbeiter_avatar; + + if(currentContact.isTeam) { + bildId = R.drawable.mitarbeiter_team_avatar; + } else if(!currentContact.getIsEmployee()) { + bildId = R.drawable.klient_avatar; + } + + Bitmap bitmap = decodeSampledBitmapFromResource(inflater.getContext().getResources(), bildId, 100, 100); + + imageView.setImageBitmap(ImageConverter.getRoundedCornerBitmap(bitmap, bitmap.getWidth() / 2)); + } + getPic = new Thread(new CircleBitmapCreator(i)); getPic.start(); } else { 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 80780a5c8..2cd7e2479 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java @@ -52,6 +52,7 @@ import tcpConnection.SocketManager; import tcpConnection.UIHandler; import util.BeWoLog; import util.ChatMessageDeserializer; +import util.ChatPersonDeserializer; import util.ConnectivityReceiver; import util.SecurityUtils; import util.Util; @@ -666,7 +667,6 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi Log.e(LOGTAG, "Der vom Server zurückgelieferte Wert ist NULL! (Laden der Kontakte)"); - //TODO: wie im Chat try { ArrayList propertyInfos = new ArrayList<>(); @@ -708,7 +708,10 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi isDownloadOfContacsInProgress = false; - Gson gson = new GsonBuilder().create(); + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(ChatPerson.class, new ChatPersonDeserializer()); + + Gson gson = builder.create(); Type listType = new TypeToken>(){}.getType(); @@ -723,7 +726,8 @@ public class KontaktChatActivity extends ActionBarActivity implements Connectivi } for(ChatPerson cp : result) { - ContactListItem contact = new ContactListItem(cp.Name, cp.Oid, cp.IsTeam, cp.TeamMemberOids, cp.TeamMemberNames, cp.Version, cp.IsEmployee); + Log.i("KONTAKTE_VOM_SERVER", "(" + cp.Name + ") Größe des Bildes: " + (cp.ImageThumbnail != null ? "" + cp.ImageThumbnail.length : "Bild ist NULL")); + ContactListItem contact = new ContactListItem(cp.Name, cp.Oid, cp.ImageThumbnail, cp.IsTeam, cp.TeamMemberOids, cp.TeamMemberNames, cp.Version, cp.IsEmployee); ChatEntity cliEntity = new ChatEntity(cp.Oid, cp.IsTeam, cp.IsEmployee); 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 5232b4845..a86d278ae 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/LoginActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/LoginActivity.java @@ -22,7 +22,11 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; +import com.android.volley.Request; import com.android.volley.RequestQueue; +import com.android.volley.Response; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.octo.android.robospice.SpiceManager; import com.octo.android.robospice.UncachedSpiceService; @@ -248,7 +252,7 @@ public class LoginActivity extends ActionBarActivity { showProgress(true); RequestQueue queue = Volley.newRequestQueue(LoginActivity.this); - String url = SoapCalls.TOKEN_CHECK_URL + token; + String url = SoapCalls.VOUCHER_ADDRESS + token; // StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener() { // @Override @@ -262,23 +266,26 @@ public class LoginActivity extends ActionBarActivity { // // return; // } +// +// Util.buildAlert(LoginActivity.this, response); - ArrayList 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 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 // public void onErrorResponse(VolleyError error) { // showProgress(false); +// // Log.e("Error sending request", (error == null ? "error is null" : error.getMessage())); // } // }); - +// // queue.add(stringRequest); } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java index 6e2261ff0..e052e98e1 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java @@ -11,4 +11,14 @@ public class ChatPerson { public String TeamMemberOids; public int Version; public boolean IsEmployee; + + public ChatPerson(int oid, String name, boolean isTeam, String teamMemberNames, String teamMemberOids, int version, boolean isEmployee) { + Oid = oid; + Name = name; + IsTeam = isTeam; + TeamMemberNames = teamMemberNames; + TeamMemberOids = teamMemberOids; + Version = version; + IsEmployee = isEmployee; + } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ImageEntity.java b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ImageEntity.java new file mode 100644 index 000000000..a0e27661e --- /dev/null +++ b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ImageEntity.java @@ -0,0 +1,15 @@ +package entities; + +/** + * Created by Lyndon Jetten on 21.11.2016. + */ + +public class ImageEntity { + public int PersonOid; + public byte[] Image; + + public ImageEntity(int personOid, byte[] image) { + PersonOid = personOid; + Image = image; + } +} diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java index 17c3a5c4e..73944fd67 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java @@ -5,6 +5,7 @@ package soapConnection; */ public class SoapCalls { public static String GET_SERVER_ADDRESS_BY_TOKEN_CALL = "GetServerAddressByToken"; + public static String VOUCHER_ADDRESS = "https://mobile.bewoplaner.de/checkvoucher.php?Voucher="; public static String LOGIN_CALL = "Login"; public static String GET_CONTACTS_FOR_PERSON = "GetContactsForPerson"; diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java index b53936a6d..c6b0a4d1f 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatMessageDeserializer.java @@ -54,8 +54,6 @@ public class ChatMessageDeserializer implements JsonDeserializer { e.printStackTrace(); } - ChatMessage result = new ChatMessage(senderPersonOid, recipientPersonOid, insTs, chatText, isDelivered, serverseitigeOid, isTeam, messageId); - - return result; + return new ChatMessage(senderPersonOid, recipientPersonOid, insTs, chatText, isDelivered, serverseitigeOid, isTeam, messageId); } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatPersonDeserializer.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatPersonDeserializer.java new file mode 100644 index 000000000..148e8935b --- /dev/null +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/ChatPersonDeserializer.java @@ -0,0 +1,48 @@ +package util; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; + +import java.lang.reflect.Type; + +import entities.ChatPerson; + +/** + * Created by Lyndon Jetten on 18.11.2016. + */ + +public class ChatPersonDeserializer implements JsonDeserializer { + @Override + public ChatPerson deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + JsonObject json = (JsonObject) jsonElement; + + int oid = Long.valueOf(json.get("Oid").getAsLong()).intValue(); + String name = json.get("Name").getAsString(); + boolean isTeam = json.get("IsTeam").getAsBoolean(); + + boolean isTeamMemberNamesNull = json.get("TeamMemberNames").isJsonNull(); + boolean isTeamMemberOidsNull = json.get("TeamMemberOids").isJsonNull(); + + String teamMemberNames = isTeamMemberNamesNull ? null : json.get("TeamMemberNames").getAsString(); // könnte NULL sein + String teamMemberOids = isTeamMemberOidsNull ? null : json.get("TeamMemberOids").getAsString(); // könnte NULL sein + int version = Long.valueOf(json.get("Version").getAsLong()).intValue(); + boolean isEmployee = json.get("IsEmployee").getAsBoolean(); + +// JsonArray originalValue = json.get("ImageThumbnail").getAsJsonArray(); +// String stringValue = originalValue.toString(); +// byte[] bytesValue = stringValue.getBytes(); +// byte[] image = null;//new byte[0];//isImageThumbnailNull ? new byte[0] : json.get("ImageThumbnail").getAsJsonArray().toString().getBytes(); + +// String[] test = stringValue.substring(1, stringValue.length() - 1).split(","); +// byte[] abcdef = new byte[test.length]; +// for(int i = 0; len = test.length; i < len; i++) { +// +// } + + + return new ChatPerson(oid, name, isTeam, teamMemberNames, teamMemberOids, version, isEmployee); + } +} diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/ImageEntityDeserializer.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/ImageEntityDeserializer.java new file mode 100644 index 000000000..307deb20a --- /dev/null +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/ImageEntityDeserializer.java @@ -0,0 +1,28 @@ +package util; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; + +import java.lang.reflect.Type; + +import entities.ImageEntity; + +/** + * Created by Lyndon Jetten on 21.11.2016. + */ + +public class ImageEntityDeserializer implements JsonDeserializer { + @Override + public ImageEntity deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) throws JsonParseException { + + JsonObject json = (JsonObject) jsonElement; + + int oid = Long.valueOf(json.get("Oid").getAsLong()).intValue(); + String imgAsBase64 = json.get("").getAsString(); + + return null; + } +}