Refactored ExportServiceResultReceiver to make TrackRecordingService simpler.

This commit is contained in:
Dennis Guse
2022-01-28 19:23:45 +01:00
parent 29051ac978
commit 78519883c0
5 changed files with 48 additions and 50 deletions
@@ -310,37 +310,31 @@ public class ExportActivity extends FragmentActivity implements ExportServiceRes
viewBinding.exportProgressAlertIcon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_dialog_success_24dp));
viewBinding.exportProgressAlertMsg.setText(getString(R.string.generic_completed));
}
}
@Override
public void onReceiveResult(int resultCode, Bundle resultData) {
if (resultData == null) {
throw new RuntimeException(TAG + ": onReceiveResult resultData NULL");
}
Track.Id trackId = resultData.getParcelable(ExportServiceResultReceiver.RESULT_EXTRA_TRACK_ID);
public void onExportSuccess(Track.Id trackId) {
Track track = contentProviderUtils.getTrack(trackId);
switch (resultCode) {
case ExportServiceResultReceiver.RESULT_CODE_ERROR:
trackExportErrorCount++;
trackErrors.add(track.getName());
break;
case ExportServiceResultReceiver.RESULT_CODE_SUCCESS:
if (ExportUtils.isExportFileExists(track.getUuid(), trackFileFormat.getExtension(), directoryFiles)) {
trackExportOverwrittenCount++;
} else {
trackExportSuccessCount++;
}
break;
default:
throw new RuntimeException(TAG + ": export service result code invalid: " + resultCode);
if (ExportUtils.isExportFileExists(track.getUuid(), trackFileFormat.getExtension(), directoryFiles)) {
trackExportOverwrittenCount++;
} else {
trackExportSuccessCount++;
}
onExportCompleted(track);
}
@Override
public void onExportError(Track.Id trackId) {
Track track = contentProviderUtils.getTrack(trackId);
trackExportErrorCount++;
trackErrors.add(track.getName());
onExportCompleted(track);
}
private void conflict(Track track) {
PendingConflict newConflict = new PendingConflict(track);
conflictsQueue.add(newConflict);
@@ -6,6 +6,8 @@ import android.os.ResultReceiver;
import androidx.annotation.NonNull;
import de.dennisguse.opentracks.data.models.Track;
/**
* Create a new ResultReceive to receive results.
* Your {@link #onReceiveResult} method will be called from the thread running <var>handler</var> if given, or from an arbitrary thread if null.
@@ -26,10 +28,22 @@ public class ExportServiceResultReceiver extends ResultReceiver {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
receiver.onReceiveResult(resultCode, resultData);
Track.Id trackId = resultData.getParcelable(ExportServiceResultReceiver.RESULT_EXTRA_TRACK_ID);
switch (resultCode) {
case RESULT_CODE_SUCCESS:
receiver.onExportSuccess(trackId);
case RESULT_CODE_ERROR:
receiver.onExportError(trackId);
default:
throw new RuntimeException("Unknown resultCode.");
}
}
public interface Receiver {
void onReceiveResult(int resultCode, Bundle resultData);
default void onExportSuccess(Track.Id trackId) {
}
default void onExportError(Track.Id trackId) {
}
}
}