diff options
| author | Harsh Shandilya <msfjarvis@gmail.com> | 2019-05-31 13:15:29 +0530 |
|---|---|---|
| committer | Harsh Shandilya <msfjarvis@gmail.com> | 2019-05-31 13:15:29 +0530 |
| commit | 168c3d42aa25bb1cf479f9d6e6b60c5d102669fe (patch) | |
| tree | 901d94c06123ba98a3caf89de98c45991b5ee164 /app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt | |
| parent | daafc01ce232205096675afa20ab4982209689aa (diff) | |
| download | HardenedPass-168c3d42aa25bb1cf479f9d6e6b60c5d102669fe.tar.gz HardenedPass-168c3d42aa25bb1cf479f9d6e6b60c5d102669fe.zip | |
Convert GitOperation API and implementations to Kotlin
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt new file mode 100644 index 00000000..8712a200 --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt @@ -0,0 +1,60 @@ +package com.zeapo.pwdstore.git + +import android.app.Activity +import android.app.AlertDialog +import com.zeapo.pwdstore.R +import org.eclipse.jgit.api.AddCommand +import org.eclipse.jgit.api.CommitCommand +import org.eclipse.jgit.api.Git +import org.eclipse.jgit.api.PullCommand +import org.eclipse.jgit.api.PushCommand +import org.eclipse.jgit.api.StatusCommand + +import java.io.File + +/** + * Creates a new git operation + * + * @param fileDir the git working tree directory + * @param callingActivity the calling activity + */ +class SyncOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { + private var addCommand: AddCommand? = null + private var statusCommand: StatusCommand? = null + private var commitCommand: CommitCommand? = null + private var pullCommand: PullCommand? = null + private var pushCommand: PushCommand? = null + + /** + * Sets the command + * + * @return the current object + */ + fun setCommands(): SyncOperation { + val git = Git(repository) + this.addCommand = git.add().addFilepattern(".") + this.statusCommand = git.status() + this.commitCommand = git.commit().setAll(true).setMessage("[Android Password Store] Sync") + this.pullCommand = git.pull().setRebase(true).setRemote("origin") + this.pushCommand = git.push().setPushAll().setRemote("origin") + return this + } + + override fun execute() { + if (this.provider != null) { + this.pullCommand!!.setCredentialsProvider(this.provider) + this.pushCommand!!.setCredentialsProvider(this.provider) + } + GitAsyncTask(callingActivity, true, false, this).execute(this.addCommand, this.statusCommand, this.commitCommand, this.pullCommand, this.pushCommand) + } + + override fun onError(errorMessage: String) { + AlertDialog.Builder(callingActivity).setTitle(callingActivity.resources.getString(R.string.jgit_error_dialog_title)) + .setMessage("Error occured during the sync operation, " + + "\nPlease check the FAQ for possible reasons why this error might occur." + + callingActivity.resources.getString(R.string.jgit_error_dialog_text) + + errorMessage) + .setPositiveButton(callingActivity.resources.getString(R.string.dialog_ok)) { _, _ -> callingActivity.finish() } + .show() + } +} |
