diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt index 0d9959f35d..15bb96ffa4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.kt @@ -6,7 +6,6 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.interfaces.APS import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.BgSource -import info.nightscout.androidaps.interfaces.ProfileSource import info.nightscout.androidaps.interfaces.Pump import info.nightscout.androidaps.interfaces.PumpSync import info.nightscout.androidaps.interfaces.Sensitivity @@ -21,6 +20,7 @@ import info.nightscout.interfaces.insulin.Insulin import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginDescription import info.nightscout.interfaces.plugin.PluginType +import info.nightscout.interfaces.profile.ProfileSource import info.nightscout.interfaces.sync.NsClient import info.nightscout.rx.bus.RxBus import info.nightscout.rx.events.EventAppInitialized diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginStore.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginStore.kt index 54799844d5..eb0b3330f7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginStore.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginStore.kt @@ -4,7 +4,6 @@ import info.nightscout.androidaps.interfaces.APS import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.BgSource import info.nightscout.androidaps.interfaces.IobCobCalculator -import info.nightscout.androidaps.interfaces.ProfileSource import info.nightscout.androidaps.interfaces.Pump import info.nightscout.androidaps.interfaces.Sensitivity import info.nightscout.interfaces.Config @@ -13,6 +12,7 @@ import info.nightscout.interfaces.constraints.Safety import info.nightscout.interfaces.insulin.Insulin import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginType +import info.nightscout.interfaces.profile.ProfileSource import info.nightscout.interfaces.sync.NsClient import info.nightscout.interfaces.sync.Sync import info.nightscout.rx.logging.AAPSLogger diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImpl.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImpl.kt index 67790fcef0..149e56f8c1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImpl.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImpl.kt @@ -1,22 +1,22 @@ package info.nightscout.androidaps.plugins.configBuilder import info.nightscout.androidaps.data.ProfileSealed -import info.nightscout.database.impl.AppRepository -import info.nightscout.database.impl.ValueWrapper -import info.nightscout.database.impl.transactions.InsertOrUpdateProfileSwitch import info.nightscout.androidaps.events.EventEffectiveProfileSwitchChanged import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.HardLimits import info.nightscout.androidaps.utils.extensions.fromConstant import info.nightscout.core.fabric.FabricPrivacy import info.nightscout.core.main.R import info.nightscout.database.entities.ProfileSwitch +import info.nightscout.database.impl.AppRepository +import info.nightscout.database.impl.ValueWrapper +import info.nightscout.database.impl.transactions.InsertOrUpdateProfileSwitch import info.nightscout.interfaces.Config import info.nightscout.interfaces.Constants import info.nightscout.interfaces.GlucoseUnit +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.plugins.sync.nsclient.data.ProcessedDeviceStatusData import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.bus.RxBus diff --git a/app/src/main/java/info/nightscout/androidaps/utils/wizard/QuickWizardEntry.kt b/app/src/main/java/info/nightscout/androidaps/utils/wizard/QuickWizardEntry.kt index 3ea31569ea..5e7a90f72c 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/wizard/QuickWizardEntry.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/wizard/QuickWizardEntry.kt @@ -2,6 +2,7 @@ package info.nightscout.androidaps.utils.wizard import dagger.android.HasAndroidInjector import info.nightscout.androidaps.R +import info.nightscout.androidaps.annotations.OpenForTesting import info.nightscout.androidaps.extensions.valueToUnits import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.Loop @@ -34,6 +35,14 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec @Inject lateinit var dateUtil: DateUtil @Inject lateinit var glucoseStatusProvider: GlucoseStatusProvider + // for mock + @OpenForTesting + class Time { + fun secondsFromMidnight(): Int = Profile.secondsFromMidnight() + + } + var time = Time() + lateinit var storage: JSONObject var position: Int = -1 @@ -96,7 +105,7 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec return this } - fun isActive(): Boolean = profileFunction.secondsFromMidnight() >= validFrom() && profileFunction.secondsFromMidnight() <= validTo() && forDevice(DEVICE_PHONE) + fun isActive(): Boolean = time.secondsFromMidnight() >= validFrom() && time.secondsFromMidnight() <= validTo() && forDevice(DEVICE_PHONE) fun doCalc(profile: Profile, profileName: String, lastBG: GlucoseValue, _synchronized: Boolean): BolusWizard { val dbRecord = repository.getTemporaryTargetActiveAt(dateUtil.now()).blockingGet() diff --git a/app/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/app/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 6e2012ecd1..c02f09ecf8 100644 --- a/app/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/app/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -7,12 +7,13 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.EffectiveProfileSwitch import info.nightscout.database.entities.embedments.InsulinConfiguration import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -172,6 +173,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt b/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt index 08d00db6eb..00674a1841 100644 --- a/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt +++ b/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt @@ -6,9 +6,9 @@ import info.nightscout.androidaps.R import info.nightscout.androidaps.TestBase import info.nightscout.androidaps.interfaces.Loop import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.shared.sharedPreferences.SP import info.nightscout.androidaps.utils.wizard.QuickWizard import info.nightscout.androidaps.utils.wizard.QuickWizardEntry +import info.nightscout.shared.sharedPreferences.SP import org.json.JSONArray import org.junit.Assert import org.junit.Before @@ -28,13 +28,19 @@ class QuickWizardTest : TestBase() { "\"useBG\":0,\"useCOB\":0,\"useBolusIOB\":1,\"useBasalIOB\":2,\"useTrend\":0,\"useSuperBolus\":0,\"useTemptarget\":0}" private var array: JSONArray = JSONArray("[$data1,$data2]") - val injector = HasAndroidInjector { + class MockedTime : QuickWizardEntry.Time() { + override fun secondsFromMidnight() = 0 + } + private val mockedTime = MockedTime() + + private val injector = HasAndroidInjector { AndroidInjector { if (it is QuickWizardEntry) { it.aapsLogger = aapsLogger it.sp = sp it.profileFunction = profileFunction it.loop = loop + it.time = mockedTime } } } @@ -43,7 +49,7 @@ class QuickWizardTest : TestBase() { @Before fun mock() { - `when`(profileFunction.secondsFromMidnight()).thenReturn(0) + `when`(sp.getString(R.string.key_quickwizard, "[]")).thenReturn("[]") quickWizard = QuickWizard(sp, injector) } diff --git a/automation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/automation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 19b9e62b99..5f625e2741 100644 --- a/automation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/automation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -3,15 +3,16 @@ package info.nightscout.androidaps import dagger.android.AndroidInjector import dagger.android.HasAndroidInjector import info.nightscout.androidaps.data.ProfileSealed -import info.nightscout.database.impl.AppRepository import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject +import info.nightscout.database.impl.AppRepository import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -56,6 +57,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } \ No newline at end of file diff --git a/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt b/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt index 9b32804c91..1900ec73bd 100644 --- a/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt +++ b/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt @@ -9,7 +9,6 @@ import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.CommandQueue import info.nightscout.androidaps.interfaces.Loop import info.nightscout.androidaps.interfaces.Profile -import info.nightscout.androidaps.interfaces.ProfileSource import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.automation.triggers.Trigger import info.nightscout.database.entities.OfflineEvent @@ -18,6 +17,7 @@ import info.nightscout.interfaces.GlucoseUnit import info.nightscout.interfaces.constraints.Constraint import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginDescription +import info.nightscout.interfaces.profile.ProfileSource import info.nightscout.interfaces.smsCommunicator.SmsCommunicator import info.nightscout.rx.logging.AAPSLogger import info.nightscout.shared.interfaces.ResourceHelper diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/di/CoreDataClassesModule.kt b/core/core-main/src/main/java/info/nightscout/androidaps/di/CoreDataClassesModule.kt index ea01e8ee27..a913c09a03 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/di/CoreDataClassesModule.kt +++ b/core/core-main/src/main/java/info/nightscout/androidaps/di/CoreDataClassesModule.kt @@ -3,9 +3,9 @@ package info.nightscout.androidaps.di import dagger.Module import dagger.android.ContributesAndroidInjector import info.nightscout.androidaps.data.PumpEnactResultImpl -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.plugins.aps.loop.APSResult import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData +import info.nightscout.core.profile.ProfileStoreObject @Module @Suppress("unused") @@ -15,5 +15,5 @@ abstract class CoreDataClassesModule { @ContributesAndroidInjector abstract fun apsResultInjector(): APSResult @ContributesAndroidInjector abstract fun autosensDataInjector(): AutosensData - @ContributesAndroidInjector abstract fun profileStoreInjector(): ProfileStore + @ContributesAndroidInjector abstract fun profileStoreInjector(): ProfileStoreObject } diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ActivePlugin.kt b/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ActivePlugin.kt index ff457dfa41..ab17476e41 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ActivePlugin.kt +++ b/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ActivePlugin.kt @@ -5,6 +5,7 @@ import info.nightscout.interfaces.constraints.Safety import info.nightscout.interfaces.insulin.Insulin import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginType +import info.nightscout.interfaces.profile.ProfileSource import info.nightscout.interfaces.sync.NsClient import info.nightscout.interfaces.sync.Sync diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/Profile.kt b/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/Profile.kt index d8ee302e25..8435ac7026 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/Profile.kt +++ b/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/Profile.kt @@ -152,8 +152,7 @@ interface Profile { } fun milliSecFromMidnight(date: Long): Long { - val passed = DateTime(date).millisOfDay.toLong() - return passed + return DateTime(date).millisOfDay.toLong() } /* * Units conversion diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt b/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt index fe1109cf19..29d7dbef52 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt +++ b/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt @@ -2,6 +2,7 @@ package info.nightscout.androidaps.interfaces import info.nightscout.database.entities.ProfileSwitch import info.nightscout.interfaces.GlucoseUnit +import info.nightscout.interfaces.profile.ProfileStore interface ProfileFunction { @@ -89,11 +90,4 @@ interface ProfileFunction { * @return true if profile switch is created */ fun createProfileSwitch(durationInMinutes: Int, percentage: Int, timeShiftInHours: Int): Boolean - - /* - * Midnight time conversion - * (here as well for easy mock) - */ - fun secondsFromMidnight(): Int = Profile.secondsFromMidnight() - fun secondsFromMidnight(date: Long): Int = Profile.secondsFromMidnight(date) } \ No newline at end of file diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileStore.kt b/core/core-main/src/main/java/info/nightscout/core/profile/ProfileStoreObject.kt similarity index 81% rename from core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileStore.kt rename to core/core-main/src/main/java/info/nightscout/core/profile/ProfileStoreObject.kt index d5d940cf30..2c6b42118e 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileStore.kt +++ b/core/core-main/src/main/java/info/nightscout/core/profile/ProfileStoreObject.kt @@ -1,11 +1,13 @@ -package info.nightscout.androidaps.interfaces +package info.nightscout.core.profile import androidx.collection.ArrayMap import dagger.android.HasAndroidInjector import info.nightscout.androidaps.data.ProfileSealed +import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.utils.HardLimits import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.interfaces.profile.PureProfile import info.nightscout.interfaces.utils.JsonHelper import info.nightscout.rx.bus.RxBus @@ -16,7 +18,7 @@ import org.json.JSONException import org.json.JSONObject import javax.inject.Inject -class ProfileStore(val injector: HasAndroidInjector, val data: JSONObject, val dateUtil: DateUtil) { +class ProfileStoreObject(val injector: HasAndroidInjector, override val data: JSONObject, val dateUtil: DateUtil) : ProfileStore { @Inject lateinit var aapsLogger: AAPSLogger @Inject lateinit var activePlugin: ActivePlugin @@ -42,7 +44,7 @@ class ProfileStore(val injector: HasAndroidInjector, val data: JSONObject, val d return null } - fun getStartDate(): Long { + override fun getStartDate(): Long { val iso = JsonHelper.safeGetString(data, "startDate") ?: return 0 return try { dateUtil.fromISODateString(iso) @@ -51,15 +53,15 @@ class ProfileStore(val injector: HasAndroidInjector, val data: JSONObject, val d } } - fun getDefaultProfile(): PureProfile? = getDefaultProfileName()?.let { getSpecificProfile(it) } - fun getDefaultProfileJson(): JSONObject? = getDefaultProfileName()?.let { getSpecificProfileJson(it) } + override fun getDefaultProfile(): PureProfile? = getDefaultProfileName()?.let { getSpecificProfile(it) } + override fun getDefaultProfileJson(): JSONObject? = getDefaultProfileName()?.let { getSpecificProfileJson(it) } - fun getDefaultProfileName(): String? { + override fun getDefaultProfileName(): String? { val defaultProfileName = data.optString("defaultProfile") return if (defaultProfileName.isNotEmpty()) getStore()?.has(defaultProfileName)?.let { defaultProfileName } else null } - fun getProfileList(): ArrayList { + override fun getProfileList(): ArrayList { val ret = ArrayList() getStore()?.keys()?.let { keys -> while (keys.hasNext()) { @@ -71,7 +73,7 @@ class ProfileStore(val injector: HasAndroidInjector, val data: JSONObject, val d } @Synchronized - fun getSpecificProfile(profileName: String): PureProfile? { + override fun getSpecificProfile(profileName: String): PureProfile? { var profile: PureProfile? = null val units = JsonHelper.safeGetStringAllowNull(data, "units", storeUnits()) getStore()?.let { store -> @@ -96,7 +98,7 @@ class ProfileStore(val injector: HasAndroidInjector, val data: JSONObject, val d return null } - val allProfilesValid: Boolean + override val allProfilesValid: Boolean get() = getProfileList() .asSequence() .map { profileName -> getSpecificProfile(profileName.toString()) } diff --git a/core/core-main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/core/core-main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 30c77bf184..eef46d8a41 100644 --- a/core/core-main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/core/core-main/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -7,12 +7,13 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.HardLimits import info.nightscout.androidaps.utils.extensions.pureProfileFromJson +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.impl.AppRepository import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.sharedPreferences.SP @@ -41,7 +42,7 @@ open class TestBaseWithProfile : TestBase() { val profileInjector = HasAndroidInjector { AndroidInjector { - if (it is ProfileStore) { + if (it is ProfileStoreObject) { it.aapsLogger = aapsLogger it.activePlugin = activePluginProvider it.config = config @@ -77,7 +78,7 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } fun getInvalidProfileStore1(): ProfileStore { @@ -86,7 +87,7 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(invalidProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } fun getInvalidProfileStore2(): ProfileStore { @@ -96,6 +97,6 @@ open class TestBaseWithProfile : TestBase() { store.put("invalid", JSONObject(invalidProfileJSON)) json.put("defaultProfile", TESTPROFILENAME + "invalid") json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 6e2012ecd1..c02f09ecf8 100644 --- a/implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -7,12 +7,13 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.EffectiveProfileSwitch import info.nightscout.database.entities.embedments.InsulinConfiguration import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -172,6 +173,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileSource.kt b/interfaces/src/main/java/info/nightscout/interfaces/profile/ProfileSource.kt similarity index 91% rename from core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileSource.kt rename to interfaces/src/main/java/info/nightscout/interfaces/profile/ProfileSource.kt index cd7b621c7d..618db557c5 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/interfaces/ProfileSource.kt +++ b/interfaces/src/main/java/info/nightscout/interfaces/profile/ProfileSource.kt @@ -1,7 +1,6 @@ -package info.nightscout.androidaps.interfaces +package info.nightscout.interfaces.profile import info.nightscout.interfaces.Constants -import info.nightscout.interfaces.profile.PureProfile import org.json.JSONArray interface ProfileSource { diff --git a/interfaces/src/main/java/info/nightscout/interfaces/profile/ProfileStore.kt b/interfaces/src/main/java/info/nightscout/interfaces/profile/ProfileStore.kt new file mode 100644 index 0000000000..43174e6af6 --- /dev/null +++ b/interfaces/src/main/java/info/nightscout/interfaces/profile/ProfileStore.kt @@ -0,0 +1,15 @@ +package info.nightscout.interfaces.profile + +import org.json.JSONObject + +interface ProfileStore { + val data: JSONObject + + fun getStartDate(): Long + fun getDefaultProfile(): PureProfile? + fun getDefaultProfileJson(): JSONObject? + fun getDefaultProfileName(): String? + fun getProfileList(): ArrayList + fun getSpecificProfile(profileName: String): PureProfile? + val allProfilesValid: Boolean +} \ No newline at end of file diff --git a/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotuneFragment.kt b/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotuneFragment.kt index 6912e3eb9f..bad815109a 100644 --- a/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotuneFragment.kt +++ b/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotuneFragment.kt @@ -24,14 +24,15 @@ import info.nightscout.androidaps.dialogs.ProfileViewerDialog import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.UserEntry import info.nightscout.database.entities.ValueWithUnit import info.nightscout.interfaces.Constants import info.nightscout.interfaces.GlucoseUnit +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.interfaces.utils.MidnightTime import info.nightscout.interfaces.utils.Round import info.nightscout.plugins.R @@ -96,7 +97,7 @@ class AutotuneFragment : DaggerFragment() { if (autotunePlugin.lastNbDays.isEmpty()) autotunePlugin.lastNbDays = sp.getInt(R.string.key_autotune_default_tune_days, 5).toString() val defaultValue = sp.getInt(R.string.key_autotune_default_tune_days, 5).toDouble() - profileStore = activePlugin.activeProfileSource.profile ?: ProfileStore(injector, JSONObject(), dateUtil) + profileStore = activePlugin.activeProfileSource.profile ?: ProfileStoreObject(injector, JSONObject(), dateUtil) profileName = if (binding.profileList.text.toString() == rh.gs(R.string.active)) "" else binding.profileList.text.toString() profileFunction.getProfile()?.let { currentProfile -> profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector) @@ -297,7 +298,7 @@ class AutotuneFragment : DaggerFragment() { @Synchronized private fun updateGui() { _binding ?: return - profileStore = activePlugin.activeProfileSource.profile ?: ProfileStore(injector, JSONObject(), dateUtil) + profileStore = activePlugin.activeProfileSource.profile ?: ProfileStoreObject(injector, JSONObject(), dateUtil) profileName = if (binding.profileList.text.toString() == rh.gs(R.string.active)) "" else binding.profileList.text.toString() profileFunction.getProfile()?.let { currentProfile -> profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector) diff --git a/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotunePlugin.kt b/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotunePlugin.kt index 3f796a26af..ef577a1e64 100644 --- a/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotunePlugin.kt +++ b/plugins/src/main/java/info/nightscout/plugins/general/autotune/AutotunePlugin.kt @@ -6,9 +6,9 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.utils.extensions.pureProfileFromJson +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.UserEntry import info.nightscout.database.entities.ValueWithUnit import info.nightscout.interfaces.BuildHelper @@ -325,7 +325,7 @@ class AutotunePlugin @Inject constructor( fun updateProfile(newProfile: ATProfile?) { if (newProfile == null) return val circadian = sp.getBoolean(R.string.key_autotune_circadian_ic_isf, false) - val profileStore = activePlugin.activeProfileSource.profile ?: ProfileStore(injector, JSONObject(), dateUtil) + val profileStore = activePlugin.activeProfileSource.profile ?: ProfileStoreObject(injector, JSONObject(), dateUtil) val profileList: ArrayList = profileStore.getProfileList() var indexLocalProfile = -1 for (p in profileList.indices) diff --git a/plugins/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt b/plugins/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt index 2ab6cf945f..bd24b36cf0 100644 --- a/plugins/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt +++ b/plugins/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt @@ -6,13 +6,14 @@ import info.nightscout.androidaps.extensions.blockValueBySeconds import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.main.R +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.data.Block import info.nightscout.interfaces.Config import info.nightscout.interfaces.GlucoseUnit import info.nightscout.interfaces.insulin.Insulin +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.interfaces.profile.PureProfile import info.nightscout.interfaces.utils.Round import info.nightscout.rx.bus.RxBus @@ -177,7 +178,7 @@ class ATProfile(profile: Profile, var localInsulin: LocalInsulin, val injector: json.put("defaultProfile", profilename) json.put("store", store) json.put("startDate", dateUtil.toISOAsUTC(dateUtil.now())) - profileStore = ProfileStore(injector, json, dateUtil) + profileStore = ProfileStoreObject(injector, json, dateUtil) } catch (e: JSONException) { } return profileStore diff --git a/plugins/src/main/java/info/nightscout/plugins/profile/ProfilePlugin.kt b/plugins/src/main/java/info/nightscout/plugins/profile/ProfilePlugin.kt index c49635672c..1a2ad4d0a2 100644 --- a/plugins/src/main/java/info/nightscout/plugins/profile/ProfilePlugin.kt +++ b/plugins/src/main/java/info/nightscout/plugins/profile/ProfilePlugin.kt @@ -12,8 +12,6 @@ import info.nightscout.androidaps.extensions.blockFromJsonArray import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileSource -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.interfaces.XDripBroadcast import info.nightscout.androidaps.receivers.DataWorkerStorage import info.nightscout.androidaps.utils.DecimalFormatter @@ -21,6 +19,7 @@ import info.nightscout.androidaps.utils.HardLimits import info.nightscout.androidaps.utils.ToastUtils import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.extensions.pureProfileFromJson +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.interfaces.Config import info.nightscout.interfaces.Constants import info.nightscout.interfaces.GlucoseUnit @@ -28,6 +27,8 @@ import info.nightscout.interfaces.notifications.Notification import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginDescription import info.nightscout.interfaces.plugin.PluginType +import info.nightscout.interfaces.profile.ProfileSource +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.interfaces.profile.PureProfile import info.nightscout.interfaces.utils.JsonHelper import info.nightscout.plugins.R @@ -72,7 +73,7 @@ class ProfilePlugin @Inject constructor( aapsLogger, rh, injector ), ProfileSource { - private var rawProfile: ProfileStore? = null + private var rawProfile: ProfileStoreObject? = null private val defaultArray = "[{\"time\":\"00:00\",\"timeAsSeconds\":0,\"value\":0}]" @@ -388,7 +389,7 @@ class ProfilePlugin @Inject constructor( isEdited = false } - fun createProfileStore(): ProfileStore { + fun createProfileStore(): ProfileStoreObject { val json = JSONObject() val store = JSONObject() @@ -417,7 +418,7 @@ class ProfilePlugin @Inject constructor( aapsLogger.error("Unhandled exception", e) } - return ProfileStore(injector, json, dateUtil) + return ProfileStoreObject(injector, json, dateUtil) } override val profile: ProfileStore? @@ -453,7 +454,7 @@ class ProfilePlugin @Inject constructor( ?: return Result.failure(workDataOf("Error" to "missing input data")) xDripBroadcast.sendProfile(profileJson) if (sp.getBoolean(R.string.key_ns_receive_profile_store, true) || config.NSCLIENT) { - val store = ProfileStore(injector, profileJson, dateUtil) + val store = ProfileStoreObject(injector, profileJson, dateUtil) val createdAt = store.getStartDate() val lastLocalChange = sp.getLong(R.string.key_local_profile_last_change, 0) aapsLogger.debug(LTag.PROFILE, "Received profileStore: createdAt: $createdAt Local last modification: $lastLocalChange") diff --git a/plugins/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/plugins/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 6e2012ecd1..c02f09ecf8 100644 --- a/plugins/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/plugins/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -7,12 +7,13 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.EffectiveProfileSwitch import info.nightscout.database.entities.embedments.InsulinConfiguration import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -172,6 +173,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/plugins/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt b/plugins/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt index 6f9dd15f6f..f792b94d68 100644 --- a/plugins/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt +++ b/plugins/src/test/java/info/nightscout/plugins/general/smsCommunicator/SmsCommunicatorPluginTest.kt @@ -10,7 +10,6 @@ import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.CommandQueue import info.nightscout.androidaps.interfaces.Constraints import info.nightscout.androidaps.interfaces.Loop -import info.nightscout.androidaps.interfaces.ProfileSource import info.nightscout.androidaps.interfaces.XDripBroadcast import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensDataStore @@ -27,6 +26,7 @@ import info.nightscout.interfaces.GlucoseUnit import info.nightscout.interfaces.constraints.Constraint import info.nightscout.interfaces.iob.IobTotal import info.nightscout.interfaces.plugin.PluginType +import info.nightscout.interfaces.profile.ProfileSource import info.nightscout.interfaces.pump.defs.PumpDescription import info.nightscout.interfaces.pump.defs.PumpType import info.nightscout.interfaces.queue.Callback diff --git a/pump/dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt b/pump/dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt index 9e359cca39..81965fc034 100644 --- a/pump/dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt +++ b/pump/dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt @@ -1,18 +1,19 @@ package info.nightscout.androidaps.dana import dagger.android.HasAndroidInjector -import info.nightscout.interfaces.Constants import info.nightscout.androidaps.interfaces.Profile -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.interfaces.PumpSync -import info.nightscout.rx.events.EventOverviewBolusProgress -import info.nightscout.interfaces.pump.defs.PumpType -import info.nightscout.shared.utils.DateUtil import info.nightscout.androidaps.utils.DecimalFormatter -import info.nightscout.shared.utils.T +import info.nightscout.core.profile.ProfileStoreObject +import info.nightscout.interfaces.Constants +import info.nightscout.interfaces.profile.ProfileStore +import info.nightscout.interfaces.pump.defs.PumpType +import info.nightscout.rx.events.EventOverviewBolusProgress import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.LTag import info.nightscout.shared.sharedPreferences.SP +import info.nightscout.shared.utils.DateUtil +import info.nightscout.shared.utils.T import org.joda.time.DateTime import org.joda.time.DateTimeZone import org.json.JSONArray @@ -380,7 +381,7 @@ class DanaPump @Inject constructor( } catch (e: Exception) { return null } - return ProfileStore(injector, json, dateUtil) + return ProfileStoreObject(injector, json, dateUtil) } return null } diff --git a/pump/dana/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/pump/dana/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 9231da44ec..01315c2b72 100644 --- a/pump/dana/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/pump/dana/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -6,11 +6,12 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -58,6 +59,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/pump/danar/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/pump/danar/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 6a8937c4af..c166eb31dc 100644 --- a/pump/danar/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/pump/danar/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -7,10 +7,11 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -152,6 +153,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/pump/danars/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/pump/danars/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 27d702dd8a..2d798bb73f 100644 --- a/pump/danars/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/pump/danars/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -6,11 +6,12 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -54,6 +55,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } } diff --git a/ui/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/ui/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index 6e2012ecd1..c02f09ecf8 100644 --- a/ui/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/ui/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -7,12 +7,13 @@ import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.IobCobCalculator import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.interfaces.ProfileStore import info.nightscout.androidaps.utils.extensions.pureProfileFromJson import info.nightscout.core.fabric.FabricPrivacy +import info.nightscout.core.profile.ProfileStoreObject import info.nightscout.database.entities.EffectiveProfileSwitch import info.nightscout.database.entities.embedments.InsulinConfiguration import info.nightscout.interfaces.Config +import info.nightscout.interfaces.profile.ProfileStore import info.nightscout.rx.bus.RxBus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.utils.DateUtil @@ -172,6 +173,6 @@ open class TestBaseWithProfile : TestBase() { store.put(TESTPROFILENAME, JSONObject(validProfileJSON)) json.put("defaultProfile", TESTPROFILENAME) json.put("store", store) - return ProfileStore(profileInjector, json, dateUtil) + return ProfileStoreObject(profileInjector, json, dateUtil) } }