Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / android / ConfirmResizeActivity.java @ 7dbfc514

History | View | Annotate | Download (4.3 kB)

1
package com.rackspace.cloud.android;
2

    
3
import org.apache.http.HttpResponse;
4

    
5
import android.os.AsyncTask;
6
import android.os.Bundle;
7
import android.view.View;
8
import android.view.View.OnClickListener;
9
import android.view.Window;
10
import android.widget.Button;
11

    
12
import com.rackspace.cloud.android.R;
13
import com.rackspace.cloud.servers.api.client.CloudServersException;
14
import com.rackspace.cloud.servers.api.client.Server;
15
import com.rackspace.cloud.servers.api.client.ServerManager;
16
import com.rackspace.cloud.servers.api.client.http.HttpBundle;
17

    
18
public class ConfirmResizeActivity extends CloudActivity {
19

    
20
        private Server server;
21
        
22
        /** Called when the activity is first created. */
23
        @Override
24
        public void onCreate(Bundle savedInstanceState) {
25
                super.onCreate(savedInstanceState);
26
                requestWindowFeature(Window.FEATURE_NO_TITLE); 
27
                setContentView(R.layout.viewresize);     
28
                server = (Server) this.getIntent().getExtras().get("server");
29
                restoreState(savedInstanceState);
30
        }
31
        
32
        
33
        @Override
34
        protected void onSaveInstanceState(Bundle outState) {
35
                super.onSaveInstanceState(outState);
36
                outState.putSerializable("server", server);
37
        }
38
        
39
        protected void restoreState(Bundle state) {
40
                super.restoreState(state);
41
                if (server == null && state != null && state.containsKey("server")) {
42
                        server = (Server) state.getSerializable("server");
43
                }
44
                setupButtons();
45
        }
46

    
47
        private void setupButtons(){
48
                Button confirm = (Button)findViewById(R.id.confirm_resize_button);
49
                confirm.setOnClickListener(new OnClickListener() {
50

    
51
                        @Override
52
                        public void onClick(View v) {
53
                                new ConfirmResizeTask().execute((Void[]) null);
54
                                finish();
55
                        }
56
                });
57

    
58
                Button rollback = (Button)findViewById(R.id.rollback_server_button);
59
                rollback.setOnClickListener(new OnClickListener() {
60

    
61
                        @Override
62
                        public void onClick(View v) {
63
                                new RollbackResizeTask().execute((Void[]) null);        
64
                                finish();
65
                        }
66
                });
67
        }
68
        
69
        private class ConfirmResizeTask extends AsyncTask<Void, Void, HttpBundle> {
70

    
71
                private CloudServersException exception;
72

    
73
                @Override
74
                //let user know their process has started
75
                protected void onPreExecute(){
76
                        showToast("Confirm process has begun");
77
                }
78

    
79
                @Override
80
                protected HttpBundle doInBackground(Void... arg0) {
81
                        HttpBundle bundle = null;
82
                        try {
83
                                bundle = (new ServerManager()).confirmResize(server, getContext());
84
                        } catch (CloudServersException e) {
85
                                exception = e;
86
                        }
87
                        return bundle;
88
                }
89

    
90
                @Override
91
                protected void onPostExecute(HttpBundle bundle) {
92
                        HttpResponse response = bundle.getResponse();
93
                        if (response != null) {
94
                                int statusCode = response.getStatusLine().getStatusCode();        
95
                                if(statusCode == 204){ showToast("Server resize was successfully confirmed."); }
96
                                else {
97
                                        CloudServersException cse = parseCloudServersException(response);
98
                                        if ("".equals(cse.getMessage())) {
99
                                                showError("There was a problem confirming your resize.", bundle);
100
                                        } else {
101
                                                showError("There was a problem confirming your resize." + cse.getMessage(), bundle);
102
                                        }
103
                                }
104
                        } else if (exception != null) {
105
                                showError("There was a problem confirming your resize." + exception.getMessage(), bundle);
106
                        }
107
                }
108
        }
109
        
110
        
111
        private class RollbackResizeTask extends AsyncTask<Void, Void, HttpBundle> {
112

    
113
                private CloudServersException exception;
114

    
115
                @Override
116
                //let user know their process has started
117
                protected void onPreExecute(){
118
                        showToast("Reverting your server.");
119
                }
120

    
121
                @Override
122
                protected HttpBundle doInBackground(Void... arg0) {
123
                        HttpBundle bundle = null;
124
                        try {
125
                                bundle = (new ServerManager()).revertResize(server, getContext());
126
                        } catch (CloudServersException e) {
127
                                exception = e;
128
                        }
129
                        return bundle;
130
                }
131

    
132
                @Override
133
                protected void onPostExecute(HttpBundle bundle) {
134
                        HttpResponse response = bundle.getResponse();
135
                        if (response != null) {
136
                                int statusCode = response.getStatusLine().getStatusCode();        
137
                                if(statusCode == 202){ showToast("Server was successfully reverted."); }
138
                                else {
139
                                        CloudServersException cse = parseCloudServersException(response);
140
                                        if ("".equals(cse.getMessage())) {
141
                                                showError("There was a problem reverting your server.", bundle);
142
                                        } else {
143
                                                showError("There was a problem reverting your server." + cse.getMessage(), bundle);
144
                                        }
145
                                }
146
                        } else if (exception != null) {
147
                                showError("There was a problem reverting your server." + exception.getMessage(), bundle);
148

    
149
                        }
150
                }
151
        }
152
        
153
}