fixed issues related to save local data in csv file format
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
package com.example.hpostesting.data.datasource
|
package com.example.hpostesting.data.datasource
|
||||||
|
|
||||||
|
import android.os.Environment
|
||||||
|
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
||||||
import com.opencsv.CSVWriter
|
import com.opencsv.CSVWriter
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileWriter
|
import java.io.FileWriter
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
class LocalFileDataSource {
|
class LocalFileDataSource {
|
||||||
|
|
||||||
@@ -20,4 +23,107 @@ class LocalFileDataSource {
|
|||||||
writer.close()
|
writer.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun exportDataToCSV(
|
||||||
|
fileName: String, dataList: List<HemoCubeTestData>
|
||||||
|
): 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -16,104 +16,5 @@ class LocalFileRepository(private val localFileDataSource: LocalFileDataSource)
|
|||||||
localFileDataSource.saveTextToDisk(filepath, contents)
|
localFileDataSource.saveTextToDisk(filepath, contents)
|
||||||
|
|
||||||
|
|
||||||
fun exportDataToCSV(
|
|
||||||
fileName: String, dataList: List<HemoCubeTestData>
|
|
||||||
): 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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.example.hpostesting.data.dao.UserDao
|
|||||||
import com.example.hpostesting.data.datasource.LocalFileDataSource
|
import com.example.hpostesting.data.datasource.LocalFileDataSource
|
||||||
import com.example.hpostesting.data.repository.DatabaseRepository
|
import com.example.hpostesting.data.repository.DatabaseRepository
|
||||||
import com.example.hpostesting.data.repository.LocalFileRepository
|
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.SaveRawData
|
||||||
import com.example.hpostesting.domain.SaveRawDataTest
|
import com.example.hpostesting.domain.SaveRawDataTest
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
@@ -27,9 +28,7 @@ object AppModule {
|
|||||||
fun provideMyDatabase(@ApplicationContext context: Context): MyDatabase {
|
fun provideMyDatabase(@ApplicationContext context: Context): MyDatabase {
|
||||||
return Room.databaseBuilder(
|
return Room.databaseBuilder(
|
||||||
context, MyDatabase::class.java, "my_database"
|
context, MyDatabase::class.java, "my_database"
|
||||||
)
|
).fallbackToDestructiveMigration().build()
|
||||||
.fallbackToDestructiveMigration()
|
|
||||||
.build()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@@ -69,4 +68,16 @@ object AppModule {
|
|||||||
fun provideDatabaseRepository(): DatabaseRepository {
|
fun provideDatabaseRepository(): DatabaseRepository {
|
||||||
return DatabaseRepository()
|
return DatabaseRepository()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideRepository(): Repository {
|
||||||
|
return DatabaseRepository()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideLocalFileDataSource(): LocalFileDataSource {
|
||||||
|
return LocalFileDataSource()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ import javax.inject.Inject
|
|||||||
class HemoCubeViewModel @Inject constructor(
|
class HemoCubeViewModel @Inject constructor(
|
||||||
private val hemoCubeDao: HemoCubeDao,
|
private val hemoCubeDao: HemoCubeDao,
|
||||||
private val repository: DatabaseRepository,
|
private val repository: DatabaseRepository,
|
||||||
private val localFileDataSource: LocalFileRepository,
|
private val localFileDataSource: LocalFileDataSource,
|
||||||
context: Context,
|
context: Context,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
var isServiceConnected = false
|
var isServiceConnected = false
|
||||||
|
|||||||
Reference in New Issue
Block a user