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/CloneOperation.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/CloneOperation.kt')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt new file mode 100644 index 00000000..bf407838 --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt @@ -0,0 +1,72 @@ +package com.zeapo.pwdstore.git + +import android.app.Activity +import android.app.AlertDialog +import com.zeapo.pwdstore.R +import org.eclipse.jgit.api.CloneCommand +import org.eclipse.jgit.api.Git + +import java.io.File + +/** + * Creates a new clone operation + * + * @param fileDir the git working tree directory + * @param callingActivity the calling activity + */ +class CloneOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { + + /** + * Sets the command using the repository uri + * + * @param uri the uri of the repository + * @return the current object + */ + fun setCommand(uri: String): CloneOperation { + this.command = Git.cloneRepository().setCloneAllBranches(true).setDirectory(repository.workTree).setURI(uri) + return this + } + + /** + * sets the authentication for user/pwd scheme + * + * @param username the username + * @param password the password + * @return the current object + */ + public override fun setAuthentication(username: String, password: String): CloneOperation { + super.setAuthentication(username, password) + return this + } + + /** + * sets the authentication for the ssh-key scheme + * + * @param sshKey the ssh-key file + * @param username the username + * @param passphrase the passphrase + * @return the current object + */ + public override fun setAuthentication(sshKey: File, username: String, passphrase: String): CloneOperation { + super.setAuthentication(sshKey, username, passphrase) + return this + } + + override fun execute() { + if (this.provider != null) { + (this.command as CloneCommand).setCredentialsProvider(this.provider) + } + GitAsyncTask(callingActivity, true, false, this).execute(this.command) + } + + override fun onError(errorMessage: String) { + AlertDialog.Builder(callingActivity) + .setTitle(callingActivity.resources.getString(R.string.jgit_error_dialog_title)) + .setMessage("Error occured during the clone operation, " + + callingActivity.resources.getString(R.string.jgit_error_dialog_text) + + errorMessage + + "\nPlease check the FAQ for possible reasons why this error might occur.") + .setPositiveButton(callingActivity.resources.getString(R.string.dialog_ok)) { _, _ -> } + .show() + } +} |
