diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index d012a701..0213cc2f 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -13,10 +13,11 @@ dependencies { implementation(projects.core.coroutinesExt) implementation(projects.core.network) implementation(projects.core.model) + implementation(projects.core.utils) implementation(libs.androidx.core.ktx) implementation(libs.kotlinx.serialization.json) - implementation("com.opencsv:opencsv:5.5.2") + implementation(libs.opencsv) implementation(libs.okhttp) implementation(libs.timber) diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/ResponseExt.kt b/core/data/src/main/kotlin/xyz/ksharma/krail/data/ResponseExt.kt index 8ab73dbc..1e84d29e 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/ResponseExt.kt +++ b/core/data/src/main/kotlin/xyz/ksharma/krail/data/ResponseExt.kt @@ -5,7 +5,7 @@ import kotlinx.coroutines.CoroutineDispatcher import okhttp3.Response import timber.log.Timber import xyz.ksharma.krail.coroutines.ext.safeResult -import xyz.ksharma.krail.network.files.toPath +import xyz.ksharma.krail.utils.toPath import java.io.File import java.io.IOException import java.nio.file.Path diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/repository/SydneyTrainsRepositoryImpl.kt b/core/data/src/main/kotlin/xyz/ksharma/krail/data/repository/SydneyTrainsRepositoryImpl.kt index d56297d4..607c97ad 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/repository/SydneyTrainsRepositoryImpl.kt +++ b/core/data/src/main/kotlin/xyz/ksharma/krail/data/repository/SydneyTrainsRepositoryImpl.kt @@ -7,12 +7,9 @@ import kotlinx.coroutines.withContext import okhttp3.Response import timber.log.Timber import xyz.ksharma.krail.data.cacheZipResponse -import xyz.ksharma.krail.data.gtfs_static.parser.AgencyParser.parseAgency import xyz.ksharma.krail.di.AppDispatchers import xyz.ksharma.krail.di.Dispatcher -import xyz.ksharma.krail.model.sydneytrains.GTFSFeedFileNames import xyz.ksharma.krail.network.GtfsService -import xyz.ksharma.krail.network.files.toPath import javax.inject.Inject class SydneyTrainsRepositoryImpl @Inject constructor( @@ -27,18 +24,5 @@ class SydneyTrainsRepositoryImpl @Inject constructor( response.cacheZipResponse(dispatcher = ioDispatcher, context = context) // TODO - provide boolean response if files were cached successfully. - //val stopsList = context.toPath(GTFSFeedFileNames.STOPS.fileName).parseStops() - //Timber.d("stopsList: $stopsList") - //val tripsList = context.toPath(GTFSFeedFileNames.TRIPS.fileName).parseTrips() - //val stopTimesList = context.toPath(GTFSFeedFileNames.STOP_TIMES.fileName).parseStopTimes() - //Timber.d("stopTimesList: ${stopTimesList.size}") Huge data do not log. - //val routesList = context.toPath(GTFSFeedFileNames.ROUTES.fileName).parseRoutes() -// Timber.d("routesList: $routesList") - //val occupancyList = context.toPath(GTFSFeedFileNames.OCCUPANCIES.fileName).parseOccupancy() - //Timber.d("occupancyList: ${occupancyList.size}") - //val calendarList = context.toPath(GTFSFeedFileNames.CALENDAR.fileName).parseCalendar() - //Timber.d("calendarList: ${calendarList}") - val agencyList = context.toPath(GTFSFeedFileNames.AGENCY.fileName).parseAgency() - Timber.d("agencyList: $agencyList") } } diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts index 528b460a..5fe15140 100644 --- a/core/domain/build.gradle.kts +++ b/core/domain/build.gradle.kts @@ -10,6 +10,7 @@ android { dependencies { api(projects.core.data) api(projects.core.model) + implementation(projects.core.utils) testImplementation(libs.junit) testImplementation(libs.turbine) diff --git a/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/DemoUseCase.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/DemoUseCase.kt index 48374720..5dc934f8 100644 --- a/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/DemoUseCase.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/DemoUseCase.kt @@ -1,6 +1,12 @@ package xyz.ksharma.krail.domain +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext +import timber.log.Timber import xyz.ksharma.krail.data.repository.SydneyTrainsRepository +import xyz.ksharma.krail.domain.parser.AgencyParser.parseAgency +import xyz.ksharma.krail.model.sydneytrains.GTFSFeedFileNames +import xyz.ksharma.krail.utils.toPath import javax.inject.Inject /** @@ -16,8 +22,23 @@ interface DemoUseCase { class DemoUseCaseImpl @Inject constructor( private val sydneyTrainsRepository: SydneyTrainsRepository, + @ApplicationContext private val context: Context, ) : DemoUseCase { override suspend operator fun invoke() { sydneyTrainsRepository.fetchStaticSydneyTrainsScheduleAndCache() + + //val stopsList = context.toPath(GTFSFeedFileNames.STOPS.fileName).parseStops() + //Timber.d("stopsList: $stopsList") + //val tripsList = context.toPath(GTFSFeedFileNames.TRIPS.fileName).parseTrips() + //val stopTimesList = context.toPath(GTFSFeedFileNames.STOP_TIMES.fileName).parseStopTimes() + //Timber.d("stopTimesList: ${stopTimesList.size}") Huge data do not log. + //val routesList = context.toPath(GTFSFeedFileNames.ROUTES.fileName).parseRoutes() +// Timber.d("routesList: $routesList") + //val occupancyList = context.toPath(GTFSFeedFileNames.OCCUPANCIES.fileName).parseOccupancy() + //Timber.d("occupancyList: ${occupancyList.size}") + //val calendarList = context.toPath(GTFSFeedFileNames.CALENDAR.fileName).parseCalendar() + //Timber.d("calendarList: ${calendarList}") + val agencyList = context.toPath(GTFSFeedFileNames.AGENCY.fileName).parseAgency() + Timber.d("agencyList: $agencyList") } } diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/AgencyParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/AgencyParser.kt similarity index 96% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/AgencyParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/AgencyParser.kt index fef16729..165091c8 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/AgencyParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/AgencyParser.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.Agency diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/CalendarParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/CalendarParser.kt similarity index 80% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/CalendarParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/CalendarParser.kt index 904beb2f..9187df91 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/CalendarParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/CalendarParser.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.Calendar @@ -48,11 +48,4 @@ object CalendarParser { return calendarList } - - private fun Int.toWheelchairBoarding() = when (this) { - 0 -> xyz.ksharma.krail.model.gtfs_realtime.proto.Stop.WheelchairBoarding.UNKNOWN - 1 -> xyz.ksharma.krail.model.gtfs_realtime.proto.Stop.WheelchairBoarding.AVAILABLE - 2 -> xyz.ksharma.krail.model.gtfs_realtime.proto.Stop.WheelchairBoarding.NOT_AVAILABLE - else -> null - } } diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/OccupancyParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/OccupancyParser.kt similarity index 98% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/OccupancyParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/OccupancyParser.kt index 1c9f8e7a..f32ea700 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/OccupancyParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/OccupancyParser.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.Occupancy @@ -80,5 +80,4 @@ object OccupancyParser { return occupancyList } - } diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/ParserExt.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/ParserExt.kt similarity index 62% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/ParserExt.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/ParserExt.kt index 968a491b..7a0dd73d 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/ParserExt.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/ParserExt.kt @@ -1,3 +1,3 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser internal fun List.trimQuotes(): List = this.map { it.trim('\"') } diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/RouteParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/RouteParser.kt similarity index 98% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/RouteParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/RouteParser.kt index 86dfcf32..149186bd 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/RouteParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/RouteParser.kt @@ -1,5 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser - +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.Route diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/StopTimesParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/StopTimesParser.kt similarity index 98% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/StopTimesParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/StopTimesParser.kt index 888ea1e6..08e9ecef 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/StopTimesParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/StopTimesParser.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.StopTimes @@ -75,5 +75,4 @@ object StopTimesParser { return stopTimesList } - } diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/StopsParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/StopsParser.kt similarity index 97% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/StopsParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/StopsParser.kt index 6c050b13..b18e46a6 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/StopsParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/StopsParser.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.Stop diff --git a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/TripParser.kt b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/TripParser.kt similarity index 97% rename from core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/TripParser.kt rename to core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/TripParser.kt index 41e6cc1f..d8fef827 100644 --- a/core/data/src/main/kotlin/xyz/ksharma/krail/data/gtfs_static/parser/TripParser.kt +++ b/core/domain/src/main/kotlin/xyz/ksharma/krail/domain/parser/TripParser.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.data.gtfs_static.parser +package xyz.ksharma.krail.domain.parser import timber.log.Timber import xyz.ksharma.krail.model.gtfs_static.Trip diff --git a/core/network/src/main/kotlin/xyz/ksharma/krail/network/GtfsServiceImpl.kt b/core/network/src/main/kotlin/xyz/ksharma/krail/network/GtfsServiceImpl.kt index 0faadcd6..faf554b3 100644 --- a/core/network/src/main/kotlin/xyz/ksharma/krail/network/GtfsServiceImpl.kt +++ b/core/network/src/main/kotlin/xyz/ksharma/krail/network/GtfsServiceImpl.kt @@ -1,10 +1,9 @@ package xyz.ksharma.krail.network -import android.content.ContentValues.TAG -import android.util.Log import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response +import timber.log.Timber import xyz.ksharma.krail.network.di.NetworkModule.Companion.BASE_URL import xyz.ksharma.krail.network.interceptor.AuthInterceptor.Companion.API_KEY import javax.inject.Inject @@ -24,7 +23,7 @@ class GtfsServiceImpl @Inject constructor( val response = okHttpClient.newCall(request).execute() // don't log it's entire response body,which is huge. - Log.d(TAG, "fetchSydneyTrains: ${response.body?.string()?.take(500)}") + Timber.d("fetchSydneyTrains: " + response.body?.string()?.take(500)) return response } } diff --git a/core/utils/build.gradle.kts b/core/utils/build.gradle.kts new file mode 100644 index 00000000..3e8b5d9d --- /dev/null +++ b/core/utils/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + alias(libs.plugins.krail.android.library) +} + +android { + namespace = "xyz.ksharma.krail.utils" +} diff --git a/core/network/src/main/kotlin/xyz/ksharma/krail/network/files/PathExt.kt b/core/utils/src/main/kotlin/xyz/ksharma/krail/utils/PathExt.kt similarity index 86% rename from core/network/src/main/kotlin/xyz/ksharma/krail/network/files/PathExt.kt rename to core/utils/src/main/kotlin/xyz/ksharma/krail/utils/PathExt.kt index 46ffee4f..b8a90ec0 100644 --- a/core/network/src/main/kotlin/xyz/ksharma/krail/network/files/PathExt.kt +++ b/core/utils/src/main/kotlin/xyz/ksharma/krail/utils/PathExt.kt @@ -1,4 +1,4 @@ -package xyz.ksharma.krail.network.files +package xyz.ksharma.krail.utils import android.content.Context import java.nio.file.Path diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 64133994..6f72bff9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,6 +17,7 @@ hilt = "2.51.1" okhttpBom = "4.12.0" kotlinxSerializationJson = "1.7.0" ksp = "2.0.0-1.0.22" +opencsv = "5.5.2" paparazzi = "1.3.2" wire = "5.0.0-alpha04" @@ -33,6 +34,7 @@ activity-compose = { group = "androidx.activity", name = "activity-compose", ver lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "android-lifecycle" } lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "android-lifecycle" } lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "android-lifecycle" } +opencsv = { module = "com.opencsv:opencsv", version.ref = "opencsv" } timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } #Compose diff --git a/settings.gradle.kts b/settings.gradle.kts index 47727e04..e70f8128 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,4 +27,5 @@ include(":core:domain") include(":core:design-system") include(":core:model") include(":core:network") +include(":core:utils") include(":feature:feature1")