WORKING COMMIT

This commit is contained in:
vsuryakumar
2023-06-08 19:27:34 +05:30
parent 7d744819f8
commit 69df710006
32 changed files with 7846 additions and 147 deletions

View File

@@ -1,9 +1,14 @@
package com.example.hpos
import android.app.Application
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
class MyApplication : Application() {
val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
// private val sampleDetails = PatientDetails("Change it later");
// fun getSampleDetails() : PatientDetails = sampleDetails
// fun setSampleDetails(sample: SampleDetails) {sampleDetails = sample}

View File

@@ -1,4 +1,47 @@
package com.example.hpos.data
import android.util.Log
import com.example.hpos.data.model.Response
import com.example.hpos.data.repository.DatabaseRepository
import com.example.hpos.util.MyUtils
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import java.lang.Thread.sleep
class FileUploader {
private val TAG = "FileUploader"
val repository = DatabaseRepository()
suspend fun start() {
val listOfFiles = repository.getAllFromPendingQueue()
for (each in listOfFiles){
// Checking internet connectivity & mobile as same or not
if (MyUtils.isInternetConnected() && each.mobileId == DataHolder.mobileUniqueId) {
Log.d(TAG, "uploading file ${each.pendingId}")
GlobalScope.launch {
val response = repository.uploadFileToStorage(each.patientId, each.filePath)
when (response) {
is Response.Success -> {
Log.d(TAG, "File Uploaded ${each.pendingId}")
repository.removeFromPendingQueue(each.pendingId)
}
is Response.Error -> {
Log.d(TAG, response.exception.toString())
}
}
}.join()
} else {
return
}
}
return
}
}

View File

@@ -1,11 +1,15 @@
package com.example.hpos.data.model
import java.util.Calendar
import java.util.Date
data class PendingUploads(
// Filename
val pendingId: String,
val mobileId: String,
val patientId: String,
val filePath: String,
val timeAdded: Date
)
) {
constructor(): this("", "", "", "", Calendar.getInstance().time)
}

View File

@@ -83,11 +83,11 @@ class DatabaseRepository : Repository {
}
}
suspend fun uploadFileToStorage(id: String, filePath: String): Response<Boolean> {
suspend fun uploadFileToStorage(patientID: String, filePath: String): Response<Boolean> {
try {
val file = Uri.fromFile(File(filePath))
val riversRef = storage.reference.child("$id/${file.lastPathSegment}")
val riversRef = storage.reference.child("$patientID/${file.lastPathSegment}")
riversRef.putFile(file).await()
return Response.Success(true)
@@ -111,10 +111,29 @@ class DatabaseRepository : Repository {
}
}
suspend fun removeFromPendingQueue(pendingId: String): Response<Boolean> {
suspend fun getAllFromPendingQueue(): List<PendingUploads> {
val pendingList = mutableListOf<PendingUploads>()
return try {
val querySnapshot = db.collection("pendingUploads").orderBy("timeAdded").get().await()
for (doc in querySnapshot.documents){
val pendingFile = doc.toObject(PendingUploads::class.java)
pendingFile?.let {
pendingList.add(it)
}
}
pendingList
} catch (e: Exception) {
e.printStackTrace()
pendingList
}
}
suspend fun removeFromPendingQueue(fileName: String): Response<Boolean> {
return try {
db.collection("pendingUploads")
.document(pendingId)
.document(fileName)
.delete()
.await()

View File

@@ -5,6 +5,7 @@ import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.hpos.R
import com.example.hpos.data.DataHolder
import com.example.hpos.data.constant.Constants
import com.example.hpos.databinding.ActivityKitScanBinding
@@ -51,7 +52,8 @@ class KitScanActivity : AppCompatActivity() {
}
binding.btnGo.setOnClickListener {
if (binding.nameEditText.text.toString().trim().isNotEmpty() && checkDataNotNull()) {
val serialNumber = binding.nameEditText.text.toString().trim()
if (serialNumber.isNotEmpty() && checkDataNotNull() && isSerialValid(serialNumber)) {
DataHolder.selectedTest!!.kitSerial = binding.nameEditText.text.toString()
moveToNext()
} else {
@@ -60,6 +62,14 @@ class KitScanActivity : AppCompatActivity() {
}
}
private fun isSerialValid(s: String): Boolean {
if (s.length != 17){
binding.nameEditText.error = getString(R.string.invalid_kit)
return false
}
return true
}
private fun moveToNext() {
val i = Intent(applicationContext, TestRightActivity::class.java)
startActivity(i)

View File

@@ -121,7 +121,7 @@ class MainActivity : AppCompatActivity() {
menuInflater.inflate(R.menu.my_menu, menu)
myMenu = menu
// Todo: Uncomment this
// checkAndUpdateUsbConnection()
checkAndUpdateUsbConnection()
return true
}

View File

@@ -1,9 +1,11 @@
package com.example.hpos.presentation
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.RadioButton
import android.widget.RadioGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.hpos.R
@@ -36,12 +38,14 @@ class RVAdapter : RecyclerView.Adapter<RVAdapter.ViewHolder>() {
val tvName: TextView
val tvStatus: TextView
val radioButton: RadioButton
val radioGroup: RadioGroup
init {
tvId = view.findViewById(R.id.tv_id)
tvName = view.findViewById(R.id.tv_name)
tvStatus = view.findViewById(R.id.tv_status)
radioButton = view.findViewById(R.id.radioButton)
radioGroup = view.findViewById(R.id.radio_group)
}
}
@@ -53,21 +57,24 @@ class RVAdapter : RecyclerView.Adapter<RVAdapter.ViewHolder>() {
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
Log.d("RVAdapter", "onBindViewHolder called() : pos = ${position}")
val idString = "ID: " + dataset[position].patientID
holder.tvId.text = idString
holder.tvName.text = dataset[position].patientName
holder.tvStatus.text = dataset[position].testStatus.toString()
holder.radioGroup.clearCheck()
if (dataset[position].testStatus == Status.PENDING) {
holder.radioButton.isChecked = (position
== selectedPosition)
holder.radioButton.isChecked = (position == selectedPosition)
} else {
holder.radioButton.isEnabled = false
}
holder.radioButton.setOnCheckedChangeListener { compoundButton, b ->
Log.d("RVAdapter", "setOnCheckedChangeListener called() : pos = ${position}")
// check condition
if (b) {
Log.d("RVAdapter", "setOnCheckedChangeListener called() -> b true : pos = ${position}")
// When checked update selected position
selectedPosition = holder.adapterPosition
itemClickListener!!.onClick(position)

View File

@@ -0,0 +1,94 @@
package com.example.hpos.presentation
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.RadioButton
import android.widget.RadioGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.hpos.R
import com.example.hpos.data.model.test.Status
import com.example.hpos.data.model.test.TestDetails
import com.example.hpos.presentation.dashboard.ItemClickListener
class RecyclerViewAdapter : RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {
private val dataset = ArrayList<TestDetails>()
var itemClickListener: ItemClickListener? = null
var selectedPosition = -1
var prev = -1
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val tvId: TextView = view.findViewById(R.id.tv_id)
val tvName: TextView = view.findViewById(R.id.tv_name)
val tvStatus: TextView = view.findViewById(R.id.tv_status)
val radioButton: RadioButton = view.findViewById(R.id.radioButton)
val radioGroup: RadioGroup = view.findViewById(R.id.radio_group)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.table_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
Log.d("RVAdapter", "onBindViewHolder called() : pos = ${position}")
val idString = "ID: " + dataset[position].patientID
holder.tvId.text = idString
holder.tvName.text = dataset[position].patientName
holder.tvStatus.text = dataset[position].testStatus.toString()
Log.d("RVAdapter", "For ${dataset[position].patientName}, selected = $selectedPosition")
holder.radioGroup.clearCheck()
if (dataset[position].testStatus == Status.PENDING) {
holder.radioButton.isEnabled = true
holder.radioButton.isChecked = (position == selectedPosition)
Log.d("RVAdapter", "inside pending if")
} else {
holder.radioButton.isChecked = false
holder.radioButton.isEnabled = false
Log.d("RVAdapter", "inside pending else")
}
holder.radioButton.setOnClickListener {
setSelectedItem(position)
}
holder.itemView.setOnClickListener {
setSelectedItem(position)
}
}
private fun setSelectedItem(position: Int) {
Log.d("RVAdapter", "setOnCheckedChangeListener called() -> b true : pos = $position")
if (position != selectedPosition && dataset[position].testStatus == Status.PENDING) {
prev = selectedPosition
selectedPosition = position
itemClickListener!!.onClick(position)
if (prev != -1) {
notifyItemChanged(prev)
}
notifyItemChanged(position)
}
}
override fun getItemCount(): Int {
return dataset.size
}
fun updateDataSet(newDataSet: ArrayList<TestDetails>) {
dataset.clear()
dataset.addAll(newDataSet)
notifyDataSetChanged()
}
}

View File

@@ -13,13 +13,17 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.example.hpos.MyApplication
import com.example.hpos.data.DataHolder
import com.example.hpos.data.FileUploader
import com.example.hpos.databinding.ActivitySplashBinding
import com.example.hpos.presentation.dashboard.DashboardActivity
import com.example.hpos.util.MyUtils
import com.google.firebase.firestore.FirebaseFirestoreSettings
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
/**
@@ -41,7 +45,6 @@ class SplashActivity : AppCompatActivity() {
setContentView(binding.root)
setupFirestoreCache()
setupStaticConstants()
checkForStoragePermissions()
checkForLocationPermission()
@@ -52,6 +55,22 @@ class SplashActivity : AppCompatActivity() {
// Log.d("surya_permission", "passed first")
checkAllPermissionsGiven()
setupStaticConstants()
startWorker()
// GlobalScope.launch(Dispatchers.IO) {
// FileUploader().uploadFiles(listOf())
// }
}
private fun startWorker() {
if (MyUtils.isInternetConnected()) {
(applicationContext as MyApplication).applicationScope.launch(Dispatchers.IO) {
FileUploader().start()
}
}
}
private fun setupStaticConstants() {

View File

@@ -59,4 +59,5 @@ class DashboardActivity : AppCompatActivity() {
val navController = findNavController(R.id.nav_host_fragment_content_dashboard)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
}

View File

@@ -10,11 +10,13 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE
import com.example.hpos.R
import com.example.hpos.data.DataHolder
import com.example.hpos.data.model.patient.PatientDetails
import com.example.hpos.databinding.FragmentHomeBinding
import com.example.hpos.presentation.RVAdapter
import com.example.hpos.presentation.RecyclerViewAdapter
class HomeFragment : Fragment() {
@@ -24,7 +26,8 @@ class HomeFragment : Fragment() {
private val viewModel: DashboardViewModel by activityViewModels()
// private val viewModel: DashboardViewModel by activityViewModels{ MyViewModelFactory() }
private lateinit var rvAdapter: RVAdapter
// private lateinit var rvAdapter: RVAdapter
private lateinit var rvAdapter: RecyclerViewAdapter
override fun onCreateView(
inflater: LayoutInflater,
@@ -33,13 +36,12 @@ class HomeFragment : Fragment() {
): View {
try {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
// DataHolder.selectedTest = TestDetails()
rvAdapter = RVAdapter()
DataHolder.selectedTest = null
rvAdapter = RecyclerViewAdapter()
val itemClickListener = object : ItemClickListener {
override fun onClick(pos: Int) {
// binding.recyclerView.post(Runnable { rvAdapter.notifyDataSetChanged() })
rvAdapter.notifyDataSetChanged()
Log.d(TAG, "onclick called in ItemClickListener")
DataHolder.selectedTest = viewModel.allTestDetails.value?.get(pos)
}
}
@@ -70,10 +72,15 @@ class HomeFragment : Fragment() {
findNavController().navigate(R.id.action_nav_home_to_registerOneScanAbhaFragment)
}
binding.btnTest.setOnClickListener {
if (DataHolder.selectedTest != null)
if (DataHolder.selectedTest != null) {
findNavController().navigate(R.id.action_nav_home_to_mainActivity)
else
Toast.makeText(requireContext(), "Select One Record to start testing", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(
requireContext(),
"Select One Record to start testing",
Toast.LENGTH_SHORT
).show()
}
}
}

View File

@@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import com.example.hpos.R
@@ -46,7 +47,6 @@ class RegisterOneScanAbhaFragment : Fragment() {
savedInstanceState: Bundle?
): View {
binding = FragmentRegisterOneScanAbhaBinding.inflate(inflater, container, false)
return binding.root
}

View File

@@ -145,7 +145,9 @@ class RegisterThreeEnterPatientDetails : Fragment() {
if (binding.etYob.text.isNullOrEmpty()) {
binding.etYob.error = getString(R.string.yob_error)
return null
} else if (binding.etYob.text.toString().toInt() <= 1900 || binding.etYob.text.toString().toInt() > 2023) {
} else if (binding.etYob.text.toString().toInt() <= 1900 || binding.etYob.text.toString()
.toInt() > 2023
) {
binding.etYob.error = getString(R.string.yob_error_2)
return null
} else {
@@ -162,7 +164,10 @@ class RegisterThreeEnterPatientDetails : Fragment() {
if (binding.etMobile.text.isNullOrEmpty()) {
binding.etMobile.error = getString(R.string.mobile_error)
return null
} else {
} else if (binding.etMobile.text.toString().length != 10) {
binding.etMobile.error = getString(R.string.mobile_error)
return null
}else {
viewModel.patientDetails.mobile = binding.etMobile.text.toString()
}

File diff suppressed because it is too large Load Diff

View File

@@ -25,6 +25,7 @@ import com.example.hpos.data.constant.Constants
import com.example.hpos.databinding.ActivityTestRightBinding
import com.example.hpos.util.MyViewModelFactory
import com.hoho.android.usbserial.driver.UsbSerialDriver
import com.hoho.android.usbserial.driver.UsbSerialProber
class TestRightActivity : AppCompatActivity() {
@@ -64,7 +65,7 @@ class TestRightActivity : AppCompatActivity() {
viewModel.isServiceConnected = true
// Todo: Uncomment this
// mConnection.let { mService.connect(mDriver, mConnection!!) }
mConnection.let { mService.connect(mDriver, mConnection!!) }
moveToNext()
}
@@ -111,38 +112,38 @@ class TestRightActivity : AppCompatActivity() {
// }
// Todo: Comment this
private fun connectUsb(permissionGranted: Boolean) {
setupService()
}
// private fun connectUsb(permissionGranted: Boolean) {
// setupService()
// }
// Todo: Uncomment this
// private fun connectUsb(permissionGranted: Boolean) {
// Log.d(TAG, "connectUsb() called, permission variable = $permissionGranted")
// val manager = getSystemService(Context.USB_SERVICE) as UsbManager
// val availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager)
//
// if (availableDrivers.isEmpty()) {
// onErrorReported("No Device is Connected")
// } else {
// mDriver = availableDrivers[0]
//
// if (mDriver.device.productId != Constants.DEVICE_PRODUCT_ID || mDriver.device.vendorId != Constants.DEVICE_VENDOR_ID){
// Toast.makeText(this, "Device Connected is not supported", Toast.LENGTH_SHORT).show()
// onBackPressed()
// return
// }
//
// viewModel.testDetails?.deviceId = mDriver.device.serialNumber.toString()
// DataHolder.deviceSerialNumber = mDriver.device.serialNumber.toString()
// mConnection = manager.openDevice(mDriver.device)
//
// if (mConnection == null) {
// requestUserPermission(manager, mDriver.device)
// } else {
// setupService()
// }
// }
// }
private fun connectUsb(permissionGranted: Boolean) {
Log.d(TAG, "connectUsb() called, permission variable = $permissionGranted")
val manager = getSystemService(Context.USB_SERVICE) as UsbManager
val availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager)
if (availableDrivers.isEmpty()) {
onErrorReported("No Device is Connected")
} else {
mDriver = availableDrivers[0]
if (mDriver.device.productId != Constants.DEVICE_PRODUCT_ID || mDriver.device.vendorId != Constants.DEVICE_VENDOR_ID){
Toast.makeText(this, "Device Connected is not supported", Toast.LENGTH_SHORT).show()
onBackPressed()
return
}
viewModel.testDetails?.deviceId = mDriver.device.serialNumber.toString()
DataHolder.deviceSerialNumber = mDriver.device.serialNumber.toString()
mConnection = manager.openDevice(mDriver.device)
if (mConnection == null) {
requestUserPermission(manager, mDriver.device)
} else {
setupService()
}
}
}
/*
* Request user permission. The response will be received in the BroadcastReceiver

View File

@@ -65,8 +65,7 @@ class TestRightExpReference : Fragment() {
getString(R.string.yes),
object : MyDialogListener {
override fun onClickNegativeButton() {
// Todo: Only for testing
// viewModel.progressBar.postValue(true)
}
override fun onClickPositiveButton() {
startTakingReference()

View File

@@ -18,6 +18,7 @@ import com.example.hpos.data.model.test.TestType
import com.example.hpos.databinding.FragmentTestRightResultsBinding
import com.example.hpos.presentation.dashboard.DashboardActivity
import com.example.hpos.util.MyUtils
import com.example.hpos.util.MyUtils.calculateAgeFromYOB
import java.text.SimpleDateFormat
import java.util.Date
@@ -48,9 +49,9 @@ class TestRightResults : Fragment() {
viewModel.addFilesToQueue(requireContext())
// Uploading to cloud storage and deleting the from the pending queue when uploaded
// if (MyUtils.isInternetConnected()) {
// viewModel.addFilesToCloud(requireContext())
// }
if (MyUtils.isInternetConnected()) {
viewModel.addFilesToCloud(requireContext())
}
}
@@ -69,15 +70,11 @@ class TestRightResults : Fragment() {
private fun updateResults() {
binding.tvName.text = getString(R.string.name_in_textview, viewModel.testDetails?.patientName)
binding.tvAge.text =
getString(R.string.age_in_textview, viewModel.testDetails?.patientAge.toString())
// binding.tvGender.text =
// getString(R.string.gender_in_textview, viewModel.patientDetails.gender)
getString(R.string.age_in_textview, viewModel.testDetails?.patientAge?.calculateAgeFromYOB().toString())
binding.tvId.text = getString(R.string.patient_id_in_tv, viewModel.testDetails?.patientID)
//TODO: remove
// viewModel.patientDetails.results = TestRightResultType.NEGATIVEBORDERLINE
if (DataHolder.selectedTestType == TestType.SICKLECERT){
when (viewModel.testDetails?.result) {
TestRightResultType.NORMAL -> {

View File

@@ -7,10 +7,12 @@ import android.os.Binder
import android.os.IBinder
import android.util.Log
import com.example.hpos.data.DataHolder
import com.example.hpos.data.constant.Constants
import com.example.hpos.data.constant.TestRightCommands
import com.example.hpos.presentation.UsbServiceListener
import com.hoho.android.usbserial.driver.UsbSerialDriver
import com.hoho.android.usbserial.driver.UsbSerialPort
import com.hoho.android.usbserial.util.SerialInputOutputManager
import java.io.IOException
@@ -35,26 +37,26 @@ class UsbService : Service() {
var listener: UsbServiceListener? = null
fun connect(driver: UsbSerialDriver, connection: UsbDeviceConnection) {
// Todo: Uncomment this
// mPort = driver.ports[0] // Most devices have just one port (port 0)
// mPort.open(connection)
// mPort.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE)
mPort = driver.ports[0] // Most devices have just one port (port 0)
mPort.open(connection)
mPort.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE)
//
isUsbConnected = true
// Log.d(TAG, "My Usb Connected ${mPort.driver}")
//
// val usbIoManager = SerialInputOutputManager(mPort,
// object : SerialInputOutputManager.Listener{
// override fun onNewData(data: ByteArray?) {
//// Log.e(TAG, "onNewData() called inside eventDrivenWrite()")
// listener?.onUsbRead(data)
// }
// override fun onRunError(e: Exception?) {
// Log.e(TAG, "onRunError() called inside eventDrivenWrite()")
// listener?.onUsbError(e)
// }
//
// })
// usbIoManager.start();
Log.d(TAG, "My Usb Connected ${mPort.driver}")
val usbIoManager = SerialInputOutputManager(mPort,
object : SerialInputOutputManager.Listener{
override fun onNewData(data: ByteArray?) {
// Log.e(TAG, "onNewData() called inside eventDrivenWrite()")
listener?.onUsbRead(data)
}
override fun onRunError(e: Exception?) {
Log.e(TAG, "onRunError() called inside eventDrivenWrite()")
listener?.onUsbError(e)
}
})
usbIoManager.start();
}
fun disconnect() {
@@ -66,52 +68,52 @@ class UsbService : Service() {
}
// Todo: comment this
fun eventDrivenWrite(command: TestRightCommands, listener: UsbServiceListener) {
this.listener = listener
try {
when (command) {
TestRightCommands.autoset -> {
this.listener!!.onUsbRead("OK".toByteArray())
}
TestRightCommands.led2Set50 -> {
this.listener!!.onUsbRead("OK".toByteArray())
}
TestRightCommands.run -> {
this.listener!!.onUsbRead("OK [0]".toByteArray())
}
TestRightCommands.read -> {
this.listener!!.onUsbRead(InputData().inputRead.toByteArray())
}
TestRightCommands.printAll -> {
if (DataHolder.testExp) {
for (each in InputData().printForReference.lines()) {
this.listener!!.onUsbRead((each + "\n").toByteArray())
}
} else {
for (each in InputData().printForSample.lines()) {
this.listener!!.onUsbRead((each + "\n").toByteArray())
}
}
}
else -> {
this.listener!!.onUsbRead("OK".toByteArray())
}
}
} catch (e: IOException) {
listener.onUsbError(e)
}
}
// Todo: Uncomment this
// fun eventDrivenWrite(command: TestRightCommands, listener: UsbServiceListener) {
// this.listener = listener
// try {
// mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS)
// when (command) {
// TestRightCommands.autoset -> {
// this.listener!!.onUsbRead("OK".toByteArray())
// }
// TestRightCommands.led2Set50 -> {
// this.listener!!.onUsbRead("OK".toByteArray())
// }
// TestRightCommands.run -> {
// this.listener!!.onUsbRead("OK [0]".toByteArray())
// }
// TestRightCommands.read -> {
// this.listener!!.onUsbRead(InputData().inputRead.toByteArray())
// }
// TestRightCommands.printAll -> {
// if (DataHolder.testExp) {
// for (each in InputData().printForReference.lines()) {
// this.listener!!.onUsbRead((each + "\n").toByteArray())
// }
// } else {
// for (each in InputData().printForSample.lines()) {
// this.listener!!.onUsbRead((each + "\n").toByteArray())
// }
// }
// }
// else -> {
// this.listener!!.onUsbRead("OK".toByteArray())
// }
// }
// } catch (e: IOException) {
// listener.onUsbError(e)
// }
// }
// Todo: Uncomment this
fun eventDrivenWrite(command: TestRightCommands, listener: UsbServiceListener) {
this.listener = listener
try {
mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS)
} catch (e: IOException) {
listener.onUsbError(e)
}
}
// fun write(command: TestRightCommands){
// mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS)
// }

View File

@@ -0,0 +1,11 @@
package com.example.hpos
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
fun main(){
val dateFormat = SimpleDateFormat("MM:HHddMMyyyy", Locale.getDefault())
val currentDate = Date()
print(dateFormat.format(currentDate))
}

View File

@@ -79,7 +79,7 @@ object MyUtils {
}
fun Int.calculateAgeFromYOB(): Int {
val currentY = SimpleDateFormat("yyyy_HHmmss").format(Date()).toInt()
val currentY = SimpleDateFormat("yyyy").format(Date()).toInt()
return (currentY - this)
}