Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / ConfirmResizeActivity.java @ b2a2d2f1

History | View | Annotate | Download (4.3 kB)

1 51fdecfb Adam Menz
package com.rackspacecloud.android;
2 51fdecfb Adam Menz
3 51fdecfb Adam Menz
import org.apache.http.HttpResponse;
4 51fdecfb Adam Menz
5 51fdecfb Adam Menz
import com.rackspace.cloud.servers.api.client.CloudServersException;
6 51fdecfb Adam Menz
import com.rackspace.cloud.servers.api.client.Server;
7 51fdecfb Adam Menz
import com.rackspace.cloud.servers.api.client.ServerManager;
8 51fdecfb Adam Menz
import com.rackspace.cloud.servers.api.client.http.HttpBundle;
9 51fdecfb Adam Menz
10 51fdecfb Adam Menz
import android.os.AsyncTask;
11 51fdecfb Adam Menz
import android.os.Bundle;
12 51fdecfb Adam Menz
import android.view.View;
13 51fdecfb Adam Menz
import android.view.View.OnClickListener;
14 51fdecfb Adam Menz
import android.view.Window;
15 51fdecfb Adam Menz
import android.widget.Button;
16 51fdecfb Adam Menz
17 6b8dad86 Adam Menz
public class ConfirmResizeActivity extends CloudActivity {
18 51fdecfb Adam Menz
19 51fdecfb Adam Menz
        private Server server;
20 51fdecfb Adam Menz
        
21 51fdecfb Adam Menz
        /** Called when the activity is first created. */
22 51fdecfb Adam Menz
        @Override
23 51fdecfb Adam Menz
        public void onCreate(Bundle savedInstanceState) {
24 51fdecfb Adam Menz
                super.onCreate(savedInstanceState);
25 51fdecfb Adam Menz
                requestWindowFeature(Window.FEATURE_NO_TITLE); 
26 51fdecfb Adam Menz
                setContentView(R.layout.viewresize);     
27 51fdecfb Adam Menz
                server = (Server) this.getIntent().getExtras().get("server");
28 51fdecfb Adam Menz
                restoreState(savedInstanceState);
29 51fdecfb Adam Menz
        }
30 51fdecfb Adam Menz
        
31 6b8dad86 Adam Menz
        
32 51fdecfb Adam Menz
        @Override
33 51fdecfb Adam Menz
        protected void onSaveInstanceState(Bundle outState) {
34 51fdecfb Adam Menz
                super.onSaveInstanceState(outState);
35 51fdecfb Adam Menz
                outState.putSerializable("server", server);
36 51fdecfb Adam Menz
        }
37 51fdecfb Adam Menz
        
38 6b8dad86 Adam Menz
        protected void restoreState(Bundle state) {
39 6b8dad86 Adam Menz
                super.restoreState(state);
40 51fdecfb Adam Menz
                if (server == null && state != null && state.containsKey("server")) {
41 51fdecfb Adam Menz
                        server = (Server) state.getSerializable("server");
42 51fdecfb Adam Menz
                }
43 51fdecfb Adam Menz
                setupButtons();
44 51fdecfb Adam Menz
        }
45 51fdecfb Adam Menz
46 51fdecfb Adam Menz
        private void setupButtons(){
47 51fdecfb Adam Menz
                Button confirm = (Button)findViewById(R.id.confirm_resize_button);
48 51fdecfb Adam Menz
                confirm.setOnClickListener(new OnClickListener() {
49 51fdecfb Adam Menz
50 51fdecfb Adam Menz
                        @Override
51 51fdecfb Adam Menz
                        public void onClick(View v) {
52 51fdecfb Adam Menz
                                new ConfirmResizeTask().execute((Void[]) null);
53 51fdecfb Adam Menz
                                finish();
54 51fdecfb Adam Menz
                        }
55 51fdecfb Adam Menz
                });
56 51fdecfb Adam Menz
57 51fdecfb Adam Menz
                Button rollback = (Button)findViewById(R.id.rollback_server_button);
58 51fdecfb Adam Menz
                rollback.setOnClickListener(new OnClickListener() {
59 51fdecfb Adam Menz
60 51fdecfb Adam Menz
                        @Override
61 51fdecfb Adam Menz
                        public void onClick(View v) {
62 51fdecfb Adam Menz
                                new RollbackResizeTask().execute((Void[]) null);        
63 51fdecfb Adam Menz
                                finish();
64 51fdecfb Adam Menz
                        }
65 51fdecfb Adam Menz
                });
66 51fdecfb Adam Menz
        }
67 51fdecfb Adam Menz
        
68 51fdecfb Adam Menz
        private class ConfirmResizeTask extends AsyncTask<Void, Void, HttpBundle> {
69 51fdecfb Adam Menz
70 51fdecfb Adam Menz
                private CloudServersException exception;
71 51fdecfb Adam Menz
72 51fdecfb Adam Menz
                @Override
73 51fdecfb Adam Menz
                //let user know their process has started
74 51fdecfb Adam Menz
                protected void onPreExecute(){
75 51fdecfb Adam Menz
                        showToast("Confirm process has begun");
76 51fdecfb Adam Menz
                }
77 51fdecfb Adam Menz
78 51fdecfb Adam Menz
                @Override
79 51fdecfb Adam Menz
                protected HttpBundle doInBackground(Void... arg0) {
80 51fdecfb Adam Menz
                        HttpBundle bundle = null;
81 51fdecfb Adam Menz
                        try {
82 6b8dad86 Adam Menz
                                bundle = (new ServerManager()).confirmResize(server, getContext());
83 51fdecfb Adam Menz
                        } catch (CloudServersException e) {
84 51fdecfb Adam Menz
                                exception = e;
85 51fdecfb Adam Menz
                        }
86 51fdecfb Adam Menz
                        return bundle;
87 51fdecfb Adam Menz
                }
88 51fdecfb Adam Menz
89 51fdecfb Adam Menz
                @Override
90 51fdecfb Adam Menz
                protected void onPostExecute(HttpBundle bundle) {
91 51fdecfb Adam Menz
                        HttpResponse response = bundle.getResponse();
92 51fdecfb Adam Menz
                        if (response != null) {
93 51fdecfb Adam Menz
                                int statusCode = response.getStatusLine().getStatusCode();        
94 51fdecfb Adam Menz
                                if(statusCode == 204){ showToast("Server resize was successfully confirmed."); }
95 51fdecfb Adam Menz
                                else {
96 51fdecfb Adam Menz
                                        CloudServersException cse = parseCloudServersException(response);
97 51fdecfb Adam Menz
                                        if ("".equals(cse.getMessage())) {
98 6b8dad86 Adam Menz
                                                showError("There was a problem confirming your resize.", bundle);
99 51fdecfb Adam Menz
                                        } else {
100 6b8dad86 Adam Menz
                                                showError("There was a problem confirming your resize." + cse.getMessage(), bundle);
101 51fdecfb Adam Menz
                                        }
102 51fdecfb Adam Menz
                                }
103 51fdecfb Adam Menz
                        } else if (exception != null) {
104 6b8dad86 Adam Menz
                                showError("There was a problem confirming your resize." + exception.getMessage(), bundle);
105 51fdecfb Adam Menz
                        }
106 51fdecfb Adam Menz
                }
107 51fdecfb Adam Menz
        }
108 51fdecfb Adam Menz
        
109 51fdecfb Adam Menz
        
110 51fdecfb Adam Menz
        private class RollbackResizeTask extends AsyncTask<Void, Void, HttpBundle> {
111 51fdecfb Adam Menz
112 51fdecfb Adam Menz
                private CloudServersException exception;
113 51fdecfb Adam Menz
114 51fdecfb Adam Menz
                @Override
115 51fdecfb Adam Menz
                //let user know their process has started
116 51fdecfb Adam Menz
                protected void onPreExecute(){
117 51fdecfb Adam Menz
                        showToast("Reverting your server.");
118 51fdecfb Adam Menz
                }
119 51fdecfb Adam Menz
120 51fdecfb Adam Menz
                @Override
121 51fdecfb Adam Menz
                protected HttpBundle doInBackground(Void... arg0) {
122 51fdecfb Adam Menz
                        HttpBundle bundle = null;
123 51fdecfb Adam Menz
                        try {
124 6b8dad86 Adam Menz
                                bundle = (new ServerManager()).revertResize(server, getContext());
125 51fdecfb Adam Menz
                        } catch (CloudServersException e) {
126 51fdecfb Adam Menz
                                exception = e;
127 51fdecfb Adam Menz
                        }
128 51fdecfb Adam Menz
                        return bundle;
129 51fdecfb Adam Menz
                }
130 51fdecfb Adam Menz
131 51fdecfb Adam Menz
                @Override
132 51fdecfb Adam Menz
                protected void onPostExecute(HttpBundle bundle) {
133 51fdecfb Adam Menz
                        HttpResponse response = bundle.getResponse();
134 51fdecfb Adam Menz
                        if (response != null) {
135 51fdecfb Adam Menz
                                int statusCode = response.getStatusLine().getStatusCode();        
136 51fdecfb Adam Menz
                                if(statusCode == 202){ showToast("Server was successfully reverted."); }
137 51fdecfb Adam Menz
                                else {
138 51fdecfb Adam Menz
                                        CloudServersException cse = parseCloudServersException(response);
139 51fdecfb Adam Menz
                                        if ("".equals(cse.getMessage())) {
140 6b8dad86 Adam Menz
                                                showError("There was a problem reverting your server.", bundle);
141 51fdecfb Adam Menz
                                        } else {
142 6b8dad86 Adam Menz
                                                showError("There was a problem reverting your server." + cse.getMessage(), bundle);
143 51fdecfb Adam Menz
                                        }
144 51fdecfb Adam Menz
                                }
145 51fdecfb Adam Menz
                        } else if (exception != null) {
146 6b8dad86 Adam Menz
                                showError("There was a problem reverting your server." + exception.getMessage(), bundle);
147 51fdecfb Adam Menz
148 51fdecfb Adam Menz
                        }
149 51fdecfb Adam Menz
                }
150 51fdecfb Adam Menz
        }
151 51fdecfb Adam Menz
        
152 51fdecfb Adam Menz
}