diff --git a/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt b/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt index 39ccd8c..cdc1f38 100644 --- a/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt +++ b/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt @@ -1,8 +1,11 @@ package com.example.hpostesting.data.datasource +import android.os.Environment +import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.opencsv.CSVWriter import java.io.File import java.io.FileWriter +import java.io.IOException class LocalFileDataSource { @@ -20,4 +23,107 @@ class LocalFileDataSource { writer.close() } + + fun exportDataToCSV( + fileName: String, dataList: List + ): Boolean { + try { + val formattedFileName = fileName.replace(Regex("[^a-zA-Z0-9.-]"), "_") // Replace special characters with underscores + val filePath = File(getExternalStorageDirectory(), formattedFileName) + val writer = FileWriter(filePath) + val csvWriter = CSVWriter(writer) + // Write CSV header + val header = arrayOf( + "_id", + "name", + "incubationTime", + "bloodGroup", + "birthYear", // Include other fields from the data class + "state", + "abhaId", + "userImageURL", + "location", + "reportUploadTime", + "testType", + "testTime", + "testStatus", + "gender", + "localFlag", // Add more fields as necessary + "deviceId", + "appVersion", + "deviceSerialNumber", + "deviceType", + "kitSerial", + "resultData", + "led1Buffer", + "led2Buffer", + "led1Sample", + "led2Sample", + "led1Average", + "led2Average", + "deviceRatio", + "calculatedRatio", + "coefficients", + "classificationResult", + "errorMessages", + "batteryLevel" + ) + csvWriter.writeNext(header) + + // Write data rows + for (data in dataList) { + val row = arrayOf( + data._id, + data.name, + data.incubationTime, + data.bloodGroup, + data.birthYear, // Include other fields similarly + data.state, + data.abhaId, + data.userImageURL, + data.location?.toString(), + data.reportUploadTime ?: "", + data.testType ?: "", + data.testTime ?: "", + data.testStatus?.toString() ?: "", + data.gender, + data.localFlag.toString(), + data.deviceId ?: "", + data.appVersion ?: "", + data.deviceSerialNumber, + data.deviceType, + data.kitSerial, + data.resultData, + data.led1Buffer?.toString() ?: "", + data.led2Buffer?.toString() ?: "", + data.led1Sample?.toString() ?: "", + data.led2Sample?.toString() ?: "", + data.led1Average?.toString() ?: "", + data.led2Average?.toString() ?: "", + data.deviceRatio?.toString() ?: "", + data.calculatedRatio?.toString() ?: "", + data.coefficients ?: "", + data.classificationResult + ) + csvWriter.writeNext(row) + } + writer.close() + return true + } catch (e: IOException) { + e.printStackTrace() + return false + } + } + + private fun getExternalStorageDirectory(): File { + val folder = File(Environment.getExternalStorageDirectory(), "HposFolder") + + if (!folder.exists()) { + folder.mkdirs() + } + + return folder + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/data/repository/LocalFileRepository.kt b/app/src/main/java/com/example/hpostesting/data/repository/LocalFileRepository.kt index 054d84f..2a8553f 100644 --- a/app/src/main/java/com/example/hpostesting/data/repository/LocalFileRepository.kt +++ b/app/src/main/java/com/example/hpostesting/data/repository/LocalFileRepository.kt @@ -16,104 +16,5 @@ class LocalFileRepository(private val localFileDataSource: LocalFileDataSource) localFileDataSource.saveTextToDisk(filepath, contents) - fun exportDataToCSV( - fileName: String, dataList: List - ): Boolean { - try { - val formattedFileName = fileName.replace(Regex("[^a-zA-Z0-9.-]"), "_") // Replace special characters with underscores - val filePath = File(getExternalStorageDirectory(), formattedFileName) - val writer = FileWriter(filePath) - val csvWriter = CSVWriter(writer) - // Write CSV header - val header = arrayOf( - "_id", - "name", - "incubationTime", - "bloodGroup", - "birthYear", // Include other fields from the data class - "state", - "abhaId", - "userImageURL", - "location", - "reportUploadTime", - "testType", - "testTime", - "testStatus", - "gender", - "localFlag", // Add more fields as necessary - "deviceId", - "appVersion", - "deviceSerialNumber", - "deviceType", - "kitSerial", - "resultData", - "led1Buffer", - "led2Buffer", - "led1Sample", - "led2Sample", - "led1Average", - "led2Average", - "deviceRatio", - "calculatedRatio", - "coefficients", - "classificationResult", - "errorMessages", - "batteryLevel" - ) - csvWriter.writeNext(header) - // Write data rows - for (data in dataList) { - val row = arrayOf( - data._id, - data.name, - data.incubationTime, - data.bloodGroup, - data.birthYear, // Include other fields similarly - data.state, - data.abhaId, - data.userImageURL, - data.location?.toString(), - data.reportUploadTime ?: "", - data.testType ?: "", - data.testTime ?: "", - data.testStatus?.toString() ?: "", - data.gender, - data.localFlag.toString(), - data.deviceId ?: "", - data.appVersion ?: "", - data.deviceSerialNumber, - data.deviceType, - data.kitSerial, - data.resultData, - data.led1Buffer?.toString() ?: "", - data.led2Buffer?.toString() ?: "", - data.led1Sample?.toString() ?: "", - data.led2Sample?.toString() ?: "", - data.led1Average?.toString() ?: "", - data.led2Average?.toString() ?: "", - data.deviceRatio?.toString() ?: "", - data.calculatedRatio?.toString() ?: "", - data.coefficients ?: "", - data.classificationResult - ) - csvWriter.writeNext(row) - } - writer.close() - return true - } catch (e: IOException) { - e.printStackTrace() - return false - } - } - - private fun getExternalStorageDirectory(): File { - val folder = File(Environment.getExternalStorageDirectory(), "HposFolder") - - if (!folder.exists()) { - folder.mkdirs() - } - - return folder - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt b/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt index e0252b6..acbcc3f 100644 --- a/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt +++ b/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt @@ -9,6 +9,7 @@ import com.example.hpostesting.data.dao.UserDao import com.example.hpostesting.data.datasource.LocalFileDataSource import com.example.hpostesting.data.repository.DatabaseRepository import com.example.hpostesting.data.repository.LocalFileRepository +import com.example.hpostesting.data.repository.Repository import com.example.hpostesting.domain.SaveRawData import com.example.hpostesting.domain.SaveRawDataTest import dagger.Module @@ -27,9 +28,7 @@ object AppModule { fun provideMyDatabase(@ApplicationContext context: Context): MyDatabase { return Room.databaseBuilder( context, MyDatabase::class.java, "my_database" - ) - .fallbackToDestructiveMigration() - .build() + ).fallbackToDestructiveMigration().build() } @Provides @@ -69,4 +68,16 @@ object AppModule { fun provideDatabaseRepository(): DatabaseRepository { return DatabaseRepository() } + + @Provides + @Singleton + fun provideRepository(): Repository { + return DatabaseRepository() + } + + @Provides + @Singleton + fun provideLocalFileDataSource(): LocalFileDataSource { + return LocalFileDataSource() + } } \ No newline at end of file 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 3c99e63..939e357 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 @@ -32,7 +32,7 @@ import javax.inject.Inject class HemoCubeViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, private val repository: DatabaseRepository, - private val localFileDataSource: LocalFileRepository, + private val localFileDataSource: LocalFileDataSource, context: Context, ) : ViewModel() { var isServiceConnected = false