root / src / com / rackspacecloud / android / EnableCDNActivity.java @ 5018a7f8
History | View | Annotate | Download (8.1 kB)
1 |
package com.rackspacecloud.android; |
---|---|
2 |
|
3 |
import org.apache.http.HttpResponse; |
4 |
|
5 |
import android.app.Activity; |
6 |
import android.app.AlertDialog; |
7 |
import android.app.Dialog; |
8 |
import android.content.DialogInterface; |
9 |
import android.os.AsyncTask; |
10 |
import android.os.Bundle; |
11 |
import android.view.View; |
12 |
import android.view.View.OnClickListener; |
13 |
import android.widget.AdapterView; |
14 |
import android.widget.ArrayAdapter; |
15 |
import android.widget.Button; |
16 |
import android.widget.Spinner; |
17 |
import android.widget.AdapterView.OnItemSelectedListener; |
18 |
|
19 |
import com.rackspace.cloud.files.api.client.ContainerManager; |
20 |
import com.rackspace.cloud.servers.api.client.CloudServersException; |
21 |
import com.rackspace.cloud.servers.api.client.http.HttpBundle; |
22 |
|
23 |
public class EnableCDNActivity extends CloudActivity implements OnClickListener, |
24 |
OnItemSelectedListener { |
25 |
|
26 |
public static String containerName = null; |
27 |
private String selectedTtlId; |
28 |
private String selectedLogRetId; |
29 |
private String selectedCdnId; |
30 |
private Spinner ttlSpinner;
|
31 |
private Spinner logRetSpinner;
|
32 |
private Spinner cdnSpinner;
|
33 |
|
34 |
/** Called when the activity is first created. */
|
35 |
@Override
|
36 |
public void onCreate(Bundle savedInstanceState) { |
37 |
super.onCreate(savedInstanceState);
|
38 |
trackPageView(GoogleAnalytics.PAGE_CONTAINER_DETAILS); |
39 |
setContentView(R.layout.enable_cdn_container); |
40 |
containerName = (String) this.getIntent().getExtras().get("Cname"); |
41 |
restoreState(savedInstanceState); |
42 |
} |
43 |
|
44 |
protected void restoreState(Bundle state){ |
45 |
super.restoreState(state);
|
46 |
setupButtons(); |
47 |
loadTtlSpinner(); |
48 |
loadLogRetSpinner(); |
49 |
loadCdnSpinner(); |
50 |
} |
51 |
|
52 |
private void setupButton(int resourceId, OnClickListener onClickListener) { |
53 |
Button button = (Button) findViewById(resourceId); |
54 |
button.setOnClickListener(onClickListener); |
55 |
} |
56 |
|
57 |
private void setupButtons() { |
58 |
setupButton(R.id.enable_button, new OnClickListener() {
|
59 |
public void onClick(View v) { |
60 |
showDialog(R.id.enable_button); |
61 |
} |
62 |
}); |
63 |
|
64 |
setupButton(R.id.disable_button, new OnClickListener() {
|
65 |
public void onClick(View v) { |
66 |
showDialog(R.id.disable_button); |
67 |
} |
68 |
}); |
69 |
} |
70 |
|
71 |
private void loadCdnSpinner() { |
72 |
cdnSpinner = (Spinner) findViewById(R.id.cdn_spinner); |
73 |
cdnSpinner.setOnItemSelectedListener(this);
|
74 |
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
|
75 |
this, R.array.cdn, android.R.layout.simple_spinner_item);
|
76 |
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
77 |
cdnSpinner.setAdapter(adapter); |
78 |
|
79 |
} |
80 |
|
81 |
private void loadTtlSpinner() { |
82 |
ttlSpinner = (Spinner) findViewById(R.id.ttl_spinner); |
83 |
ttlSpinner.setOnItemSelectedListener(this);
|
84 |
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
|
85 |
this, R.array.ttl, android.R.layout.simple_spinner_item);
|
86 |
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
87 |
ttlSpinner.setAdapter(adapter); |
88 |
|
89 |
} |
90 |
|
91 |
private void loadLogRetSpinner() { |
92 |
logRetSpinner = (Spinner) findViewById(R.id.log_retention_spinner); |
93 |
logRetSpinner.setOnItemSelectedListener(this);
|
94 |
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
|
95 |
this, R.array.logRet, android.R.layout.simple_spinner_item);
|
96 |
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
97 |
logRetSpinner.setAdapter(adapter); |
98 |
|
99 |
} |
100 |
|
101 |
public void onItemSelected(AdapterView<?> parent, View view, int id, |
102 |
long arg3) {
|
103 |
if (parent == cdnSpinner) {
|
104 |
selectedCdnId = cdnSpinner.getSelectedItem().toString(); |
105 |
} |
106 |
if (parent == ttlSpinner) {
|
107 |
selectedTtlId = ttlSpinner.getSelectedItem().toString(); |
108 |
} else if (parent == logRetSpinner) { |
109 |
selectedLogRetId = logRetSpinner.getSelectedItem().toString(); |
110 |
} |
111 |
} |
112 |
|
113 |
public void onNothingSelected(AdapterView<?> parent) { |
114 |
|
115 |
} |
116 |
|
117 |
@Override
|
118 |
protected Dialog onCreateDialog(int id) { |
119 |
switch (id) {
|
120 |
case R.id.enable_button:
|
121 |
return new AlertDialog.Builder(EnableCDNActivity.this) |
122 |
.setIcon(R.drawable.alert_dialog_icon) |
123 |
.setTitle("Enable CDN")
|
124 |
.setMessage( |
125 |
"Are you sure you want to enable CDN on this container?")
|
126 |
.setPositiveButton("Enable CDN",
|
127 |
new DialogInterface.OnClickListener() {
|
128 |
public void onClick(DialogInterface dialog, |
129 |
int whichButton) {
|
130 |
// User clicked OK so do some stuff
|
131 |
trackEvent(GoogleAnalytics.CATEGORY_CONTAINER, GoogleAnalytics.EVENT_UPDATED, "", -1); |
132 |
new EnableCDNTask().execute((Void[]) null); |
133 |
} |
134 |
}) |
135 |
.setNegativeButton("Cancel",
|
136 |
new DialogInterface.OnClickListener() {
|
137 |
public void onClick(DialogInterface dialog, |
138 |
int whichButton) {
|
139 |
// User clicked Cancel so do some stuff
|
140 |
} |
141 |
}).create(); |
142 |
case R.id.disable_button:
|
143 |
return new AlertDialog.Builder(EnableCDNActivity.this) |
144 |
.setIcon(R.drawable.alert_dialog_icon) |
145 |
.setTitle("Change Attributes")
|
146 |
.setMessage( |
147 |
"Are you sure you want to disable CDN, and/or change attributes?")
|
148 |
.setPositiveButton("Change Attributes",
|
149 |
new DialogInterface.OnClickListener() {
|
150 |
public void onClick(DialogInterface dialog, |
151 |
int whichButton) {
|
152 |
// User clicked OK so do some stuff
|
153 |
trackEvent(GoogleAnalytics.CATEGORY_CONTAINER, GoogleAnalytics.EVENT_UPDATED, "", -1); |
154 |
new ChangeAttributesCDNTask().execute((Void[]) null); |
155 |
} |
156 |
}) |
157 |
.setNegativeButton("Cancel",
|
158 |
new DialogInterface.OnClickListener() {
|
159 |
public void onClick(DialogInterface dialog, |
160 |
int whichButton) {
|
161 |
// User clicked Cancel so do some stuff
|
162 |
} |
163 |
}).create(); |
164 |
} |
165 |
return null; |
166 |
} |
167 |
|
168 |
public class EnableCDNTask extends AsyncTask<Void, Void, HttpBundle> { |
169 |
private CloudServersException exception;
|
170 |
|
171 |
@Override
|
172 |
protected HttpBundle doInBackground(Void... arg0) { |
173 |
HttpBundle bundle = null;
|
174 |
try {
|
175 |
bundle = (new ContainerManager(getContext())).enable(containerName,
|
176 |
selectedTtlId, selectedLogRetId); |
177 |
} catch (CloudServersException e) {
|
178 |
exception = e; |
179 |
} |
180 |
return bundle;
|
181 |
} |
182 |
|
183 |
@Override
|
184 |
protected void onPostExecute(HttpBundle bundle) { |
185 |
HttpResponse response = bundle.getResponse(); |
186 |
if (response != null) { |
187 |
int statusCode = response.getStatusLine().getStatusCode();
|
188 |
if (statusCode == 201) { |
189 |
setResult(Activity.RESULT_OK); |
190 |
finish(); |
191 |
} else if (statusCode == 202) { |
192 |
showToast("Accepted, container is already cdn enabled");
|
193 |
finish(); |
194 |
} else {
|
195 |
CloudServersException cse = parseCloudServersException(response); |
196 |
if ("".equals(cse.getMessage())) { |
197 |
showError("There was a problem creating your container.", bundle);
|
198 |
} else {
|
199 |
showError("There was a problem creating your container: "
|
200 |
+ cse.getMessage() |
201 |
+ " Check container name and try again", bundle);
|
202 |
} |
203 |
} |
204 |
} else if (exception != null) { |
205 |
showError("There was a problem creating your container: "
|
206 |
+ exception.getMessage() |
207 |
+ " Check container name and try again", bundle);
|
208 |
} |
209 |
} |
210 |
} |
211 |
|
212 |
public class ChangeAttributesCDNTask extends AsyncTask<Void, Void, HttpBundle> { |
213 |
private CloudServersException exception;
|
214 |
|
215 |
@Override
|
216 |
protected HttpBundle doInBackground(Void... arg0) { |
217 |
HttpBundle bundle = null;
|
218 |
try {
|
219 |
bundle = (new ContainerManager(getContext())).disable(containerName,
|
220 |
selectedCdnId, selectedTtlId, selectedLogRetId); |
221 |
} catch (CloudServersException e) {
|
222 |
exception = e; |
223 |
} |
224 |
return bundle;
|
225 |
} |
226 |
|
227 |
@Override
|
228 |
protected void onPostExecute(HttpBundle bundle) { |
229 |
HttpResponse response = bundle.getResponse(); |
230 |
if (response != null) { |
231 |
int statusCode = response.getStatusLine().getStatusCode();
|
232 |
if (statusCode == 202) { |
233 |
setResult(Activity.RESULT_OK); |
234 |
finish(); |
235 |
} else {
|
236 |
CloudServersException cse = parseCloudServersException(response); |
237 |
if ("".equals(cse.getMessage())) { |
238 |
showError("There was a problem creating your container.", bundle);
|
239 |
} else {
|
240 |
showError("There was a problem creating your container: "
|
241 |
+ cse.getMessage() |
242 |
+ " Check container name and try again", bundle);
|
243 |
} |
244 |
} |
245 |
} else if (exception != null) { |
246 |
showError("There was a problem creating your container: "
|
247 |
+ exception.getMessage() |
248 |
+ " Check container name and try again", bundle);
|
249 |
} |
250 |
} |
251 |
} |
252 |
|
253 |
public void onClick(View v) { |
254 |
// TODO Auto-generated method stub
|
255 |
|
256 |
} |
257 |
|
258 |
} |