Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / ConfirmResizeActivity.java @ 6b8dad86

History | View | Annotate | Download (4.3 kB)

1
package com.rackspacecloud.android;
2

    
3
import org.apache.http.HttpResponse;
4

    
5
import com.rackspace.cloud.servers.api.client.CloudServersException;
6
import com.rackspace.cloud.servers.api.client.Server;
7
import com.rackspace.cloud.servers.api.client.ServerManager;
8
import com.rackspace.cloud.servers.api.client.http.HttpBundle;
9

    
10
import android.os.AsyncTask;
11
import android.os.Bundle;
12
import android.view.View;
13
import android.view.View.OnClickListener;
14
import android.view.Window;
15
import android.widget.Button;
16

    
17
public class ConfirmResizeActivity extends CloudActivity {
18

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

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

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

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

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

    
70
                private CloudServersException exception;
71

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

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

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

    
112
                private CloudServersException exception;
113

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

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

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

    
148
                        }
149
                }
150
        }
151
        
152
}