xenoterracide
03/14/2019, 7:05 PMCasey Brooks
03/14/2019, 7:10 PMCasey Brooks
03/14/2019, 7:11 PMxenoterracide
03/14/2019, 7:20 PMxenoterracide
03/14/2019, 7:20 PMxenoterracide
03/14/2019, 8:43 PMdiesieben07
03/14/2019, 8:48 PMby lazy {
UUID.randomUUID().toString()
}
diesieben07
03/14/2019, 8:48 PMvar
xenoterracide
03/14/2019, 8:50 PMdiesieben07
03/14/2019, 8:51 PMlateinit
, but instead of throwing return a default value?diesieben07
03/14/2019, 8:51 PMlateinit
, as in, do you need the "public field from a Java perspective" that lateinit
provides?xenoterracide
03/14/2019, 8:54 PMxenoterracide
03/14/2019, 8:55 PMdiesieben07
03/14/2019, 8:56 PMdiesieben07
03/14/2019, 8:59 PMopen class Builder {
private var thing0: String? = null
var thing: String
get() = thing0 ?: defaultValue()?.also { thing0 = it }
set(value) {
thing0 = value
}
open fun defaultValue(): String = throw new IllegalStateException()
}
class TestBuilder : Builder() {
fun defaultValue(): String = "hello"
}
xenoterracide
03/14/2019, 9:00 PMxenoterracide
03/14/2019, 9:17 PMopen class Builder : Supplier<Foley> {
protected open lateinit var rfid: String
protected open lateinit var mrn: String
protected open lateinit var site: String
protected open var weight: Double? = null
protected open lateinit var dateFirstUse: LocalDateTime
protected open lateinit var dateExpiration: LocalDateTime
protected open lateinit var clinicalStudy: String
protected open lateinit var lotNumber: String
protected open lateinit var foleyType: String
protected open lateinit var timeZone: String
fun rfid(rfid: String) = apply {
this.rfid = rfid
}
fun mrn(mrn: String) = apply {
this.mrn = mrn
}
fun site(site: String) = apply {
<http://this.site|this.site> = site
}
override fun get(): Foley {
return Foley(
rfid = rfid,
mrn = mrn,
site = site,
weight = weight!!,
dateFirstUse = dateFirstUse,
dateExpiration = dateExpiration,
clinicalStudy = clinicalStudy,
lotNumber = lotNumber,
foleyType = foleyType,
timeZone = timeZone
)
}
class TestBuilder : Builder() {
override var rfid: String = UUID.randomUUID().toString()
override var mrn: String = UUID.randomUUID().toString()
override var site: String = UUID.randomUUID().toString()
override var weight: Double? = 123.0
override var dateFirstUse: LocalDateTime = LocalDateTime.now()
override var dateExpiration: LocalDateTime = LocalDateTime.now().plusDays(1)
override var clinicalStudy: String = UUID.randomUUID().toString()
override var lotNumber: String = "n/a"
override var foleyType: String = "n/a"
override var timeZone: String = "PST"
}
}
seems to work well enough, now just to add the rest of the setters/behavior