Page Menu
Home
GitPull.it
Search
Configure Global Search
Log In
Files
F2446698
D121.1729754977.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
10 KB
Referenced Files
None
Subscribers
None
D121.1729754977.diff
View Options
diff --git a/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt b/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt
new file mode 100644
--- /dev/null
+++ b/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt
@@ -0,0 +1,70 @@
+package it.reyboz.bustorino.data
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.content.Context
+import android.os.Build
+import android.widget.Toast
+import androidx.core.app.NotificationCompat
+import androidx.work.*
+import it.reyboz.bustorino.R
+import it.reyboz.bustorino.backend.Notifications
+
+class GtfsMaintenanceWorker(appContext: Context, workerParams: WorkerParameters)
+ : CoroutineWorker(appContext, workerParams) {
+ override suspend fun doWork(): Result {
+ val data = inputData.getString(OPERATION_TYPE)
+ if(data ==null){
+ return Result.failure()
+ }
+ val result = when (data){
+ CLEAR_GTFS_TRIPS ->clearGtfsTrips()
+ else -> {Result.failure()}
+ }
+ return result
+ }
+ private fun clearGtfsTrips(): Result{
+ val gtfsRepository = GtfsRepository(applicationContext)
+ gtfsRepository.gtfsDao.deleteAllTrips()
+
+ return Result.success()
+ }
+ override suspend fun getForegroundInfo(): ForegroundInfo {
+ val notificationManager =
+ applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ val context = applicationContext
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ val channel = NotificationChannel(
+ Notifications.DB_UPDATE_CHANNELS_ID,
+ context.getString(R.string.database_notification_channel),
+ NotificationManager.IMPORTANCE_MIN
+ )
+ notificationManager.createNotificationChannel(channel)
+ }
+
+ val notification = NotificationCompat.Builder(context, Notifications.DB_UPDATE_CHANNELS_ID)
+ //.setContentIntent(PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), Constants.PENDING_INTENT_FLAG_IMMUTABLE))
+ .setSmallIcon(R.drawable.bus)
+ .setOngoing(true)
+ .setAutoCancel(true)
+ .setOnlyAlertOnce(true)
+ .setPriority(NotificationCompat.PRIORITY_MIN)
+ .setContentTitle(context.getString(R.string.app_name))
+ .setLocalOnly(true)
+ .setVisibility(NotificationCompat.VISIBILITY_SECRET)
+ .setContentText("Database maintenance")
+ .build()
+ return ForegroundInfo(3671672811121.toInt(), notification)
+ }
+ companion object{
+ const val CLEAR_GTFS_TRIPS="trips_clear"
+ const val OPERATION_TYPE="oper_type"
+ fun makeOneTimeRequest(type: String): OneTimeWorkRequest {
+ val data = Data.Builder().putString(OPERATION_TYPE, type).build()
+ return OneTimeWorkRequest.Builder(GtfsMaintenanceWorker::class.java)
+ .setInputData(data).setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
+ .addTag(type)
+ .build()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/reyboz/bustorino/data/gtfs/Converters.kt b/app/src/main/java/it/reyboz/bustorino/data/gtfs/Converters.kt
--- a/app/src/main/java/it/reyboz/bustorino/data/gtfs/Converters.kt
+++ b/app/src/main/java/it/reyboz/bustorino/data/gtfs/Converters.kt
@@ -91,13 +91,5 @@
}
return WheelchairAccess.UNKNOWN
}
- @TypeConverter
- fun wheelchairToInt(access: WheelchairAccess): Int{
- return access.value;
- }
- @TypeConverter
- fun wheelchairFromInt(value: Int): WheelchairAccess {
- return WheelchairAccess.getByValue(value)?: WheelchairAccess.UNKNOWN
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/it/reyboz/bustorino/data/gtfs/WheelchairAccess.kt b/app/src/main/java/it/reyboz/bustorino/data/gtfs/WheelchairAccess.kt
--- a/app/src/main/java/it/reyboz/bustorino/data/gtfs/WheelchairAccess.kt
+++ b/app/src/main/java/it/reyboz/bustorino/data/gtfs/WheelchairAccess.kt
@@ -5,8 +5,10 @@
SOMETIMES(1),
IMPOSSIBLE(2);
+ // BE CAREFUL: WheelchairAccess is saved as a String in the DB due to a catastrophic error.
+ // However, everything works perfectly, so... finchè la barca va...
companion object {
private val VALUES = values()
fun getByValue(value: Int) = VALUES.firstOrNull { it.value == value }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/MapViewModel.kt b/app/src/main/java/it/reyboz/bustorino/fragments/MapViewModel.kt
--- a/app/src/main/java/it/reyboz/bustorino/fragments/MapViewModel.kt
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/MapViewModel.kt
@@ -214,7 +214,9 @@
val runNewWork = if(info.isEmpty()){
true
} else info[0].state!=WorkInfo.State.RUNNING && info[0].state!=WorkInfo.State.ENQUEUED
- Log.d(DEBUG_TI, "Request to download and insert ${trips.size} trips, proceed: $runNewWork")
+ val addDat = if(info.isEmpty())
+ null else info[0].state
+ Log.d(DEBUG_TI, "Request to download and insert ${trips.size} trips, proceed: $runNewWork, workstate: $addDat")
if(runNewWork) {
val tripsArr = trips.toTypedArray()
val data = Data.Builder().putStringArray(MatoDownloadTripsWorker.TRIPS_KEYS, tripsArr).build()
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/SettingsFragment.java b/app/src/main/java/it/reyboz/bustorino/fragments/SettingsFragment.java
--- a/app/src/main/java/it/reyboz/bustorino/fragments/SettingsFragment.java
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/SettingsFragment.java
@@ -28,13 +28,21 @@
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
import androidx.preference.*;
-import androidx.room.Database;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.OutOfQuotaPolicy;
+import androidx.work.WorkInfo;
+import androidx.work.WorkManager;
import it.reyboz.bustorino.R;
import it.reyboz.bustorino.data.DatabaseUpdate;
+import it.reyboz.bustorino.data.GtfsMaintenanceWorker;
+import it.reyboz.bustorino.data.MatoDownloadTripsWorker;
+import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
import java.util.HashSet;
+import java.util.List;
public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = SettingsFragment.class.getName();
@@ -95,9 +103,34 @@
}
}
);
+
else {
Log.e("BusTO-Preferences", "Cannot find db update preference");
}
+ Preference clearGtfsTrips = findPreference("pref_clear_gtfs_trips");
+ if (clearGtfsTrips != null) {
+ clearGtfsTrips.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(@NonNull @NotNull Preference preference) {
+ if (getContext() != null) {
+ OneTimeWorkRequest requ = GtfsMaintenanceWorker.Companion.makeOneTimeRequest(GtfsMaintenanceWorker.CLEAR_GTFS_TRIPS);
+ WorkManager.getInstance(getContext()).enqueue(requ);
+ WorkManager.getInstance(getContext()).getWorkInfosByTagLiveData(GtfsMaintenanceWorker.CLEAR_GTFS_TRIPS).observe(getViewLifecycleOwner(),
+ (Observer<List<WorkInfo>>) workInfos -> {
+ if(workInfos.isEmpty())
+ return;
+ if(workInfos.get(0).getState()==(WorkInfo.State.SUCCEEDED)){
+ Toast.makeText(
+ getContext(), R.string.all_trips_removed, Toast.LENGTH_SHORT
+ ).show();
+ }
+ });
+ return true;
+ }
+ return false;
+ }
+ });
+ }
}
diff --git a/app/src/main/res/layout/fragment_test_realtime_gtfs.xml b/app/src/main/res/layout/fragment_test_realtime_gtfs.xml
--- a/app/src/main/res/layout/fragment_test_realtime_gtfs.xml
+++ b/app/src/main/res/layout/fragment_test_realtime_gtfs.xml
@@ -10,7 +10,7 @@
android:id="@+id/gtfsMessageTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/hello_blank_fragment"
+ android:text="BABLABLA"
app:layout_constraintTop_toBottomOf="@id/btn_download_data"
app:layout_constraintEnd_toEndOf="parent"
android:layout_margin="20dp" app:layout_constraintStart_toStartOf="parent"/>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -205,4 +205,8 @@
<!-- lines -->
<string name="long_press_stop_4_options">Tocca a lungo la fermata per le opzioni</string>
+ <string name="remove_all_trips">Rimuovi tutti i trip GTFS</string>
+ <string name="all_trips_removed">Tutti i trip GTFS sono rimossi dal database</string>
+
+
</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -237,7 +237,7 @@
<item>@string/nav_map_text</item>
<item>@string/lines</item>
</array>
- <!-- TODO: Remove or change this placeholder text -->
- <string name="hello_blank_fragment">Hello blank fragment</string>
+ <string name="remove_all_trips">Remove all GTFS trips info</string>
+ <string name="all_trips_removed">All GTFS trips have been removed from the database</string>
</resources>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -87,6 +87,10 @@
android:summary="@string/database_update_req_descr"
android:key="pref_db_update_now"
/>
+ <androidx.preference.Preference
+ android:title="@string/remove_all_trips"
+ android:key="pref_clear_gtfs_trips"
+ />
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Oct 24, 09:29 (20 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
643521
Default Alt Text
D121.1729754977.diff (10 KB)
Attached To
Mode
D121: Add button to clear GTFS trips from the DB
Attached
Detach File
Event Timeline
Log In to Comment