more DRYness
This commit is contained in:
parent
dbbb2305f7
commit
88a6876238
1 changed files with 54 additions and 82 deletions
|
@ -386,6 +386,32 @@ public class GitActivity extends ActionBarActivity {
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves the configuration found in the form
|
||||||
|
*/
|
||||||
|
private void saveConfiguration() {
|
||||||
|
// remember the settings
|
||||||
|
SharedPreferences.Editor editor = settings.edit();
|
||||||
|
|
||||||
|
editor.putString("git_remote_server", ((EditText) findViewById(R.id.server_url)).getText().toString());
|
||||||
|
editor.putString("git_remote_location", ((EditText) findViewById(R.id.server_path)).getText().toString());
|
||||||
|
editor.putString("git_remote_username", ((EditText) findViewById(R.id.server_user)).getText().toString());
|
||||||
|
editor.putString("git_remote_protocol", protocol);
|
||||||
|
editor.putString("git_remote_auth", connectionMode);
|
||||||
|
editor.putString("git_remote_port", port);
|
||||||
|
editor.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the repository information to the shared preferences settings
|
||||||
|
*
|
||||||
|
* @param view
|
||||||
|
*/
|
||||||
|
public void saveConfiguration(View view) {
|
||||||
|
saveConfiguration();
|
||||||
|
PasswordRepository.addRemote("origin", ((EditText) findViewById(R.id.clone_uri)).getText().toString(), true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clones the repository, the directory exists, deletes it
|
* Clones the repository, the directory exists, deletes it
|
||||||
*
|
*
|
||||||
|
@ -427,7 +453,6 @@ public class GitActivity extends ActionBarActivity {
|
||||||
username = hostname.split("@")[0];
|
username = hostname.split("@")[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (localDir.exists()) {
|
if (localDir.exists()) {
|
||||||
new AlertDialog.Builder(this).
|
new AlertDialog.Builder(this).
|
||||||
setTitle(R.string.dialog_delete_title).
|
setTitle(R.string.dialog_delete_title).
|
||||||
|
@ -468,6 +493,8 @@ public class GitActivity extends ActionBarActivity {
|
||||||
).
|
).
|
||||||
show();
|
show();
|
||||||
} else {
|
} else {
|
||||||
|
saveConfiguration();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
new CloneOperation(localDir, activity)
|
new CloneOperation(localDir, activity)
|
||||||
.setCommand(hostname)
|
.setCommand(hostname)
|
||||||
|
@ -476,54 +503,28 @@ public class GitActivity extends ActionBarActivity {
|
||||||
//This is what happens when jgit fails :(
|
//This is what happens when jgit fails :(
|
||||||
//TODO Handle the diffent cases of exceptions
|
//TODO Handle the diffent cases of exceptions
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
} }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the repository information to the shared preferences settings
|
* Pull the latest changes from the remote repository and merges them locally
|
||||||
*
|
|
||||||
* @param view
|
|
||||||
*/
|
*/
|
||||||
public void saveConfiguration(View view) {
|
|
||||||
// remember the settings
|
|
||||||
SharedPreferences.Editor editor = settings.edit();
|
|
||||||
|
|
||||||
editor.putString("git_remote_server", ((EditText) findViewById(R.id.server_url)).getText().toString());
|
|
||||||
editor.putString("git_remote_location", ((EditText) findViewById(R.id.server_path)).getText().toString());
|
|
||||||
editor.putString("git_remote_username", ((EditText) findViewById(R.id.server_user)).getText().toString());
|
|
||||||
editor.putString("git_remote_protocol", protocol);
|
|
||||||
editor.putString("git_remote_auth", connectionMode);
|
|
||||||
editor.putString("git_remote_port", port);
|
|
||||||
editor.commit();
|
|
||||||
|
|
||||||
PasswordRepository.addRemote("origin", ((EditText) findViewById(R.id.clone_uri)).getText().toString(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cloneOperation(UsernamePasswordCredentialsProvider provider) {
|
|
||||||
|
|
||||||
// remember the settings
|
|
||||||
SharedPreferences.Editor editor = settings.edit();
|
|
||||||
|
|
||||||
editor.putString("git_remote_server", ((EditText) findViewById(R.id.server_url)).getText().toString());
|
|
||||||
editor.putString("git_remote_location", ((EditText) findViewById(R.id.server_path)).getText().toString());
|
|
||||||
editor.putString("git_remote_username", ((EditText) findViewById(R.id.server_user)).getText().toString());
|
|
||||||
editor.putString("git_remote_protocol", protocol);
|
|
||||||
editor.putString("git_remote_auth", connectionMode);
|
|
||||||
editor.putString("git_remote_port", port);
|
|
||||||
editor.commit();
|
|
||||||
|
|
||||||
CloneCommand cmd = Git.cloneRepository().
|
|
||||||
setCredentialsProvider(provider).
|
|
||||||
setCloneAllBranches(true).
|
|
||||||
setDirectory(localDir).
|
|
||||||
setURI(hostname);
|
|
||||||
|
|
||||||
new GitAsyncTask(activity, true, false, CloneCommand.class).execute(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void pullFromRepository() {
|
public void pullFromRepository() {
|
||||||
|
syncRepository(REQUEST_PULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pushes the latest changes from the local repository to the remote one
|
||||||
|
*/
|
||||||
|
public void pushToRepository() {
|
||||||
|
syncRepository(REQUEST_PUSH);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Syncs the local repository with the remote one (either pull or push)
|
||||||
|
* @param operation the operation to execute can be REQUEST_PULL or REQUEST_PUSH
|
||||||
|
*/
|
||||||
|
private void syncRepository(int operation) {
|
||||||
if (settings.getString("git_remote_username", "").isEmpty() ||
|
if (settings.getString("git_remote_username", "").isEmpty() ||
|
||||||
settings.getString("git_remote_server", "").isEmpty() ||
|
settings.getString("git_remote_server", "").isEmpty() ||
|
||||||
settings.getString("git_remote_location", "").isEmpty())
|
settings.getString("git_remote_location", "").isEmpty())
|
||||||
|
@ -549,48 +550,19 @@ public class GitActivity extends ActionBarActivity {
|
||||||
else {
|
else {
|
||||||
// check that the remote origin is here, else add it
|
// check that the remote origin is here, else add it
|
||||||
PasswordRepository.addRemote("origin", hostname, false);
|
PasswordRepository.addRemote("origin", hostname, false);
|
||||||
|
GitOperation op;
|
||||||
|
|
||||||
try {
|
if (operation == REQUEST_PULL) {
|
||||||
new PullOperation(localDir, activity)
|
op = new PullOperation(localDir, activity).setCommand(hostname);
|
||||||
.setCommand(hostname)
|
} else if (operation == REQUEST_PUSH) {
|
||||||
.executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key"));
|
op = new PushOperation(localDir, activity).setCommand(hostname);
|
||||||
} catch (Exception e) {
|
} else {
|
||||||
e.printStackTrace();
|
Log.e(TAG, "Sync operation not recognized : " + operation);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void pushToRepository() {
|
|
||||||
if (settings.getString("git_remote_username", "user").isEmpty() ||
|
|
||||||
settings.getString("git_remote_server", "server.com").trim().isEmpty() ||
|
|
||||||
settings.getString("git_remote_location", "path/to/repository").isEmpty())
|
|
||||||
new AlertDialog.Builder(this)
|
|
||||||
.setMessage("You have to set the information about the server before synchronizing with the server")
|
|
||||||
.setPositiveButton("On my way!", new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
|
||||||
Intent intent = new Intent(activity, UserPreference.class);
|
|
||||||
startActivityForResult(intent, REQUEST_PUSH);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.setNegativeButton("Nah... later", new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
|
||||||
// do nothing :(
|
|
||||||
setResult(RESULT_OK);
|
|
||||||
finish();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.show();
|
|
||||||
|
|
||||||
else {
|
|
||||||
// check that the remote origin is here, else add it
|
|
||||||
PasswordRepository.addRemote("origin", hostname, false);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
new PushOperation(localDir, activity)
|
op.executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key"));
|
||||||
.setCommand(hostname)
|
|
||||||
.executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key"));
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue