From 1aaf2ba4857ef1bc38517f0c022143421065a9f3 Mon Sep 17 00:00:00 2001 From: Mariya Date: Mon, 4 Mar 2024 18:02:07 +0530 Subject: [PATCH] sanitize the results values if the result is NaN or infinity --- app/build.gradle | 4 +- .../presentation/dashboard/HomeFragment.kt | 2 +- .../presentation/hemocube/HemoCubeFragment.kt | 4 +- .../hemocube/HemoCubeViewModel.kt | 40 ++++++++++++++----- app/src/main/res/xml/file_paths.xml | 2 +- build.gradle | 6 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- 7 files changed, 40 insertions(+), 20 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 45d2f0e..2765cb5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "in.sminnovations.hpostesting.dev" minSdk 21 targetSdk 34 - versionCode 114 - versionName "2.1.114" + versionCode 120 + versionName "2.1.120" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index c2d4598..71c8476 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -311,7 +311,7 @@ class HomeFragment : Fragment() { hemoCubeViewModel.login(createLoginRequestData(userID, password)) } } - } else if (userID.isEmpty() && password.isEmpty() && deviceId.isNotEmpty()) { + } else if (userID == "deviceIDAPI" && password == "devicePasswordAPI" && deviceId.isNotEmpty()) { fetchDeviceCredentials() } else { Toast.makeText( diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index fe98a4a..0f7b8f6 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -5,6 +5,7 @@ import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -172,10 +173,11 @@ class HemoCubeFragment : Fragment() { it.exception.let { message -> Toast.makeText( activity, - "An error occurred: $message", + "$message", Toast.LENGTH_LONG ) .show() + Log.d("resultuploadfail1", message.toString()) } handleReadingFinish() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index 47fc9a3..d4a5855 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -37,6 +37,7 @@ import com.example.hpostesting.data.model.updates.DeviceUpdateRequest import com.example.hpostesting.data.repository.Repository import com.example.hpostesting.domain.CheckUpdateWorker import com.example.hpostesting.domain.LogFileManager +import com.google.gson.GsonBuilder import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import okhttp3.MediaType.Companion.toMediaTypeOrNull @@ -333,20 +334,24 @@ class HemoCubeViewModel @Inject constructor( fireBaseUpload.postValue("Success") testDetails.localFlag = true if (Constants.MOLBIO_INTEGRATION) { + // Sanitize testDetails before using it in the API call + val sanitizedTestDetails = sanitizeDoubleValues(testDetails) + + // Now, use sanitizedTestDetails for the API call uploadResult( MolbioV2ResultRequest( mutableListOf( MolbioV2Result( - rawData = testDetails, - analysisId = testDetails._id, - analysisDate = testDetails.testTime, - analysisStatus = testDetails.classificationResult, - thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[testDetails.deviceId].toString(), - interpretation = testDetails.classificationResult, - testId = testDetails._id, - testTime = testDetails.testTime, - collectionTime = testDetails.testTime, - expiryTime = testDetails.testTime, + rawData = sanitizedTestDetails, + analysisId = sanitizedTestDetails._id, + analysisDate = sanitizedTestDetails.testTime, + analysisStatus = sanitizedTestDetails.classificationResult, + thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[sanitizedTestDetails.deviceId]?.toString(), + interpretation = sanitizedTestDetails.classificationResult, + testId = sanitizedTestDetails._id, + testTime = sanitizedTestDetails.testTime, + collectionTime = sanitizedTestDetails.testTime, + expiryTime = sanitizedTestDetails.testTime, ) ) ) @@ -375,7 +380,7 @@ class HemoCubeViewModel @Inject constructor( userData.reportUploadTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() ).format(Calendar.getInstance().time) - when (repository.addTestToDatabasefornew(userData)) { + when (repository.addTestToDatabase(userData)) { is Response.Success -> { fireBaseBulkUpload.postValue("Success") updateLocalFlag(userData._id) @@ -388,6 +393,19 @@ class HemoCubeViewModel @Inject constructor( } } + fun sanitizeDoubleValues(hemoCubeTestData: HemoCubeTestData): HemoCubeTestData { + hemoCubeTestData::class.java.declaredFields.forEach { field -> + if (field.type == Double::class.javaObjectType || field.type == Double::class.javaPrimitiveType) { + field.isAccessible = true + val value = field.get(hemoCubeTestData) as Double? + if (value != null && (value.isInfinite() || value.isNaN())) { + field.set(hemoCubeTestData, 0.0) // Replace with a suitable default value + } + } + } + return hemoCubeTestData + } + private fun updateLocalFlag(userId: String) = viewModelScope.launch { hemoCubeDao.updateFieldById(id = userId, true) } diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml index f6fa670..6e9c380 100644 --- a/app/src/main/res/xml/file_paths.xml +++ b/app/src/main/res/xml/file_paths.xml @@ -1,3 +1,3 @@ - + diff --git a/build.gradle b/build.gradle index 21a7b54..1ddaee5 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,9 @@ buildscript { kotlin_version = '1.8.21' } dependencies { - classpath 'com.android.tools.build:gradle:8.3.0' - classpath 'com.google.gms:google-services:4.4.0' - classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.1' + classpath 'com.android.tools.build:gradle:8.2.2' + classpath 'com.google.gms:google-services:4.4.1' + classpath 'com.google.firebase:firebase-appdistribution-gradle:4.1.0' } repositories { mavenCentral() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 269daf3..4a90405 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Tue Feb 27 16:09:58 IST 2024 +#Mon Mar 04 17:08:24 IST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip