root / src / com / rackspace / cloud / android / BackupServerActivity.java @ 9c74202f
History | View | Annotate | Download (6.3 kB)
1 | 7dbfc514 | koutsoub | package com.rackspace.cloud.android; |
---|---|---|---|
2 | f58bf9f4 | Adam Menz | |
3 | f58bf9f4 | Adam Menz | import org.apache.http.HttpResponse; |
4 | f58bf9f4 | Adam Menz | |
5 | f58bf9f4 | Adam Menz | import android.os.AsyncTask; |
6 | f58bf9f4 | Adam Menz | import android.os.Bundle; |
7 | f58bf9f4 | Adam Menz | import android.view.View; |
8 | f58bf9f4 | Adam Menz | import android.view.View.OnClickListener; |
9 | f58bf9f4 | Adam Menz | import android.widget.AdapterView; |
10 | f58bf9f4 | Adam Menz | import android.widget.AdapterView.OnItemSelectedListener; |
11 | f58bf9f4 | Adam Menz | import android.widget.ArrayAdapter; |
12 | f58bf9f4 | Adam Menz | import android.widget.Button; |
13 | f58bf9f4 | Adam Menz | import android.widget.CheckBox; |
14 | f58bf9f4 | Adam Menz | import android.widget.Spinner; |
15 | f58bf9f4 | Adam Menz | |
16 | 48601850 | Mike Mayo | import com.rackspace.cloud.android.R; |
17 | 48601850 | Mike Mayo | import com.rackspace.cloud.servers.api.client.Backup; |
18 | 48601850 | Mike Mayo | import com.rackspace.cloud.servers.api.client.BackupManager; |
19 | 48601850 | Mike Mayo | import com.rackspace.cloud.servers.api.client.CloudServersException; |
20 | 48601850 | Mike Mayo | import com.rackspace.cloud.servers.api.client.Server; |
21 | 48601850 | Mike Mayo | import com.rackspace.cloud.servers.api.client.ServerManager; |
22 | 48601850 | Mike Mayo | import com.rackspace.cloud.servers.api.client.http.HttpBundle; |
23 | 48601850 | Mike Mayo | |
24 | 6b8dad86 | Adam Menz | public class BackupServerActivity extends CloudActivity implements OnItemSelectedListener, OnClickListener { |
25 | 1a79c76b | Adam Menz | |
26 | f58bf9f4 | Adam Menz | private Server server;
|
27 | 1a79c76b | Adam Menz | private Backup backup;
|
28 | f58bf9f4 | Adam Menz | private Spinner weeklyBackupSpinner;
|
29 | f58bf9f4 | Adam Menz | private Spinner dailyBackupSpinner;
|
30 | f58bf9f4 | Adam Menz | private CheckBox enableCheckBox;
|
31 | f58bf9f4 | Adam Menz | private String selectedWeeklyBackup; |
32 | f58bf9f4 | Adam Menz | private String selectedDailyBackup; |
33 | 1a79c76b | Adam Menz | |
34 | f58bf9f4 | Adam Menz | /** Called when the activity is first created. */
|
35 | 1a79c76b | Adam Menz | @Override
|
36 | 1a79c76b | Adam Menz | public void onCreate(Bundle savedInstanceState) { |
37 | 1a79c76b | Adam Menz | super.onCreate(savedInstanceState);
|
38 | 1a79c76b | Adam Menz | restoreState(savedInstanceState); |
39 | 1a79c76b | Adam Menz | } |
40 | 1a79c76b | Adam Menz | |
41 | 1a79c76b | Adam Menz | protected void restoreState(Bundle state){ |
42 | 6b8dad86 | Adam Menz | super.restoreState(state);
|
43 | 6b8dad86 | Adam Menz | server = (Server) this.getIntent().getExtras().get("server"); |
44 | 1a79c76b | Adam Menz | setContentView(R.layout.viewbackup); |
45 | 1a79c76b | Adam Menz | setupSpinners(); |
46 | 1a79c76b | Adam Menz | setupButtons(); |
47 | 1a79c76b | Adam Menz | setupCheckBox(); |
48 | 1a79c76b | Adam Menz | |
49 | 1a79c76b | Adam Menz | if(state != null && state.containsKey("backup")){ |
50 | 1a79c76b | Adam Menz | backup = (Backup)state.getSerializable("backup");
|
51 | 1a79c76b | Adam Menz | if(backup == null){ |
52 | 1a79c76b | Adam Menz | loadData(); |
53 | 1a79c76b | Adam Menz | } else {
|
54 | 1a79c76b | Adam Menz | displayData(); |
55 | 1a79c76b | Adam Menz | } |
56 | 1a79c76b | Adam Menz | } else {
|
57 | 1a79c76b | Adam Menz | loadData(); |
58 | 1a79c76b | Adam Menz | } |
59 | 1a79c76b | Adam Menz | } |
60 | 1a79c76b | Adam Menz | |
61 | 1a79c76b | Adam Menz | @Override
|
62 | 1a79c76b | Adam Menz | protected void onSaveInstanceState(Bundle state){ |
63 | 1a79c76b | Adam Menz | state.putSerializable("backup", backup);
|
64 | 1a79c76b | Adam Menz | } |
65 | 1a79c76b | Adam Menz | |
66 | 1a79c76b | Adam Menz | private void setupSpinners(){ |
67 | 1a79c76b | Adam Menz | weeklyBackupSpinner = (Spinner) findViewById(R.id.weekly_backup_spinner); |
68 | 1a79c76b | Adam Menz | ArrayAdapter<CharSequence> weeklyAdapter = ArrayAdapter.createFromResource(this, R.array.weeklyBackupValues, android.R.layout.simple_spinner_item); |
69 | 1a79c76b | Adam Menz | weeklyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
70 | 1a79c76b | Adam Menz | weeklyBackupSpinner.setAdapter(weeklyAdapter); |
71 | 1a79c76b | Adam Menz | weeklyBackupSpinner.setOnItemSelectedListener(this);
|
72 | 1a79c76b | Adam Menz | |
73 | 1a79c76b | Adam Menz | |
74 | 1a79c76b | Adam Menz | dailyBackupSpinner = (Spinner) findViewById(R.id.daily_backup_spinner); |
75 | 1a79c76b | Adam Menz | ArrayAdapter<CharSequence> dailyAdapter = ArrayAdapter.createFromResource(this, R.array.dailyBackupValues, android.R.layout.simple_spinner_item); |
76 | 1a79c76b | Adam Menz | dailyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
77 | 1a79c76b | Adam Menz | dailyBackupSpinner.setAdapter(dailyAdapter); |
78 | 1a79c76b | Adam Menz | dailyBackupSpinner.setOnItemSelectedListener(this);
|
79 | 6b8dad86 | Adam Menz | } |
80 | f58bf9f4 | Adam Menz | |
81 | f58bf9f4 | Adam Menz | private void setupButtons() { |
82 | f58bf9f4 | Adam Menz | Button update = (Button) findViewById(R.id.backup_update_button); |
83 | f58bf9f4 | Adam Menz | update.setOnClickListener(this);
|
84 | f58bf9f4 | Adam Menz | } |
85 | 1a79c76b | Adam Menz | |
86 | f58bf9f4 | Adam Menz | private void setupCheckBox(){ |
87 | f58bf9f4 | Adam Menz | enableCheckBox = (CheckBox) findViewById(R.id.enable_backup_checkbox); |
88 | f58bf9f4 | Adam Menz | } |
89 | 1a79c76b | Adam Menz | |
90 | 1a79c76b | Adam Menz | private void displayData(){ |
91 | 1a79c76b | Adam Menz | if(backup != null){ |
92 | 1a79c76b | Adam Menz | enableCheckBox.setChecked(backup.getEnable()); |
93 | 1a79c76b | Adam Menz | |
94 | 1a79c76b | Adam Menz | if(backup.getWeekly() != null){ |
95 | 1a79c76b | Adam Menz | weeklyBackupSpinner.setSelection(Backup.getWeeklyIndex(backup.getWeekly())); |
96 | 1a79c76b | Adam Menz | } |
97 | 1a79c76b | Adam Menz | |
98 | 1a79c76b | Adam Menz | if(backup.getDaily() != null){ |
99 | 1a79c76b | Adam Menz | dailyBackupSpinner.setSelection(Backup.getDailyIndex(backup.getDaily())); |
100 | 1a79c76b | Adam Menz | } |
101 | 1a79c76b | Adam Menz | } |
102 | 1a79c76b | Adam Menz | } |
103 | 1a79c76b | Adam Menz | |
104 | f58bf9f4 | Adam Menz | public void onClick(View v) { |
105 | 32731215 | Adam Menz | /*
|
106 | 32731215 | Adam Menz | * server maybe null if another task is
|
107 | 32731215 | Adam Menz | * currently processing
|
108 | 32731215 | Adam Menz | */
|
109 | 32731215 | Adam Menz | if(server == null){ |
110 | 32731215 | Adam Menz | showAlert("Error", "Server is busy."); |
111 | 32731215 | Adam Menz | } |
112 | 32731215 | Adam Menz | else{
|
113 | 5018a7f8 | Adam Menz | trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_BACKUP, "", -1); |
114 | 32731215 | Adam Menz | new BackupServerTask().execute((Void[]) null); |
115 | 32731215 | Adam Menz | } |
116 | f58bf9f4 | Adam Menz | } |
117 | f58bf9f4 | Adam Menz | |
118 | f58bf9f4 | Adam Menz | public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
119 | f58bf9f4 | Adam Menz | if(parent == weeklyBackupSpinner){
|
120 | f58bf9f4 | Adam Menz | selectedWeeklyBackup = Backup.getWeeklyValue(pos); |
121 | f58bf9f4 | Adam Menz | } |
122 | f58bf9f4 | Adam Menz | if(parent == dailyBackupSpinner){
|
123 | f58bf9f4 | Adam Menz | selectedDailyBackup = Backup.getDailyValue(pos); |
124 | f58bf9f4 | Adam Menz | } |
125 | f58bf9f4 | Adam Menz | } |
126 | f58bf9f4 | Adam Menz | |
127 | f58bf9f4 | Adam Menz | public void onNothingSelected(AdapterView<?> parent) { |
128 | f58bf9f4 | Adam Menz | //do nothing
|
129 | f58bf9f4 | Adam Menz | } |
130 | 1a79c76b | Adam Menz | |
131 | 1a79c76b | Adam Menz | private void loadData(){ |
132 | 1a79c76b | Adam Menz | new GetBackUpTask().execute((Void[]) null); |
133 | 1a79c76b | Adam Menz | } |
134 | 1a79c76b | Adam Menz | |
135 | 1a79c76b | Adam Menz | private class GetBackUpTask extends AsyncTask<Void, Void, Backup> { |
136 | 1a79c76b | Adam Menz | |
137 | 1a79c76b | Adam Menz | private CloudServersException exception;
|
138 | 1a79c76b | Adam Menz | |
139 | 1a79c76b | Adam Menz | @Override
|
140 | 1a79c76b | Adam Menz | //let user know their process has started
|
141 | 1a79c76b | Adam Menz | protected void onPreExecute(){ |
142 | 1a79c76b | Adam Menz | showDialog(); |
143 | 1a79c76b | Adam Menz | } |
144 | 1a79c76b | Adam Menz | |
145 | 1a79c76b | Adam Menz | @Override
|
146 | 1a79c76b | Adam Menz | protected Backup doInBackground(Void... arg0) { |
147 | 1a79c76b | Adam Menz | try {
|
148 | 1a79c76b | Adam Menz | return (new BackupManager()).getBackup(server, getContext()); |
149 | 1a79c76b | Adam Menz | } catch (CloudServersException e) {
|
150 | 1a79c76b | Adam Menz | exception = e; |
151 | 1a79c76b | Adam Menz | } |
152 | 1a79c76b | Adam Menz | return null; |
153 | 1a79c76b | Adam Menz | } |
154 | 1a79c76b | Adam Menz | |
155 | 1a79c76b | Adam Menz | @Override
|
156 | 1a79c76b | Adam Menz | protected void onPostExecute(Backup result) { |
157 | 1a79c76b | Adam Menz | hideDialog(); |
158 | 1a79c76b | Adam Menz | if (exception != null) { |
159 | 1a79c76b | Adam Menz | showAlert("Error", exception.getMessage());
|
160 | 1a79c76b | Adam Menz | } else {
|
161 | 1a79c76b | Adam Menz | backup = new Backup();
|
162 | 1a79c76b | Adam Menz | backup.setEnabled(result.getEnable()); |
163 | 1a79c76b | Adam Menz | backup.setWeekly(result.getWeekly()); |
164 | 1a79c76b | Adam Menz | backup.setDaily(result.getDaily()); |
165 | 1a79c76b | Adam Menz | displayData(); |
166 | 1a79c76b | Adam Menz | } |
167 | 1a79c76b | Adam Menz | } |
168 | 1a79c76b | Adam Menz | } |
169 | 1a79c76b | Adam Menz | |
170 | 32731215 | Adam Menz | private class BackupServerTask extends AsyncTask<Void, Void, HttpBundle> { |
171 | 1a79c76b | Adam Menz | |
172 | f58bf9f4 | Adam Menz | private CloudServersException exception;
|
173 | 1a79c76b | Adam Menz | |
174 | f58bf9f4 | Adam Menz | @Override
|
175 | d88d3ae1 | Adam Menz | //let user know their process has started
|
176 | d88d3ae1 | Adam Menz | protected void onPreExecute(){ |
177 | d88d3ae1 | Adam Menz | showToast("Changing backup schedule process has begun");
|
178 | d88d3ae1 | Adam Menz | } |
179 | 1a79c76b | Adam Menz | |
180 | d88d3ae1 | Adam Menz | @Override
|
181 | 32731215 | Adam Menz | protected HttpBundle doInBackground(Void... arg0) { |
182 | 32731215 | Adam Menz | HttpBundle bundle = null;
|
183 | f58bf9f4 | Adam Menz | try {
|
184 | 32731215 | Adam Menz | bundle = (new ServerManager()).backup(server, selectedWeeklyBackup, selectedDailyBackup, enableCheckBox.isChecked(), getApplicationContext());
|
185 | f58bf9f4 | Adam Menz | } catch (CloudServersException e) {
|
186 | f58bf9f4 | Adam Menz | exception = e; |
187 | f58bf9f4 | Adam Menz | } |
188 | 32731215 | Adam Menz | return bundle;
|
189 | f58bf9f4 | Adam Menz | } |
190 | 1a79c76b | Adam Menz | |
191 | f58bf9f4 | Adam Menz | @Override
|
192 | 32731215 | Adam Menz | protected void onPostExecute(HttpBundle bundle) { |
193 | 32731215 | Adam Menz | HttpResponse response = bundle.getResponse(); |
194 | f58bf9f4 | Adam Menz | if (response != null) { |
195 | f58bf9f4 | Adam Menz | int statusCode = response.getStatusLine().getStatusCode();
|
196 | 3d6c2d1a | Adam Menz | if(statusCode == 204 || statusCode == 202){ |
197 | d88d3ae1 | Adam Menz | showToast("The server's backup schedule has been change.");
|
198 | 3d6c2d1a | Adam Menz | finish(); |
199 | 3d6c2d1a | Adam Menz | } |
200 | 3d6c2d1a | Adam Menz | else if (statusCode != 204 && statusCode != 202) { |
201 | f58bf9f4 | Adam Menz | CloudServersException cse = parseCloudServersException(response); |
202 | f58bf9f4 | Adam Menz | if ("".equals(cse.getMessage())) { |
203 | 6b8dad86 | Adam Menz | showError("There was a problem changing the backup schedule.", bundle);
|
204 | f58bf9f4 | Adam Menz | } else {
|
205 | 6b8dad86 | Adam Menz | showError("There was a problem changing the backup schedule: " + cse.getMessage() + " " + statusCode, bundle); |
206 | f58bf9f4 | Adam Menz | } |
207 | f58bf9f4 | Adam Menz | } |
208 | f58bf9f4 | Adam Menz | } else if (exception != null) { |
209 | 6b8dad86 | Adam Menz | showError("There was a problem changing the backup schedule: " + exception.getMessage(), bundle);
|
210 | 1a79c76b | Adam Menz | |
211 | f58bf9f4 | Adam Menz | } |
212 | f58bf9f4 | Adam Menz | } |
213 | 1a79c76b | Adam Menz | } |
214 | f58bf9f4 | Adam Menz | } |