Statistics
| Branch: | Revision:

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
}