From 78a45079e8f212bddfe0b8460c2a7c9ed3a38323 Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Sun, 2 Apr 2023 21:54:03 +0200 Subject: [PATCH] Verbessere visibility modifiers, String empty checks, lateinit-Nutzung --- .../cyb3rko/techniklogger/data/HourMinute.kt | 34 +++++++++---------- .../techniklogger/data/ParseController.kt | 21 ++++-------- .../techniklogger/data/objects/Member.kt | 20 +++++------ .../techniklogger/data/objects/Mission.kt | 34 +++++++++---------- .../data/objects/Participation.kt | 26 +++++++------- .../techniklogger/data/objects/Year.kt | 8 ++--- .../fragments/ListingFragment.kt | 2 +- .../fragments/MissionPusherFragment.kt | 24 ++++++------- .../techniklogger/fragments/YearsFragment.kt | 2 +- .../techniklogger/modals/TimePickerBuilder.kt | 9 +++-- 10 files changed, 86 insertions(+), 94 deletions(-) diff --git a/app/src/main/java/com/cyb3rko/techniklogger/data/HourMinute.kt b/app/src/main/java/com/cyb3rko/techniklogger/data/HourMinute.kt index 09fc7a8..76ffd75 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/data/HourMinute.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/data/HourMinute.kt @@ -1,16 +1,16 @@ package com.cyb3rko.techniklogger.data -data class HourMinute( - internal val hours: Int, - internal val minutes: Int +internal data class HourMinute( + val hours: Int, + val minutes: Int ) { - internal val millis = hours.toLong() * 3600000 + minutes.toLong() * 60000 + private val millis = hours.toLong() * 3600000 + minutes.toLong() * 60000 override fun toString(): String { - return "${hours.toPrettyString()}:${minutes.toPrettyString()}" + return "${hours.toTwoDigitString()}:${minutes.toTwoDigitString()}" } - private fun Int.toPrettyString(): String { + private fun Int.toTwoDigitString(): String { val intString = this.toString() return if (intString.length != 1) { intString @@ -25,8 +25,18 @@ data class HourMinute( return difference / 3600000f } + operator fun compareTo(b: HourMinute): Int { + return if (this.hours == b.hours && this.minutes == b.minutes) { + 0 + } else if (this.hours == b.hours && this.minutes < b.minutes) { + -1 + } else if (this.hours < b.hours) { + -1 + } else 1 + } + companion object { - internal fun fromString(hourMinute: String): HourMinute { + fun fromString(hourMinute: String): HourMinute { val parts = hourMinute.split(":") val hours = parts[0].toInt() val minutes = parts[1].toInt() @@ -34,13 +44,3 @@ data class HourMinute( } } } - -internal operator fun HourMinute.compareTo(b: HourMinute): Int { - return if (this.hours == b.hours && this.minutes == b.minutes) { - 0 - } else if (this.hours == b.hours && this.minutes < b.minutes) { - -1 - } else if (this.hours < b.hours) { - -1 - } else 1 -} diff --git a/app/src/main/java/com/cyb3rko/techniklogger/data/ParseController.kt b/app/src/main/java/com/cyb3rko/techniklogger/data/ParseController.kt index 54e4483..a7980c1 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/data/ParseController.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/data/ParseController.kt @@ -8,8 +8,7 @@ import com.parse.ParseException import com.parse.ParseObject import com.parse.ParseQuery -object ParseController { - +internal object ParseController { private inline fun getQuery( allowCache: Boolean = true ): ParseQuery { @@ -23,7 +22,7 @@ object ParseController { } } - internal fun fetchAdminStatus( + fun fetchAdminStatus( name: String?, action: (objectId: String?, admin: Boolean?, e: ParseException?) -> Unit ) { @@ -41,7 +40,7 @@ object ParseController { } } - internal fun fetchYears(action: (entries: List, e: ParseException?) -> Unit) { + fun fetchYears(action: (entries: List, e: ParseException?) -> Unit) { val query = getQuery() query.orderByDescending(Year.COLUMN_NAME) query.selectKeys(listOf( @@ -54,10 +53,7 @@ object ParseController { } } - internal fun fetchMission( - objectId: String?, - action: (mission: Mission?, e: ParseException?) -> Unit - ) { + fun fetchMission(objectId: String?, action: (mission: Mission?, e: ParseException?) -> Unit) { val query = getQuery() query.selectKeys(listOf( Mission.COLUMN_DATE, @@ -74,10 +70,7 @@ object ParseController { } } - internal fun fetchMissions( - year: String, - action: (missions: List, e: ParseException?) -> Unit - ) { + fun fetchMissions(year: String, action: (missions: List, e: ParseException?) -> Unit) { val query = getQuery() query.whereEqualTo(Mission.COLUMN_YEAR, Year.emptyObject(year)) query.orderByDescending(Mission.COLUMN_DATE) @@ -96,7 +89,7 @@ object ParseController { } } - internal fun fetchParticipations( + fun fetchParticipations( missionId: String, includeMember: Boolean, action: (participations: List, e: ParseException?) -> Unit @@ -124,7 +117,7 @@ object ParseController { } } - internal fun fetchMembers( + fun fetchMembers( includeInformation: Boolean, action: ( members: List, diff --git a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Member.kt b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Member.kt index 68093d0..0615823 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Member.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Member.kt @@ -6,32 +6,32 @@ import com.parse.ParseObject @ParseClassName(CLASS_NAME) internal class Member : ParseObject() { - internal val admin + val admin get() = getBoolean(COLUMN_ADMIN) - internal val name + val name get() = getString(COLUMN_NAME)!! - internal fun setAdmin(admin: Boolean) { + fun setAdmin(admin: Boolean) { put(COLUMN_ADMIN, admin) } - internal fun setName(name: String) { + fun setName(name: String) { put(COLUMN_NAME, name) } - internal fun retire() { + fun retire() { put(COLUMN_RETIRED, true) } companion object { - internal const val CLASS_NAME = "Techniker" + const val CLASS_NAME = "Techniker" - internal const val COLUMN_ADMIN = "admin" - internal const val COLUMN_NAME = "name" - internal const val COLUMN_RETIRED = "entlassen" + const val COLUMN_ADMIN = "admin" + const val COLUMN_NAME = "name" + const val COLUMN_RETIRED = "entlassen" - internal fun emptyObject(objectId: String): Member { + fun emptyObject(objectId: String): Member { return createWithoutData(Member::class.java, objectId) } } diff --git a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Mission.kt b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Mission.kt index 944dbd2..7b3d51b 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Mission.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Mission.kt @@ -8,57 +8,57 @@ import java.util.* @ParseClassName(CLASS_NAME) internal class Mission : ParseObject() { - internal val date: () -> Date + val date: () -> Date get() = { val dates = getString(COLUMN_DATE)!!.split(",") SimpleDateFormat("yyyy.MM.dd", Locale.GERMANY).parse(dates[0])!! } - internal val duration + val duration get() = getDouble(COLUMN_DURATION).toFloat() - internal val location + val location get() = getString(COLUMN_LOCATION)!! - internal val name + val name get() = getString(COLUMN_NAME)!! - internal val time: () -> String + val time: () -> String get() = { val dates = getString(COLUMN_DATE)!!.split(",") if (dates.size > 1) dates[1] else "" } - internal fun setDate(date: String) { + fun setDate(date: String) { put(COLUMN_DATE, date) } - internal fun setDuration(duration: Float) { + fun setDuration(duration: Float) { put(COLUMN_DURATION, duration) } - internal fun setLocation(location: String) { + fun setLocation(location: String) { put(COLUMN_LOCATION, location) } - internal fun setName(name: String) { + fun setName(name: String) { put(COLUMN_NAME, name) } - internal fun setYear(yearId: String) { + fun setYear(yearId: String) { put(COLUMN_YEAR, Year.emptyObject(yearId)) } companion object { - internal const val CLASS_NAME = "Einsatz" + const val CLASS_NAME = "Einsatz" - internal const val COLUMN_DATE = "datum" - internal const val COLUMN_DURATION = "dauer" - internal const val COLUMN_LOCATION = "ort" - internal const val COLUMN_NAME = "name" - internal const val COLUMN_YEAR = "jahr" + const val COLUMN_DATE = "datum" + const val COLUMN_DURATION = "dauer" + const val COLUMN_LOCATION = "ort" + const val COLUMN_NAME = "name" + const val COLUMN_YEAR = "jahr" - internal fun emptyObject(objectId: String): Mission { + fun emptyObject(objectId: String): Mission { return createWithoutData(Mission::class.java, objectId) } } diff --git a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Participation.kt b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Participation.kt index cb3699d..a5b2743 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Participation.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Participation.kt @@ -6,38 +6,38 @@ import com.parse.ParseObject @ParseClassName(CLASS_NAME) internal class Participation : ParseObject() { - internal val by + val by get() = getParseObject(COLUMN_BY)?.objectId - internal val duration + val duration get() = getDouble(COLUMN_DURATION).toFloat() - internal val `in` + val `in` get() = getParseObject(COLUMN_IN)?.objectId - internal val name + val name get() = (getParseObject(COLUMN_BY) as Member).name - internal val time + val time get() = getString(COLUMN_TIME)!! - internal fun setDuration(duration: Float) { + fun setDuration(duration: Float) { put(COLUMN_DURATION, duration) } - internal fun setTime(time: String) { + fun setTime(time: String) { put(COLUMN_TIME, time) } companion object { - internal const val CLASS_NAME = "Teilnahme" + const val CLASS_NAME = "Teilnahme" - internal const val COLUMN_BY = "von" - internal const val COLUMN_DURATION = "dauer" - internal const val COLUMN_IN = "an" - internal const val COLUMN_TIME = "uhrzeit" + const val COLUMN_BY = "von" + const val COLUMN_DURATION = "dauer" + const val COLUMN_IN = "an" + const val COLUMN_TIME = "uhrzeit" - internal fun emptyObject(objectId: String): Participation { + fun emptyObject(objectId: String): Participation { return createWithoutData(Participation::class.java, objectId) } } diff --git a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Year.kt b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Year.kt index 5780012..c06268c 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Year.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/data/objects/Year.kt @@ -6,15 +6,15 @@ import com.parse.ParseObject @ParseClassName(CLASS_NAME) internal class Year : ParseObject() { - internal val name + val name get() = getString(COLUMN_NAME)!! companion object { - internal const val CLASS_NAME = "Jahr" + const val CLASS_NAME = "Jahr" - internal const val COLUMN_NAME = "name" + const val COLUMN_NAME = "name" - internal fun emptyObject(objectId: String): Year { + fun emptyObject(objectId: String): Year { return createWithoutData(Year::class.java, objectId) } } diff --git a/app/src/main/java/com/cyb3rko/techniklogger/fragments/ListingFragment.kt b/app/src/main/java/com/cyb3rko/techniklogger/fragments/ListingFragment.kt index f1d869b..60cde08 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/ListingFragment.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/ListingFragment.kt @@ -108,7 +108,7 @@ class ListingFragment : Fragment() { closeFABMenu() } - if (adminMode == null && Safe.getKey(myContext, NAME) != "") { + if (adminMode == null && Safe.getKey(myContext, NAME).isNotEmpty()) { updateAdminStatus() } else if (adminMode != null && adminMode!!) { binding.fabContainer.show() diff --git a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt index 65764cc..c16320f 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt @@ -52,11 +52,11 @@ class MissionPusherFragment : Fragment() { val timePickerBuilder = TimePickerBuilder() binding.dateButton.setOnClickListener { - if (date != "") { + if (date.isNotEmpty()) { datePickerBuilder.setInitialDate(date) } - if (time != "") { + if (time.isNotEmpty()) { val times = time.split(" Uhr")[0].split(" - ") timePickerBuilder.apply { initialStart = HourMinute.fromString(times[0]) @@ -78,7 +78,7 @@ class MissionPusherFragment : Fragment() { } } - if (childKey != "") { + if (childKey.isNotEmpty()) { binding.deleteButton.show() binding.deleteButton.setOnClickListener { MaterialAlertDialogBuilder(myContext) @@ -114,12 +114,12 @@ class MissionPusherFragment : Fragment() { val name = binding.nameEditText.text.toString().trim() val location = binding.locationEditText.text.toString().trim() - if (name != "" && location != "" && time != "") { + if (name.isNotEmpty() && location.isNotEmpty() && time.isNotEmpty()) { mission.setName(name) mission.setLocation(location) val dateTimes = date.split(".") var dateTime = "${dateTimes[2]}.${dateTimes[1]}.${dateTimes[0]}" - if (time != "") dateTime += ",$time" + if (time.isNotEmpty()) dateTime += ",$time" mission.setDate(dateTime) mission.setDuration(duration) mission.setYear(Safe.getKey(myContext, CURRENT_YEAR)) @@ -150,25 +150,25 @@ class MissionPusherFragment : Fragment() { } private fun restoreInformation() { - if (name != "") { + if (name.isNotEmpty()) { binding.nameEditText.text = SpannableStringBuilder(name) } - if (location != "") { + if (location.isNotEmpty()) { binding.locationEditText.text = SpannableStringBuilder(location) } - if (date != "") { + if (date.isNotEmpty()) { binding.dateView.text = Html.fromHtml("Datum:
${date}") } - if (time != "") { + if (time.isNotEmpty()) { binding.durationView.text = Html.fromHtml("Dauer: $time Uhr, $duration Stunden") } else { binding.durationView.text = Html.fromHtml("Dauer: $duration Stunden") } - if (childKey == "") { - mission = Mission() + mission = if (childKey.isEmpty()) { + Mission() } else { - mission = Mission.emptyObject(childKey) + Mission.emptyObject(childKey) } } } diff --git a/app/src/main/java/com/cyb3rko/techniklogger/fragments/YearsFragment.kt b/app/src/main/java/com/cyb3rko/techniklogger/fragments/YearsFragment.kt index a03c41f..fb6a8e5 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/YearsFragment.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/YearsFragment.kt @@ -83,7 +83,7 @@ class YearsFragment : Fragment() { .show() } - if (adminMode == null && Safe.getKey(myContext, NAME) != "") { + if (adminMode == null && Safe.getKey(myContext, NAME).isNotEmpty()) { updateAdminStatus() } else if (adminMode != null && adminMode!!) { binding.fab.show() diff --git a/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt b/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt index 6e68337..412ee9e 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt @@ -2,7 +2,6 @@ package com.cyb3rko.techniklogger.modals import androidx.fragment.app.FragmentActivity import com.cyb3rko.techniklogger.data.HourMinute -import com.cyb3rko.techniklogger.data.compareTo import com.cyb3rko.techniklogger.showWarningToast import com.google.android.material.timepicker.MaterialTimePicker import com.google.android.material.timepicker.TimeFormat @@ -15,10 +14,10 @@ internal class TimePickerBuilder { private const val TAG = "TimePickerDialog" } - internal var initialStart = HourMinute(0, 0) - internal var initialEnd = HourMinute(0, 0) + var initialStart = HourMinute(0, 0) + var initialEnd = HourMinute(0, 0) - internal fun show( + fun show( activity: FragmentActivity, missionTime: String?, action: (time: String, duration: Float) -> Unit @@ -52,7 +51,7 @@ internal class TimePickerBuilder { missionEnd = HourMinute.fromString(missionTimes[1]) } - var start = HourMinute(0, 0) + lateinit var start: HourMinute picker1.addOnPositiveButtonClickListener { start = HourMinute(picker1.hour, picker1.minute) if (missionStart != null && start < missionStart) {