1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-22 16:23:09 +02:00

Handle user names with (only) strange characters

This commit is contained in:
Erik Johansson
2018-11-26 21:25:47 +01:00
parent 660af298d7
commit 8138f385cb

View File

@@ -34,6 +34,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Locale;
import java.util.UUID; import java.util.UUID;
import timber.log.Timber; import timber.log.Timber;
@@ -130,6 +131,14 @@ public class BluetoothBeurerSanitas extends BluetoothCommunication {
return normalized.replaceAll("[^A-Za-z0-9]", ""); return normalized.replaceAll("[^A-Za-z0-9]", "");
} }
private String convertUserNameToScale(ScaleUser user) {
String normalized = normalizeString(user.getUserName());
if (normalized.isEmpty()) {
return String.valueOf(user.getId());
}
return normalized.toUpperCase(Locale.US);
}
public BluetoothBeurerSanitas(Context context, DeviceType deviceType) { public BluetoothBeurerSanitas(Context context, DeviceType deviceType) {
super(context); super(context);
@@ -361,7 +370,7 @@ public class BluetoothBeurerSanitas extends BluetoothCommunication {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
for (ScaleUser scaleUser : OpenScale.getInstance().getScaleUserList()) { for (ScaleUser scaleUser : OpenScale.getInstance().getScaleUserList()) {
final String localName = normalizeString(scaleUser.getUserName()).toUpperCase(); final String localName = convertUserNameToScale(scaleUser);
cal.setTime(scaleUser.getBirthday()); cal.setTime(scaleUser.getBirthday());
final int year = cal.get(Calendar.YEAR); final int year = cal.get(Calendar.YEAR);
@@ -673,8 +682,8 @@ public class BluetoothBeurerSanitas extends BluetoothCommunication {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(scaleUser.getBirthday()); cal.setTime(scaleUser.getBirthday());
// We can only use up to 3 characters and have to handle them uppercase // We can only use up to 3 characters (padding with 0 if needed)
byte[] nick = Arrays.copyOf(normalizeString(scaleUser.getUserName()).toUpperCase().getBytes(), 3); byte[] nick = Arrays.copyOf(convertUserNameToScale(scaleUser).getBytes(), 3);
byte year = (byte) (cal.get(Calendar.YEAR) - 1900); byte year = (byte) (cal.get(Calendar.YEAR) - 1900);
byte month = (byte) cal.get(Calendar.MONTH); byte month = (byte) cal.get(Calendar.MONTH);
byte day = (byte) cal.get(Calendar.DAY_OF_MONTH); byte day = (byte) cal.get(Calendar.DAY_OF_MONTH);