aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt
diff options
context:
space:
mode:
authorHarsh Shandilya <msfjarvis@gmail.com>2019-05-31 13:15:29 +0530
committerHarsh Shandilya <msfjarvis@gmail.com>2019-05-31 13:15:29 +0530
commit168c3d42aa25bb1cf479f9d6e6b60c5d102669fe (patch)
tree901d94c06123ba98a3caf89de98c45991b5ee164 /app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt
parentdaafc01ce232205096675afa20ab4982209689aa (diff)
downloadHardenedPass-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.kt72
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()
+ }
+}