Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / AddContainerActivity.java @ 28dc0ca1

History | View | Annotate | Download (5.2 kB)

1
package com.rackspacecloud.android;
2

    
3
import java.io.IOException;
4
import java.io.StringReader;
5

    
6
import javax.xml.parsers.FactoryConfigurationError;
7
import javax.xml.parsers.ParserConfigurationException;
8
import javax.xml.parsers.SAXParser;
9
import javax.xml.parsers.SAXParserFactory;
10

    
11
import org.apache.http.HttpResponse;
12
import org.apache.http.client.ClientProtocolException;
13
import org.apache.http.impl.client.BasicResponseHandler;
14
import org.xml.sax.InputSource;
15
import org.xml.sax.SAXException;
16
import org.xml.sax.XMLReader;
17

    
18
import android.app.Activity;
19
import android.app.AlertDialog;
20
import android.content.DialogInterface;
21
import android.os.AsyncTask;
22
import android.os.Bundle;
23
import android.view.View;
24
import android.view.View.OnClickListener;
25
import android.widget.Button;
26
import android.widget.EditText;
27
import android.widget.ProgressBar;
28
import android.widget.TextView;
29

    
30
import com.rackspace.cloud.files.api.client.ContainerManager;
31
import com.rackspace.cloud.servers.api.client.CloudServersException;
32
import com.rackspace.cloud.servers.api.client.parsers.CloudServersFaultXMLParser;
33
/** 
34
 * 
35
 * @author Phillip Toohill
36
 *
37
 */
38
public class AddContainerActivity extends Activity implements  OnClickListener {
39

    
40
        
41
        private EditText fileName;        
42
        
43
    /** Called when the activity is first created. */
44
    @Override
45
    public void onCreate(Bundle savedInstanceState) {
46
        super.onCreate(savedInstanceState);
47
        setContentView(R.layout.createcontainer);
48
        fileName = (EditText) findViewById(R.id.container_name);
49
        ((Button) findViewById(R.id.save_button)).setOnClickListener(this);
50
       
51
    }
52

    
53
      
54
        public void onClick(View arg0) {
55
                if ("".equals(fileName.getText().toString())) {
56
                        showAlert("Required Fields Missing", " Container name is required.");
57
                } else {
58
                        showActivityIndicators();
59
                                new SaveFileTask().execute((Void[]) null);
60
                }
61
        }
62
        
63
        
64
    private void showAlert(String title, String message) {
65
                AlertDialog alert = new AlertDialog.Builder(this).create();
66
                alert.setTitle(title);
67
                alert.setMessage(message);
68
                alert.setButton("OK", new DialogInterface.OnClickListener() {
69
              public void onClick(DialogInterface dialog, int which) {
70
                return;
71
            } }); 
72
                alert.show();
73
                hideActivityIndicators();
74
    }
75
        
76
    private void setActivityIndicatorsVisibility(int visibility) {
77
        ProgressBar pb = (ProgressBar) findViewById(R.id.save_container_progress_bar);
78
            TextView tv = (TextView) findViewById(R.id.saving_container_label);
79
        pb.setVisibility(visibility);
80
        tv.setVisibility(visibility);
81
    }
82

    
83
    private void showActivityIndicators() {
84
            setActivityIndicatorsVisibility(View.VISIBLE);
85
    }
86
    
87
    private void hideActivityIndicators() {
88
            setActivityIndicatorsVisibility(View.INVISIBLE);
89
    }
90
    //using cloudServersException, it works for us too
91
    private CloudServersException parseCloudServersException(HttpResponse response) {
92
                CloudServersException cse = new CloudServersException();
93
                try {
94
                    BasicResponseHandler responseHandler = new BasicResponseHandler();
95
                    String body = responseHandler.handleResponse(response);
96
                    CloudServersFaultXMLParser parser = new CloudServersFaultXMLParser();
97
                    SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
98
                    XMLReader xmlReader = saxParser.getXMLReader();
99
                    xmlReader.setContentHandler(parser);
100
                    xmlReader.parse(new InputSource(new StringReader(body)));                            
101
                    cse = parser.getException();                            
102
                } catch (ClientProtocolException e) {
103
                        cse = new CloudServersException();
104
                        cse.setMessage(e.getLocalizedMessage());
105
                } catch (IOException e) {
106
                        cse = new CloudServersException();
107
                        cse.setMessage(e.getLocalizedMessage());
108
                } catch (ParserConfigurationException e) {
109
                        cse = new CloudServersException();
110
                        cse.setMessage(e.getLocalizedMessage());
111
                } catch (SAXException e) {
112
                        cse = new CloudServersException();
113
                        cse.setMessage(e.getLocalizedMessage());
114
                } catch (FactoryConfigurationError e) {
115
                        cse = new CloudServersException();
116
                        cse.setMessage(e.getLocalizedMessage());
117
                }
118
                return cse;
119
    }
120
    
121
    private class SaveFileTask extends AsyncTask<Void, Void, HttpResponse> {
122
            private CloudServersException exception;
123
            
124
            @Override
125
                protected HttpResponse doInBackground(Void... arg0) {
126
                        HttpResponse resp = null;
127
                        try {
128
                                resp = (new ContainerManager()).create(fileName.getText());
129
                        } catch (CloudServersException e) {
130
                                exception = e;
131
                        }
132
                        return resp;
133
                }
134
            
135
                @Override
136
                protected void onPostExecute(HttpResponse response) {
137
                        if (response != null) {
138
                                int statusCode = response.getStatusLine().getStatusCode();
139
                                if (statusCode == 201) {
140
                                        setResult(Activity.RESULT_OK);
141
                                        finish();
142
                                } else {
143
                                        CloudServersException cse = parseCloudServersException(response);
144
                                        if ("".equals(cse.getMessage())) {
145
                                                showAlert("Error", "There was a problem creating your container.");
146
                                        } else {
147
                                                showAlert("Error", "There was a problem creating your container: " + cse.getMessage() + " Check container name and try again");
148
                                        }
149
                                }
150
                        } else if (exception != null) {
151
                                showAlert("Error", "There was a problem creating your container: " + exception.getMessage()+" Check container name and try again");                                
152
                        }                        
153
                }
154
    }
155

    
156

    
157

    
158
        }