Verbessere visibility modifiers, String empty checks, lateinit-Nutzung

master
Niko Diamadis 3 years ago
parent 577bcad1e6
commit 78a45079e8
Signed by: niko
GPG Key ID: BE53B0B17B1B142E

@ -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,17 +25,7 @@ data class HourMinute(
return difference / 3600000f
}
companion object {
internal fun fromString(hourMinute: String): HourMinute {
val parts = hourMinute.split(":")
val hours = parts[0].toInt()
val minutes = parts[1].toInt()
return HourMinute(hours, minutes)
}
}
}
internal operator fun HourMinute.compareTo(b: HourMinute): Int {
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) {
@ -44,3 +34,13 @@ internal operator fun HourMinute.compareTo(b: HourMinute): Int {
-1
} else 1
}
companion object {
fun fromString(hourMinute: String): HourMinute {
val parts = hourMinute.split(":")
val hours = parts[0].toInt()
val minutes = parts[1].toInt()
return HourMinute(hours, minutes)
}
}
}

@ -8,8 +8,7 @@ import com.parse.ParseException
import com.parse.ParseObject
import com.parse.ParseQuery
object ParseController {
internal object ParseController {
private inline fun <reified T : ParseObject>getQuery(
allowCache: Boolean = true
): ParseQuery<T> {
@ -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<Year>, e: ParseException?) -> Unit) {
fun fetchYears(action: (entries: List<Year>, e: ParseException?) -> Unit) {
val query = getQuery<Year>()
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<Mission>()
query.selectKeys(listOf(
Mission.COLUMN_DATE,
@ -74,10 +70,7 @@ object ParseController {
}
}
internal fun fetchMissions(
year: String,
action: (missions: List<Mission>, e: ParseException?) -> Unit
) {
fun fetchMissions(year: String, action: (missions: List<Mission>, e: ParseException?) -> Unit) {
val query = getQuery<Mission>()
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<Participation>, e: ParseException?) -> Unit
@ -124,7 +117,7 @@ object ParseController {
}
}
internal fun fetchMembers(
fun fetchMembers(
includeInformation: Boolean,
action: (
members: List<Member>,

@ -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)
}
}

@ -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)
}
}

@ -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)
}
}

@ -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)
}
}

@ -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()

@ -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("<b>Datum:</b><br/>${date}")
}
if (time != "") {
if (time.isNotEmpty()) {
binding.durationView.text = Html.fromHtml("<b>Dauer:</b> $time Uhr, $duration Stunden")
} else {
binding.durationView.text = Html.fromHtml("<b>Dauer:</b> $duration Stunden")
}
if (childKey == "") {
mission = Mission()
mission = if (childKey.isEmpty()) {
Mission()
} else {
mission = Mission.emptyObject(childKey)
Mission.emptyObject(childKey)
}
}
}

@ -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()

@ -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) {

Loading…
Cancel
Save